gpt4 book ai didi

c - 关于从 C 语言文件中读取字符串

转载 作者:行者123 更新时间:2023-11-30 19:26:56 24 4
gpt4 key购买 nike

我必须读取一个已定义模式的文件:它总是有一个“字母(单个字符)数字数字数字字符串”例如: A 20 22 2340 Hello World 所以我试图将每件事放在我的列表中的一个单独的项目中。

我知道如何获取第一个字符和 3 个数字并将其放入新变量中,但我不知道如何仅获取最终字符串。如果我使用 fgets,它将获取所有行,如果我使用 fscanf,它将获取第一个“单词”,但在空格之后不会获取任何内容。如何只读取字符串并将其存储到新变量中?

    int a, b, c, x, k = 0;
FILE *file;
file = fopen("Test.txt", "r");
while (fgets(buffer, 100, file) != NULL){
sscanf(buffer, "%c %i %i %i ", &a, &b, &c, &x);
Events.Key = k;
Events.Event = a;
Events.Day = b;
Events.Month = c;
Events.Year = x;
Insertion(Events, Data); //call my function to insert in the list
k++;
}

在这段代码中,我可以从(我之前的示例)A 20 22 2340 获取值,但是,如果我在 sscanf 中放入另一个 %s 和一个字符串,它只会得到“HELLO”,并且如果我使用fgets,它将获得整行。我怎样才能得到整个字符串,包括空格?谢谢

最佳答案

您可以使用字符串集说明符%[],它会在您指定的位置停止扫描。请注意,fgets() 保留了尾随换行符,因此可以方便地停在那里并将其过滤掉。

char name[50];
if(sscanf(buffer, "%c %i %i %i %49[^\n]", &a, &b, &c, &x, name) != 5)
{
// handle error
}
printf("%s\n", name);

请注意注释中 %c 的类型错误。

关于c - 关于从 C 语言文件中读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56417279/

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