以下内容只会在下一个空格出现之前读取,不包括
fscanf (list_in, "%s", keywords);
答案 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
的返回值,以确保没有,例如,点击输入文件的末尾。)