2011-03-24 73 views
0

啊,謝謝!說得通。剛剛作出MAX_COMMAND_LENGTH + 1的命令。fscanf內循環

我想使用fscanf在一個循環中讀取同一個文件2次不同的時間,但我得到一個seg故障。這個想法是,文件將被格式化,以便它在每行的開始處有一個命令,隨後是該命令的參數。

char* command; //Changed to char command[MAX_COMMAND_LENGTH + 1] 

    while(fscanf(file, "%s", command) == 1) 
    { 
    if (strcmp("CMD1", command) == 0) 
    {  
     int index, exp, coeff; 
     fscanf(file, "%d %d %d", &index, &exp, &coeff); 
    } 
    else if (strcmp("CMD2", command) == 0) 
    { 
     int num; 
     fscanf(file, "%d", &num); 
    } 
} 
+0

爲什麼你通過文件讀兩次? – 2011-03-24 01:36:56

回答

3

您需要爲command分配內存。例如:

command = (char *)malloc(1024 * sizeof(char)); 

將爲1024個字符分配足夠的內存。

當你完成它時,請記住free(command)

0

您需要分配一些存儲並將其存儲在「命令」中。您正在要求fscanf通過未初始化的指針進行寫入。

0

現在你只需要一個指針。您需要分配一些空間來容納您閱讀的字符串:

char command[256]; 

if (fscanf(file "%256s", command)==1) 
    // ... 
0

您應該分配一個緩衝區來讀取該命令。目前command未初始化,它指向總和無效地址。所以要麼你「malloc()」命令的內存或作爲數組聲明命令(char command[whateversizeyouneed]