我无法在 C 中正确读取和打印我的文件,只打印出“0”
I can't get my file to be read and printed properly in C, only prints out '0'
struct patient getPatient(FILE *fptr)
{
char fileInput[200];
int noOfEntries = 0, n;
while (!feof(fptr))
{
fscanf(fptr, "%499[^\n]*s", fileInput);
for (n = 0; n < FILENAME; n++ )
{
printf("%500c\n", fileInput);
}
}
}
这是正在读取文件的地方,我在另一个函数中打开它。
FILE *openFile(void)
{
FILE *fptr;
char filename[FILENAME];
printf("Enter filename: ");
scanf("%s", filename);
if (!(fptr = fopen(filename, "r")))
{
printf("Can't open file %s", filename);
exit(1);
}
return fptr;
}
他们都在这里被调用。
FILE *fptr = openFile();
getPatient(fptr);
打开不正确或读取不正确,我正在将其读取到结构中。
struct patient
{
char entryLine[500];
};
编辑:新代码,这个块比我想的上次更独立。
void showPatientDetails(char fileName[70])
{
char fileInput[500];
int n;
FILE *fptr;
if(!(fptr = fopen(fileName, "r")))
{
printf("\n\nUnable to open files! \n\n");
exit(1);
}
while(fgets(fileInput, sizeof fileInput, fptr))
{
fscanf(fptr, "%499[^\n]", fileInput);
printf("%500c\n", fileInput);
// for (n = 0; n < FILENAME; n++ )
// {
// printf("%500c\n", fileInput);
// }
}
}
我试过两种方法,一种是我们昨天做的,另一种是我的老师用过的。
您似乎对 %[]
以某种方式充当后续 s
的修饰符这一神奇的普遍误解感到苦恼。还真不是,是自己的转换说明符。
因此您的转换将失败,除非换行符后跟一个星号和一个 s
。
struct patient getPatient(FILE *fptr)
{
char fileInput[200];
int noOfEntries = 0, n;
while (!feof(fptr))
{
fscanf(fptr, "%499[^\n]*s", fileInput);
for (n = 0; n < FILENAME; n++ )
{
printf("%500c\n", fileInput);
}
}
}
这是正在读取文件的地方,我在另一个函数中打开它。
FILE *openFile(void)
{
FILE *fptr;
char filename[FILENAME];
printf("Enter filename: ");
scanf("%s", filename);
if (!(fptr = fopen(filename, "r")))
{
printf("Can't open file %s", filename);
exit(1);
}
return fptr;
}
他们都在这里被调用。
FILE *fptr = openFile();
getPatient(fptr);
打开不正确或读取不正确,我正在将其读取到结构中。
struct patient
{
char entryLine[500];
};
编辑:新代码,这个块比我想的上次更独立。
void showPatientDetails(char fileName[70])
{
char fileInput[500];
int n;
FILE *fptr;
if(!(fptr = fopen(fileName, "r")))
{
printf("\n\nUnable to open files! \n\n");
exit(1);
}
while(fgets(fileInput, sizeof fileInput, fptr))
{
fscanf(fptr, "%499[^\n]", fileInput);
printf("%500c\n", fileInput);
// for (n = 0; n < FILENAME; n++ )
// {
// printf("%500c\n", fileInput);
// }
}
}
我试过两种方法,一种是我们昨天做的,另一种是我的老师用过的。
您似乎对 %[]
以某种方式充当后续 s
的修饰符这一神奇的普遍误解感到苦恼。还真不是,是自己的转换说明符。
因此您的转换将失败,除非换行符后跟一个星号和一个 s
。