gpt4 book ai didi

c - 使用 sscanf 从行读取,包括空格,中断其他字符

转载 作者:太空狗 更新时间:2023-10-29 15:38:47 26 4
gpt4 key购买 nike

我很抱歉标题草率,但我不知道如何正确地格式化我的问题。我正在尝试读取 .txt,其中每一行都包含填充结构所需的信息。首先,我使用 fgets 读取行,然后我打算使用 sscanf 读取各个部分。现在这里是我卡住的地方:通常 sscanf 会在空格处断开部分,但我需要包含空格。我知道 sscanf 允许忽略空格,但棘手的部分是我需要一些其他任意字符来分隔各部分。例如,我必须打破这一行

Carl Sagan~Contact~scifi~1997

分为 Author,Name,Genre,year 部分。您可以看到我需要 Carl Sagan 中的空格,但我需要函数来断开波浪号字符上的字符串。感谢任何帮助

最佳答案

如果您的输入由 ~ 或任何特定字符分隔:使用这个:

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;
}

关于c - 使用 sscanf 从行读取,包括空格,中断其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18000742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com