Когда я запускаю код, я получал ошибку сегментации (ядро дампа). После использования какой-либо инструкции printf я обнаружил, что в части strcmp есть ошибка, может быть, это потому, что сравнение символа с строкой? Как это исправить?Ошибка сегментации с использованием strcmp в C?
// this function checks if the file contains the *string
bool checkIfMatch(char *string, FILE *file) {
while (true) {
char buff[1024];
fgets(buff, sizeof buff, file);
if (buff == NULL)
break;
char *substring=strstr(buff, string);
if ((strcmp(buff, substring)) == 0)
return true;
}
return false;
}
использовать strncmp() вместо strcmp() i.e strlen (подстрока). –
Это: 'if (buff == NULL) break;' will * never * вызывает разрыв; Используйте 'if (fgets (buff, sizeof buff, file) == NULL) break;' Вы также никогда не проверяете результаты своей 'strstr' перед их использованием в' strcmp'. – WhozCraig
и 'strcmp' и' strstr' достаточно только одного или другого дубликата. – BLUEPIXY