我試圖使此代碼爲了從文件中讀取希臘字母並打印使用fscanf發聲的英文字母。問題是我不斷收到分段錯誤。我錯過了什麼?使用fscanf分段錯誤 - 不分配內存問題
#include <stdio.h>
int main()
{
char s[100];
int i;
FILE * myfile;
myfile = fopen("/home/angelos/Downloads/λεξικο2.txt", "r");
while(fscanf(myfile, "%s", s) == 1)
{
for (i=0 ; i<100 ; i++)
{
if (s[i] == 'Α')
{ printf("A") ; }
else
if (s[i] == 'Β')
{ printf("V") ; }
}
}
步驟1:'的fscanf(MYFILE, 「%s」 時,S)' - >'的fscanf(MYFILE, 「%99S」,S)',以防止緩存器溢出。 – chux
不要訪問傳遞讀取的數據。 (for =(i = 0; i <100; i ++)' - >'for(i = 0; s [i]; i ++)'。需要查看哪些輸入用於診斷分段故障。同時測試'myfile == NULL'。 – chux
檢查'fopen'的返回值。 – BLUEPIXY