我應該得到一個文件並掃描信息。當我嘗試將其打印出來時,我掃描的大部分信息都會丟失或切斷。這裏是我的代碼:沒有正確掃描一切的代碼
M
111223333
Rob Low
47
Actor
1000000
Dancing
Painting
63
165
Atheist
M
123456789
Bob Mitchell
77
Driver
25000
Baseball
Cooking
72
275
None
和部分得到什麼打印出來:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct profile {
char gender;
float soc;
char name[20];
char name2[20];
int age;
char job[20];
float income;
char M_hob[20];
char m_hob[20];
int height;
int weight;
char relig[20];
} PROFILE;
int main(void)
{
int i, count;
char file[30], ssn[10];
FILE *fin;
PROFILE members[50];
printf("SSN: ");
scanf("%s", ssn);
printf("Name of file of records: ");
scanf("%s", file);
fin = fopen(file, "r");
if ((fin == NULL)) {
printf("Can't Open File");
exit(1);
}
i = 0;
while (fscanf(fin, "%c", &members[i].gender) != EOF) {
fscanf(fin, "%f", &members[i].soc);
fscanf(fin, "%s", members[i].name);
fscanf(fin, "%s", members[i].name2);
strcat(members[i].name, members[i].name2);
fscanf(fin, "%d", &members[i].age);
fscanf(fin, "%s", members[i].job);
fscanf(fin, "%f", &members[i].income);
fscanf(fin, "%s", members[i].M_hob);
fscanf(fin, "%s", members[i].m_hob);
fscanf(fin, "%d", &members[i].height);
fscanf(fin, "%d", &members[i].weight);
fscanf(fin, "%s", members[i].relig);
fscanf(fin, "%c", &members[i].space);
i++;
}
fclose(fin);
count = i;
for (i = 0; i <= count; i++) {
printf("%c\n", members[i].gender);
printf("%.0f\n", members[i].soc);
printf("%s\n", members[i].name);
printf("%d\n", members[i].age);
printf("%s\n", members[i].job);
printf("%.0f\n", members[i].income);
printf("%s\n", members[i].M_hob);
printf("%s\n", members[i].m_hob);
printf("%d\n", members[i].height);
printf("%d\n", members[i].weight);
printf("%s\n", members[i].relig);
}
return 0;
}
兩個就是我的掃描段
M
111223336
Rob
47
Actor
1000000
Dancing
Painting
63
165
Atheist
0
M
0
Bob
0
Mitchell
77
0
0
Driver
2
5000
Baseball
72
275
0
ne
正如你所看到的第一個得到完美掃描,但其餘的都是越野車。
請看看輸出並確保我在第一個和第二個記錄之間正確放置了一個空行。 – sarnold 2011-05-24 02:46:40
對於初學者來說,這會導致一個問題,因爲(i = 0; i <= count; i ++){'它應該從i = 0到i
judda
2011-05-24 02:47:31
@ judda,幫了一下,但它仍然輸出奇怪/不完整的結果 – 2011-05-24 02:54:46