Я пытаюсь прочитать первую строку текстового файла, а затем пропустить его с помощью fgets, но это дает мне ошибку seg, может кто-нибудь мне помочь? Он работал до того, как я добавил fgets, поэтому кажется, что проблема связана с fgets.Ошибка сегментации в C при использовании fgets и fscanf
Код
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int N
const int STACK_SIZE=65536;
int col=0;
int i;
int j;
FILE *file1;
int s;
int row=0;
int prev='t';
char m[1024];
if(argc != 3)
{
fprintf(stderr, "Usage: %s <Executable> <Input file> <Threads>\n", argv[0]);
exit(1);
}
file1=fopen(argv[1],"r");
if(file1==NULL) //check to see if file exists
{
fprintf(stderr, "Cannot open %s\n", argv[1]);
exit(1);
}
stack=malloc(STACK_SIZE);
if(stack==NULL)
{
perror("malloc");
exit(1);
}
if(atoi(argv[2]) == 0)
{
fprintf(stderr,"Threads has to be a number.\n");
exit(1);
}
fscanf(file1,"%d",&N);
rewind(file1);
fgets(m,sizeof(m),file1);
while((s=fgetc(file1)) != EOF)
{
if(s == ' ')
{
prev='a';
continue;
}
if(s == '\n' && prev != '\n')
{
row++;
if(col != N)
{
fprintf(stderr, "File %s has incorrect columns.\n", argv[1]);
exit(1);
}
col=0;
prev='a';
}
if(s != ' ' && s != '\n')
{
col++;
prev='a';
}
}
if(row != N)
{
fprintf(stderr,"File %s has incorrect rows.\n", argv[1]);
exit(0);
}
rewind(file1);
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fscanf(file1,"%d",&A[i][j]);
}
}
fclose(file1);
}
}
EDIT 1: Fixed. Установка кода была единственной проблемой.
Ваш * настоящий * код проверяет, что 'file1' для NULL проверяет файл, открытый до отправки его в' fscanf' или 'fgets', * right * ?? «Успение является матерью всех ...» – WhozCraig
@WhozCraig да, я проверил его в своем реальном коде –
Затем опубликуйте свой «настоящий» код, включая список '# include' и компилируемый' main() 'и комментарий - отметьте точную строку, где в вашем отладчике сообщается о сбое seg. Также validate 'arg [1]' на самом деле является фактическим нулевым указателем строки и что 'argc' не менее ** 2 **. – WhozCraig