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

时间:2011-12-01 00:24:29

标签: c

如何使用\r\n在回车符(\nsscanf)上拆分字符串?

2 个答案:

答案 0 :(得分:2)

稍微修改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
}

答案 1 :(得分:1)

scanf不分割字符串,它会解析它们。如果您想阅读(并且不包括)回车符或换行符,可以使用:

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

虽然你可能最好只使用fgets然后剥离不需要的尾随字符。