我试图使此代码为了从文件中读取希腊字母并打印使用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