2012-03-03 98 views

回答

4

如果我正确理解你的问题,你可以使用一个character class

fscanf(list_in, "%[^ \r\n\t]", keywords); 

当然,避免缓冲区溢出(f)scanf时,应始终设置最大长度,如下所示:

char keywords[81]; 

fscanf(list_in, "%80[^ \r\n\t]", keywords); 

编辑:如果你想包括字符串中的尾随空白字符,你可以使用%c指令分别读入一个char变量,无论是处理它的方式或追加到字符串:

char keywords[82], space; 
int n; 

fscanf(list_in, "%80[^ \r\n\t]%c", keywords, &space); 

n = strlen(keywords); 
keywords[n] = space; 
keywords[n+1] = '\0'; 

(当然,要格外小心,你也应该检查的fscanf返回值,以确保你没有,例如,打的输入文件的末尾。)

+0

感谢您抽出一looka因此,如果我理解正确,你的代码将忽略空格,换行符,等标签? 然而,我应该更加精确!我要求读入trhe文件的字是“int”,而不是“int”,fscanf似乎在任何情况下都是成功的,也许我应该手动检查字符? – 2012-03-03 22:19:04

+0

你的意思是你想要_include_字符串中的终止空白字符,而不是_excluding_它? – 2012-03-03 22:24:20

+0

是的,正是我期待的!我试图upvote你,但显然我没有足够的代表!尽管干杯! – 2012-03-03 22:37:37

相关问题