我刮了一个网站以获取一些用于c作业的mcqs。我将数据写入一个纯文本文件,将每个条目与空字符分开。 的模式是: Question with choices NULL Answer NULL Question...
在某些字符串的末尾获取垃圾值
以下是该文件的示例。红点是'\0'
字符:
Here是获取完整文件的链接。
代码在C阅读本文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Question{
char question[1000];
char answer;
};
int main(){
struct Question questions[100];
FILE *fp;
char buffer[1000],choice;
int ch,i=0,c=1,k=0,score=0;
fp=fopen("quiz_questions.txt","r");
ch = 1;
while (ch != EOF)
{
ch = getc(fp);
buffer[i]=ch;
i++;
if(ch=='\0'){
buffer[i]='\0';
c++;
i=0;
continue;
}
if(c%2){ //question
strcpy(questions[k].question,buffer);
}
else{ //answer
questions[k].answer=buffer[0];
k++;
}
}
for(i=0;i<35;i++){
printf("\nQuestion:\n%s\nAnswer: %c\n",questions[i].question,questions[i].answer);
}
return 0;
}
OUTPUT:
我缺少什么?请帮助。看起来缓冲区并没有正确地终止,并且保留了最后一次分配的字符。
PS:有没有更好的方法来从c中使用这些数据?刮通过python完成。
编辑:我现在认识到写一个单独的答案文件会好得多。愚蠢的我。
的'''缓冲液[I] ='\ 0''''在绝望加入。 – thekindlyone