Я написал этот код в C:
#include <stdio.h>
#include <string.h>
struct Values{
char timestamp[21];
int temperature;
};
char *readString(char out[], FILE *fp){// Reading and storing the input values, out = the string that this func returns
int ch, i;
while(EOF!=(ch=fgetc(fp)))
if(ch == '"') break;
for(i=0;EOF!=(ch=fgetc(fp));++i){
if(ch == '"') break;
out[i] = ch;
}
out[i]='\0';
return out;
}
void printValues(struct Values values[], int i){ //just a printing method, for printing the values, i = the amount of values I have
int j;
for(j=0; j<i; j++){
puts(values[j].timestamp);
}
}
int main(void){ //The beginning of the programm, what did you expect?
struct Values values[10];
FILE *file = fopen("hum1.txt", "r" );
int i=0; //the number of every stored value
if (file != NULL ){
char tempString [25];
while(*readString(tempString, file)){ //if the readStrinf outputs "" == "/0" (end of FILE)
strcpy(values[i].timestamp, tempString);
i++;
}
fclose(file);
}
printValues(values, i);
return 0;
}
Мой тестовый txt-файл работает нормально. Тестирование txt:
{"Something": "Something else", "Something else else"}
{"Hey": "Is anyone there?"}
{"Something else else else"}
Но когда я пытаюсь прочитать данные из "правильного" текстового файла, он возвращает мне ошибку сегментации
"правильный" txt файл выглядит примерно так:
{"2014-02-13T06:20:00": "93", "2014-02-13T13:50:00": "66", "2014-02-13T06:00:00": "91"}
{"2014-02-14T04:50:00": "87", "2014-02-14T09:50:00": "87", "2014-02-14T12:20:00": "81"}
С несколькими строками (в этом формате) и большим количеством данных в нем
Может ли кто-нибудь мне помочь? Я не знаю, почему это происходит,
Заранее спасибо.
Также. Я забыл упомянуть, что программа 1.читает файл с именем: hum1.txt. Затем ищет первое '' 'и до следующего' '' хранит данные между ними в массиве struct