我需要将字符串分成两部分,字符串的第一列是第一部分,字符串的其余部分是第二部分。第一部分需要存储在 中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;
}
Run Code Online (Sandbox Code Playgroud)
期望的结果:
first column is abc@xyz.com
evertyhing else is foo bar foobar\nhey there
Run Code Online (Sandbox Code Playgroud)
或者
first column is abc@xyz.com
evertyhing else is foo bar foobar
hey there
Run Code Online (Sandbox Code Playgroud)
sscanf支持%n格式说明符返回消耗的字符数。您可以使用它来确定前缀消耗了多长时间sscanf。
以下代码设置rest_str为指向“字符串的其余部分”:
int main ()
{
char sentence []="abc@xyz.com foo bar foobar\nhey there";
char first_str [200];
char *rest_str;
int n = 0;
sscanf (sentence,"%s %n",first_str,&n);
rest_str = sentence + n;
printf ("first column is %s\nevertyhing else is %s\n",first_str,rest_str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)