我正在尝试用 C 编写一个流编辑器,但我很难处理字符串。在读取文件的行后,我想将它们本地存储在字符串数组中。但是,当我尝试将变量存储temp
到字符串数组中时,StoredEdits
出现segmentation fault (core dumped)
错误。此外,如果我取消注释该char* temp2
变量并将其保存到我的数组中作为一种解决方法,那么最后一个读入的值将存储为数组中的每个值。
我认为这与 temp2 是一个指针这一事实有关。在每次迭代后,我已经尝试了一百万种方法,例如 malloc'ing 和 free'ing 这个变量,但似乎没有任何效果。
任何帮助将不胜感激。
#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]);
}