我颳了一個網站以獲取一些用於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