Я пытаюсь прочитать список строк из текстового файла и поместить его в массив с n словами. Если вместо всех строк текста мне нужно только первые два, я бы сделал свой массив размером 2 и установил n = 2. Однако, когда я передаю количество слов в качестве аргумента, я получаю ошибку сегментации, если n не равно количеству слов в списке и весь список будет распечатан. Как я могу контролировать, сколько слов будет храниться в моем массиве при отслеживании следующей строки в списке?Как получить строки из текстового файла в массив в C
Мой текстовый файл выглядит следующим образом: AH12M8 N \ п AD34FU O \ п APD83H O \ п LKFU29 N \ п
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char * argv[])
{
FILE *myfile;
myfile = fopen("Test.txt", "r");
char *numWords;
long n = strtol(argv[1], &numWords, 10);
if(argc != 2)
{
printf("Too Few Arguments");
}
else
{
char arr[n][100];
int i = 0;
while(fgets(arr[i],sizeof(arr),myfile)!=NULL)
{
arr[i][strlen(arr[i])-1] = '\0';
i++;
}
int total = i;
for(i = 0; i < total; ++i)
{
printf("%s\n", arr[i]);
}
fclose(myfile);
}
return 0;
}
Одна проблема заключается в том, что вы проверяете наличие достаточных аргументов * после * вы используете argv [1]. –
Где находится 'frame'? –
"char arr [n] [100];" это неправильный способ выделения памяти. вам следует динамически распределять память с помощью malloc или calloc. –