що се отнася до C, аз не съм нуб - по-скоро съм пълен и пълен глупав невеж нуб! Опитвам се да напиша програма за анализиране на прости текстови файлове и бих искал да я направя възможно най-обща (защо използвам getline). добре, ето моят код:
//afile.c
#include <stdio.h>
#include <stdlib.h>
main( )
{FILE *fp1;
char *filename;
char **line;
size_t *sz;
int s;
filename = "n";
if ((fp1 = fopen(filename,"r")) == NULL ){printf("error...");return 1;}
do {
s = getline(&line,sz,fp1);
if (s != -1)
printf(" %s \n",line);//<-- %s seems to be wrong! %*s removes the gcc warning
} while (s != EOF);
fclose(fp1);}
Почти съм сигурен, че има някакъв проблем с разпределението на указателя, но наистина не мога да разбера къде е той. Открих, че замяната на %s с %s кара предупреждението на компилатора да изчезне, но това води до безкрайно много \t(tabs), записани в терминала. Между другото, съобщението за грешка, което получавам е: stack smashing detected *: ./afile terminated Segmentation fault
line = NULL
- person wildplasser   schedule 28.01.2012