我需要将字符串分成两部分,字符串的第一列是第一部分,字符串的其余部分是第二部分。第一部分需要存储在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
OR
first column is abc@xyz.com
evertyhing else is foo bar foobar
hey there
答案 0 :(得分:2)
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;
}
答案 1 :(得分:2)
下面的代码产生预期的输出:
linetest = ["my-ldap01","my-ldap02","my-ldapdc01", "my-ldapdc02"]
if line not in linetest:
Flag = True