【发布时间】:2019-12-04 21:25:00
【问题描述】:
我需要解析一个包含两个整数和两个字符串的字符串,它们都用逗号分隔。字符串包含导致问题的空格。格式为整数、字符串[包括空格]、字符串[包括空格]、整数。使用 gcc、c99 标准在 Linux 上工作。
我尝试过使用各种正则表达式样式的解析方法进行解析。我有解决方案,如果字符串没有空格但在涉及空格时会中断。
char *line = "5,some text, some more text with spaces, 3";
int num1, num2;
char string1[max_size];
char string2[max_size];
sscanf(line, "%d,%[^,],%[^,],%d", &num1, string1, string2, &num2);
我希望变量包含:
num1 == 5;
string1 == "some text";
string2 == "some more text with spaces";
num2 == 3;
我没有遇到编译错误或任何问题,但我遇到了问题,如果有任何空格,数据就会变成垃圾。
【问题讨论】:
-
绝对开放,但限制在我可以使用的库中。我也在尝试使用 strtok 实现,但没有运气。
-
当我尝试你的示例程序时,在重写任何东西之前,我或多或少地得到了预期的输出。
" some more text..."中有一个额外的空间,但我认为没有什么是“垃圾”。您最常遇到的问题是什么? -
所以,请温柔一点,但我在函数中使用它...该函数被解析文本文件的其他代码调用。我想我最初是导致文本文件解析不正确。
-
别担心,我不会让你失望的,我很欣赏你试图创建一个小而独立的例子。但是,如果这个小而独立的例子不能说明问题,如果问题只出现在我看不到的更大的程序中,那么我怀疑我(或这里的任何人)能够帮助你,或者……