[英]C Load data from file into struct compiles but crashes during runtime
我目前正在嘗試將文件加載到由3個字符和1個整數組成的結構中。 該程序應從數據文件中讀取並將每一行插入到該結構的元素中。 前3個屬性是該行的前3個字符,然后跳過空格並以整數形式插入下一個字符(與長度無關)。
我能夠編譯該程序,但無法運行。 經過一些測試,我注意到該程序不會僅使用fscanf()運行。 我不確定.dat文件的位置,因此我將其與exe放在同一文件夾中。
數據示例:
ABC 22
CDD 32
這是我的.c文件:
void LoadGeneticCode(char *filename, codon c[]){
FILE *file = fopen(filename, "r");
int i = 0;
while(fscanf(file, " %c%c%c %d", &c[i].b1,&c[i].b2,&c[i].b3,&c[i].a) > 0){
printf("%s \n",c[i].b1);
i++;
}
fclose(file);
}
.h文件:
typedef struct { char b1,b2,b3; int a;} codon;
void LoadGeneticCode(char *filename, codon c[64]);
%1s
表示一個字符,是的,但它也以null結束字符串。 您正在覆蓋預期緩沖區之外的內存。 %c
是您的意思。 您也不需要臨時字符變量,可以直接讀入結構字段。
同時scanf
返回成功讀取的字段數,因此您必須檢查它是否> 0(或等於4),而不是1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.