У меня есть этот код, который извлекает строки между двумя указанными строками, конкретно <title>
и </title>
. Но когда я запускаю программу, я получаю Segmentation Fault: 11
Любые решения?Ошибка сегментации в синтаксическом коде
int main(){
struct stat st;
stat("test.txt", &st);
int size = st.st_size;
printf("%d\n", size);
FILE *f = fopen("test.txt", "rb");
char *bytes = (char*)malloc(size);
fread(bytes,size,1,f);
fclose(f);
parser(bytes);
return 0;
}
void parser(char *bytes){
struct stat st;
stat(bytes, &st);
int size = st.st_size;
char *output = (char*)malloc(size);
char *ptr = strstr(bytes, "<title>");
char *ptr2 = strstr(ptr, "</title>");
if(ptr2){
strncpy(output, ptr+7, (ptr2 - (ptr+7)));
puts(output);
free(output);
parser(ptr2);
}
free(bytes);
free(output);
}
Вы тестируете размер 'yeah.txt', но затем открываете 'test.txt'? – narb
Потому что вы «статируете» содержимое файла вместо имени файла в 'parser'? Ваш char buffer 'bytes', а также' output' не заканчиваются нулем, что требуется для функций в '', например. 'Strstr'. –
@narb Извините, это должно быть «test.txt» вместо «yeah.txt» –