有没有办法使用fscanf读取以下空格?

时间:2012-03-03 21:16:27

标签: c scanf

以下内容只会在下一个空格出现之前读取,不包括

fscanf (list_in, "%s", keywords);

1 个答案:

答案 0 :(得分:4)

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

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

当然,为了避免缓冲区溢出,在使用(f)scanf读取字符串时应始终设置最大长度,如:

char keywords[81];

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

编辑:如果你想在字符串中包含尾随空白字符,你可以使用char指令将它分别读入%c变量,并且任一过程它那样或将其附加到字符串:

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的返回值,以确保没有,例如,点击输入文件的末尾。)