读书人

fscanf函数调用求解解决方法

发布时间: 2012-03-26 15:46:55 作者: rapoo

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;可以判断是否读到结束符为止

读书人网 >C语言

热点推荐