Проблема: когда я пытался скомпилировать и запустить файл, возникла проблема с сегментацией. Когда я передал файл своему другу (он использует ту же версию Ubuntu), сервер сможет работать. Мне интересно почему?
Ниже будет мой код для всей страницы.
Лично я чувствую, что с этим нет проблем, но я просто вставлю его для справки, если кто-нибудь попросит об этом.
void readNStoreData ()
{
char words[MAX];
char *wholeLine;
char* delimiter = ",";
int cflag = 0;
int x, count = 0;
char input;
FILE *countryFile;
countryFile = fopen("Countries.txt","r");
if (!countryFile) {
exit(EXIT_FAILURE);
}
while (fgets (words, MAX - 1, countryFile) != NULL)
{
//atof to convert string to double
//split a single line into individual tokens indicating , as the delimeter
//afterwards store them into array
wholeLine = strtok (words, delimiter);
strcpy (records [count].TDL, wholeLine);
wholeLine = strtok (NULL, ",");
strcpy (records [count].cName, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].FIPS104, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].ISO2, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].ISO3, wholeLine);
wholeLine = strtok (NULL, delimiter);
records [count].ISO = atof(wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].cCapital, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].cRegion, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].cCurrencyName, wholeLine);
wholeLine = strtok (NULL, delimiter);
strcpy (records [count].cCurrencyCode, wholeLine);
wholeLine = strtok (NULL, delimiter);
records [count].cPopulation = atof(wholeLine);
count++;
}
fclose(countryFile); //close file
}
Надеюсь, кто-нибудь сможет где-нибудь заметить ошибку.
Спасибо заранее тем, кто помог!
запустите GDB, и ошибка на самом деле в этой строке.
он находится в этой функции.
l(gdb) frame 1
l#1 0x08048936 in readNStoreData () at testserver.c:61
61 strcpy (records [count].cName, wholeLine);