Когда я скомпилировал код и запустил его, он говорит Segmentation Fault
.Ошибка сегментации в linux
Вот мой код:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int i;
char weather_value;
char weather_incoming[2000];
FILE *in;
in=fopen("home/pi/weather_project/weather_incoming.txt","r");
for(i=0;i<2000;i++)
{
fscanf(in,"%c",&weather_incoming[i]);
}
char* tagStartBegin = strstr(weather_incoming,"<pty");
char* tagStartEnd = strstr(tagStartBegin,">");
char* value = tagStartEnd+1;
char* tagEndBegin = strstr(tagStartEnd,"</pty>");
*tagEndBegin = '\0';
weather_value=*value;
printf("%c",weather_value);
fclose(in);
}
Я должен найти значение погодного из текстового файла, между <pty>
и </pty>
Парень помог мне об этом. Когда я скомпилировал его на windows (codeblocks), он работал отлично, но когда я скомпилировал его на linux (gcc), он продолжает отправлять мне Segmentation Fault
. Как я могу это исправить? я не знаю, какой-либо информации о том, что часть является неправильной, поскольку сообщение об ошибке было только Segmentation Fault
Вы должны использовать отладчик (на Linux, есть gdb). –
Есть много проблем с кодом. Файл дескриптор 'in' будет неправильным, и вы пытаетесь его прочитать. Вы уверены, что 'home' вместо'/home' ?? – Jeyaram
Очень странно читать файл char с помощью char 'fscanf()'. Я могу поспорить, что ваша ошибка связана с этим. Вместо этого используйте 'fread()' и прочитайте весь файл в одном объявлении. Думаю, это будет трюк. – oysteijo