Я пытаюсь написать редактор потока в C, и мне трудно справляться со строками. После чтения в строках файла я хочу сохранить их локально в массиве строк. Однако, когда я пытаюсь сохранить переменную temp
в массив строк StoredEdits
, я получаю ошибку segmentation fault (core dumped)
. Кроме того, если я раскомментирую переменную char* temp2
и сохраню ее в моем массиве как обходной путь, то последнее значение, прочитанное в файле, будет храниться для каждого значения в массиве.Работа со строками в C
Я предполагаю, что это связано с тем, что temp2 является указателем. Я пробовал миллион вещей, таких как malloc'ing и freeing этой переменной после каждой итерации, но ничего не работает.
Любая помощь была бы принята с благодарностью.
#define MAX_SIZE 100
typedef char String[MAX_SIZE];
int main(int argc, char* argv[]){
char** StoredEdits;
int index, numOfEdits;
FILE *EditFile;
char* temp;
//char* temp2;
StoredEdits = (char**)malloc(MAX_INPUT_SIZE*sizeof(String));
/*Check to see that edit file is passed in.*/
if(argc < 2){
printf("ERROR: Edit File not given\n");
return(EXIT_FAILURE);
}
printf("%s\n",argv[1]);
if((EditFile = fopen(argv[1],"r")) != NULL){
printf("file opened\n");
numOfEdits = 0;
while(fgets(temp, MAX_STRING_SIZE, EditFile) != NULL){
printf("%d %s",numOfEdits,temp);
//temp2 = temp;
StoredEdits[numOfEdits++] = temp;
//StoredEdits[numOfEdits++] = temp;
printf("Stored successfully\n");
}
..........
printf("%d\n",numOfEdits);
for(index=0;index<numOfEdits;index++){
printf("%d %s\n",index, StoredEdits[index]);
}
Пожалуйста, [не набрасывайте возвращаемое значение 'malloc()' в C] (http://stackoverflow.com/a/605858/28169). – unwind