我有一个问题,使用fscanf函数:( 我需要从文件中提取一系列字符,例如" a b c d" (字符用空格分隔)。
但它不起作用:( 我怎么读它们? (
我试图打印它,结果不正确。我认为,这是因为空间。我真的不知道它为什么不起作用。
请告诉我,阵列访问有什么问题?
答案 0 :(得分:2)
该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格,换行符和制表符 - 请参阅isspace)。格式字符串中的单个空格验证从流中提取的任何数量的空白字符(包括无)。
然后,如果你的代码是:
while ( fscanf(fin,"%c", &array[i++]) == 1 );
,您的文件是这样的:
h e l l o
您的array
将是:
[h][ ][e][ ][l][ ][l][ ][o]
如果您将代码更改为:
while ( fscanf(fin," %c", &array[i++]) == 1 );
您的array
将使用相同的文件:
[h][e][l][l][o]
无论如何,代码都有效:它取决于你想要的东西。
无论如何,您应该考虑开始使用fgets()
+ sscanf()
,例如:
char buff[NUM];
while ( fgets(buff, sizeof buff, fin) )
sscanf(buff,"%c", &array[i++]);
使用单个fscanf()
,缺少缓冲区管理可能会导致缓冲区溢出问题。
答案 1 :(得分:1)
在%c =>
之前添加空格while (fscanf(pFile," %c", &alpArr[i++]) == 1);
它应该有用。