gpt4 book ai didi

c - 从C语言中读取带有空格的文件中的字符串

转载 作者:行者123 更新时间:2023-11-30 16:09:54 25 4
gpt4 key购买 nike

我正在用 c 语言制作测验程序,我的程序的一部分是从文本文件中获取问题,计算并打印它们。但是,当我想在每次看到空格时打印或计数它们时,它会跳到其他变量。我该如何解决?

这是我的txt文件

What is the Capital of France? Paris Roma London Istanbul Belgrad

以及它在我的程序中的表现。

What
a)is
b)the
c)capital
d)of
e)France

这就是我提出问题的方式

    FILE *fp = fopen("fp.txt", "a+");
gets(questions[n].question_part);
gets(questions[n].a);
gets(questions[n].b);
gets(questions[n].c);
gets(questions[n].d);
gets(questions[n].e);
questions[n].answer=getch();
fprintf(fp, "%s %s %s %s %s %s %c", questions[n].question_part, questions[n].a, questions[n].b, questions[n].c, questions[n].d, questions[n].e, questions[n].answer);
n++;

我是怎么算的

    int x=0;
while(!feof(fp)){
fscanf(fp, "%s %s %s %s %s %s %c", questions[x].question_part, questions[x].a, questions[x].b, questions[x].c, questions[x].d, questions[x].e, questions[x].answer);
x++;}
n=x;

以及我如何打印

    FILE *fp;           
fp = fopen("fp.txt", "r");
int y;
for(y=0;y<n;y++)
{
printf("\nQuestion number %d:\n",y+1);
printf("Question: %s\n",questions[y].question_part);
printf("a)%s\n",questions[y].a);
printf("b)%s\n",questions[y].b);
printf("c)%s\n",questions[y].c);
printf("d)%s\n",questions[y].d);
printf("e)%s\n",questions[y].e);
printf("Answer: %c\n",questions[y].answer);
}

最佳答案

问题是 fscanf%s 格式读取空格分隔字符串。

我建议您通过将问题和选项写在不同的行上来解决这个问题。例如通过

fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%c\n", questions[n].question_part, questions[n].a, questions[n].b, questions[n].c, questions[n].d, questions[n].e, questions[n].answer);

现在您可以使用 fgets 阅读每一行.

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

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