Я получаю ошибку сегментации в конце readFirst ().Если я проверяю оператор печати для проверки, иногда оператор печати не появляется.Код компилируется, но когда я его запускаю, он просто печатает файл, как и положено, а затем выдает ошибку в операторе return.Я понятия не имею, в чем проблема, и не знаю, как ее исправить.
int readFirst(FILE *file){
int c;
int linecount = 0;
int newLineCounter = 0;
while ((c = fgetc(file)) != EOF)
{
printf("%c", c);
if(c == '\n'){
newLineCounter++;
}
linecount++;
}
file = file + '\0';
printf("check 3");
//printf("\n");
printf("%i",newLineCounter);
return newLineCounter;
}
int main (int argc, char **argv)
{
char *infile = NULL;
char *outfile = NULL;
FILE *file = stdin;
FILE *text = stdout;
char ch[200];
int iFlag = 0;
int oFlag = 0;
char *iValue = NULL;
int index;
int i;
opterr = 0;
while ((i = getopt (argc, argv, "i:o:")) != -1) {
switch (i)
{
case 'i':
iFlag = 1;
infile = optarg;
break;
case 'o':
oFlag = 1;
outfile = optarg;
break;
case '?':
if(optopt == 'i') {
fprintf(stderr, "Missing mandatory input option\n");
} else if (optopt == 'o') {
fprintf(stderr, "Missing mandatory input option\n");
} else {
fprintf(stderr, "Invalid option received\n");
}
break;
}
}
if (infile){
file = fopen(infile, "r");
if (file == NULL){
//printf("cannot open input file \n");
exit(1);
}
//fprintf(file,"%s", infile);
//fprintf(file,"%s", infile);
}
printf("check 1");
int lines;
lines = readFirst(file);
printf("check 2");
printf("%i", lines);
char labels [lines][6];
int c;
int lineCount = 0;
int curCol = 0;
int flag = 0;
for(lineCount = 0; i < lines; lineCount++){
for(curCol = 0; i < 6; curCol++){
labels[lineCount][curCol] = ' ';
}
}
while(lineCount < lines && (c = fgetc(file)) != EOF){
if(flag != 0){
if(c != ' ' || c != '\t'){
labels[lineCount][curCol] = c;
curCol++;
}else {
curCol = 0;
flag = 0;
}
}
if(c == '\n'){
flag = 1;
lineCount++;
}
}
printf("%i", lineCount);
for(lineCount = 0; i < lines; lineCount++){
for(curCol = 0; i < 6; curCol++){
printf("%c",labels[lineCount][curCol]);
}
}
}