如何使用\r\n
在回车符(\n
或sscanf
)上拆分字符串?
答案 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然后剥离不需要的尾随字符。