Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用sscanf在回车时拆分字符串?_C - Fatal编程技术网

如何使用sscanf在回车时拆分字符串?

如何使用sscanf在回车时拆分字符串?,c,C,如何使用sscanf拆分回车符(\r\n或仅\n)上的字符串 scanf不会分割字符串,而是解析字符串。如果要读取最多(不包括)回车符或换行符,可以使用: char buffer[100]; scanf("%99[^\r\n]", buffer); 尽管您最好只使用FGET,然后去掉不需要的尾随字符。稍微修改Chris的答案,以确定第二部分何时开始: const char *str = ... // = source string while (str[0]) { char buffer

如何使用
sscanf
拆分回车符(
\r\n
或仅
\n
)上的字符串

scanf
不会分割字符串,而是解析字符串。如果要读取最多(不包括)回车符或换行符,可以使用:

char buffer[100];
scanf("%99[^\r\n]", buffer);

尽管您最好只使用FGET,然后去掉不需要的尾随字符。

稍微修改Chris的答案,以确定第二部分何时开始:

const char *str = ... // = source string
while (str[0]) {
   char buffer[100];
   int n;
   sscanf(str, " %99[^\r\n]%n", buffer, &n); // note space, to skip white space
   str += n; // advance to next \n or \r, or to end (nul), or to 100th char
   // ... process buffer
}
尽管我更喜欢使用
strtok()
strpbrk()
。例如:

char *str = ... // = source string--not constant, as it gets destroyed
char *out = strtok(str, "\r\n");
while (out) {
   // ... process 'out'
   out = strtok(0, "\r\n"); // advance to next part
}

你能给我看一些使用strok的例子吗?上帝保佑你!我为此挣扎了两个小时!这真是一个不可思议的神秘解决方案!