簡體   English   中英

C將數據從文件加載到結構編譯中,但在運行時崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM