我尝试使用带有%[]
说明符的fscanf()来读取文本文件。
像这样的文件:
qwety, qwe<
qwety,qwety.... qwety
所以,我需要只读取没有任何分隔符的文本,如逗号,空格,点。 寻找答案说的是这样的,但它没有正常工作:成功只读取第一个单词并进入永无止境的循环
char buff[1024];
while(!feof){
fscanf(file, "%[a-z]", buff);
puts(buff);
}
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
问题是,在将第一个单词读入buff
后,文件中的下一个字符(输入缓冲区)不是a-z
,因此对fscanf
的所有后续调用都会失败匹配失败。要解决此问题,请反转字符类并使用赋值抑制运算符('*'
)来读取和丢弃任何非a-z
个字符,例如
while (fscanf(file, "%1023[a-z]%*[^a-z]", buff) == 1)
puts(buff);