【发布时间】:2013-04-08 05:34:34
【问题描述】:
我正在尝试用 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]);
}
【问题讨论】:
标签: c string segmentation-fault fgets