【发布时间】:2019-05-14 19:22:44
【问题描述】:
我需要将字符串分成两部分,字符串的第一列是第一部分,字符串的其余部分是第二部分。第一部分需要存储在first_str,第二部分需要存储在rest_str。
我使用sscanf 来实现结果,当sentence[] 不包含任何文字\n 时,我设法通过以下示例获得所需的输出。
简而言之,我需要知道格式说明符直到输入字符串的末尾。直到现在我能够让它工作直到看到\n,但不能再使用它了。有人可以帮助阅读直到字符串结束而不是直到看到\n。
这里是按比例缩小的例子:
#include <stdio.h>
int main ()
{
char sentence []="abc@xyz.com foo bar foobar\nhey there";
char first_str [200];
char rest_str [200];
//sscanf (sentence,"%s %99[^\0]",first_str,rest_str);
sscanf (sentence,"%s %99[^\n]",first_str,rest_str);
printf ("first column is %s\nevertyhing else is %s\n",first_str,rest_str);
return 0;
}
想要的结果:
first column is abc@xyz.com
evertyhing else is foo bar foobar\nhey there
或
first column is abc@xyz.com
evertyhing else is foo bar foobar
hey there
【问题讨论】:
-
我不会为此使用
sscanf。麻烦多于值得。 -
@monk 为什么使用 C 进行文本处理?
-
@melpomene 这是套接字程序的一部分,输入是键值,键是一个词,而值是多个词。所以我需要在一个变量中分开键并在另一个变量中作为值。
-
我正在使用 C 语言的一个模块,这个变化只是其中的一小部分。
-
你可能会用
%n%199c%n做一些可怕的事情。