Я пытаюсь определить функцию, которая принимает файл указатель файла, который уже был открыт и указатель на структуру типа String, которые я определил в качестве таковых:Как определить ошибку сегментации?
typedef struct string {
char* char_arr;
int capacity;
int size;
} String;
Это должно возвращать 1, если функция могла читать из файла и помещать первое слово в строку, а 0 - нет. Однако, когда я его запускал, я получаю сообщение об ошибке сегментации. Я читал, что это связано с неправильным использованием указателя, но мне трудно найти, где это произошло.
int string_extraction(FILE* pFile, String* pString){
char* c_string;
int i;
char c;
fscanf(pFile, " %c", &c);
for(i=0; !isspace(c) && c != EOF; i++){
c_string[i] = c;
c = fgetc(pFile);
}
ungetc(c, pFile);
pString = (String*)malloc(sizeof(String));
if (pString != NULL) {
pString->size = i;
pString->capacity = i+1;
pString->char_arr = (char*)malloc(sizeof(char) * (pString->capacity));
if (pString->char_arr == NULL) {
free(pString);
pString = NULL;
} else pString->char_arr = c_string;
}
if(pString == NULL)
return 0;
return 1;
}
Возможно, вы захотите прочитать следующее: http://c-faq.com/stdio/getcharc.html - Google, используемые функции stdio, и посмотрите их подписи, убедитесь, что вы передали правильный параметр типа и проверьте возвращаемые значения. – Adam