使用fscanf从文件中读取字符

时间:2014-01-20 20:03:50

标签: c++ c file char scanf

我有一个问题,使用fscanf函数:( 我需要从文件中提取一系列字符,例如" a b c d" (字符用空格分隔)。

但它不起作用:( 我怎么读它们? (

我试图打印它,结果不正确。我认为,这是因为空间。我真的不知道它为什么不起作用。

请告诉我,阵列访问有什么问题?

2 个答案:

答案 0 :(得分:2)

来自cplusplus.com

  

该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格,换行符和制表符 - 请参阅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); 

它应该有用。