对于这个草率的标题我很抱歉,但我不知道如何正确地格式化我的问题.我正在尝试读取.txt,其中每行都有填充结构所需的信息.首先,我使用fgets读取该行,然后我将使用sscanf来读取各个部分.现在这里是我被困住的地方:通常sscanf会在空格上中断部分,但我需要包含空格.我知道sscanf允许忽略空格,但棘手的部分是我需要一些其他任意字符来分隔部分.例如,我必须打破界限
Carl Sagan~Contact~scifi~1997
作者,姓名,流派,年份的部分.你可以看到我需要卡尔萨根的空间,但我需要这个功能来打破波浪号上的字符串.任何帮助表示赞赏
最佳答案 如果您的输入由〜或任何特定字符分隔:
用这个:
sscanf(s, "%[^~]", name);
[^是转换类型,匹配除列出的字符以外的所有字符,以]结尾
以下是用于测试它的示例program:
#include <stdio.h>
int main(int argv, char **argc)
{
char *s = "Carl Sagan~Contact~scifi~1997";
char name[100], contact[100], genre[100];
int yr;
sscanf(s, "%99[^~]~%99[^~]~%99[^~]~%d", name, contact, genre, &yr);
printf("%s\n%s\n%s\n%d\n", name, contact, genre, yr);
return 0;
}