如何使用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的例子吗?上帝保佑你!我为此挣扎了两个小时!这真是一个不可思议的神秘解决方案!