fscanf读入空格的方法!要是不行可以给我建议个方案

int xx(word w[])
{
FILE *fp;
int i;
if((fp = fopen("C:\\input.txt","rb+"))==NULL)//以读写方式打开
{
printf("没有找到文件!\n");
exit(0);
}
for (i=0;!feof(fp);i++)
{
fscanf(fp," %c",&w[i].ID);
}
fclose (fp);
return i-1;
}
从文本读入数据到W[I]结构体中,然后逐个词法分析,遇到空格停止,可是读入数据中不能读入空格!!!求大神解救,fgets函数不懂用,给个例子也行

  1、fscanf用于读取字符串数据流,遇到空白字符(空格' '; 制表符'\t'; 新行符'\n')就停止,若要读取完整的一行数据,可以使用格式控制("%[^\n]%*c"),或者使用行读取函数getline)。
  2、格式控制说明:%[ ]表示读取指定字符集的文本,例如%[0-9]表示仅读取数字,遇到非数字字符就停止;
  3、%[a-zA-Z]表示读取字符,遇到非字母字符就停止)。
  第一个字符是'^',表示反向读取,读取指定字符集以外的文本,遇到指定字符集就停止。
  4、*表示忽略读取的字符,就是说读取指定的字符但不保存到变量中。
  5、%[^\n]表示读取'\n'之外的所有字符;之后的%*c表示忽略读取的'\n',就是说读取'\n'但不保存。
  6、%*[^\n]%*c表示跳过一行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
fscanf(fp," %c",&w[i].ID);中把" %c"的%前的空格去掉,它就是要跳过空格的意思。没有这个空格,就可以连空格一一读进来了。本回答被提问者和网友采纳
第2个回答  2014-04-13
对于读取文件,一般建议一次读取文件所有内容,保存到一个字符串中,然后在分析字符串,不仅效率高了,你也不会遇到不能读取空格的问题了