fscanf函数调用求解
要阅读三个英文单词 三个英文单词长度相等 每个单词占一行 单词最大限度是12个字母 然后需要利用数组以及 fscanf函数调用实现
char read_english(char sequence[])
{ char x;
int i;
FILE *fp;
fp=fopen("english.dat","r");
for (i=0; i<12; i++)
{fscanf(fp, "%c", &x);
if (x=='\n') break;
else sequence[i]=x;
}
return i;
}
int main()
{
int n=0;
int i;
char sequence1[12]={};
char sequence2[12]={};
char sequence3[12]={};
n=read_english(sequence1);
read_english(sequence2);
read_english(sequence3);
for (i=0; i<n; i++)
printf ("%c", sequence1[i]);
printf("\n");
for (i=0; i<n; i++)
printf ("%c", sequence2[i]);
printf("\n");
for (i=0; i<n; i++)
printf ("%c", sequence3[i]);
printf("\n");
return 0;}
文档里的三个单词比如说是
cat
dog
lab
为什么以上代码运行下来 printf出来的全是cat 如何修改?求解 T T
[解决办法]
#include <stdio.h>
char read_english(char sequence[],FILE* fp)
{ char x;
int i;
for (i=0; i<12; i++)
{fscanf(fp, "%c", &x);
if (x=='\n') break;
else sequence[i]=x;
}
return i;
}
int main()
{
int n=0;
int i;
char sequence1[12]={0};
char sequence2[12]={0};
char sequence3[12]={0};
FILE *fp;
fp=fopen("d:\\english.dat","r");
n=read_english(sequence1,fp);
read_english(sequence2,fp);
read_english(sequence3,fp);
for (i=0; i<n; i++)
printf ("%c", sequence1[i]);
printf("\n");
for (i=0; i<n; i++)
printf ("%c", sequence2[i]);
printf("\n");
for (i=0; i<n; i++)
printf ("%c", sequence3[i]);
printf("\n");
return 0;}
[解决办法]
文件读取多少是由自己控制的,一个文件是有结束标志符,eof;可以判断是否读到结束符为止