在c中连接两个字符串时出现非法硬件指令错误

xghobddn  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(172)

我想遍历一个文本文件,并连接所有字符串,直到遇到一个空行,然后对下一个字符串执行相同的操作,依此类推。每个字符串连接的结果都应该添加到一个char* 数组中:

char* element_arr[287];

void splitPassports(FILE* file_to_read){
     char element[500];
     char str[80];
     int i = 0;
     int j = 0;

     while(j < FILELENGTH){
         if (fgets(str,80, file_to_read) && !isBlank(str)){
             strcat(element,str);
             printf("The string is: %s\n",str);
         }else if (isBlank(str)){
             element_arr[i] = element;
             memset(element, '\0', sizeof element);
             printf("%s\n",element_arr[0]);
             i++;
         }
         j++;
     }

     fclose(file_to_read);
 }

然而当我尝试这样做的时候,我得到了一个非法的硬件指令错误(我在Mac上)。我如何正确地将新的字符串添加到现有的字符串中,然后将其追加到我的数组中,然后将其设置回零,对几行进行同样的操作,直到遇到一个空行?我对C相对来说是新手,所以提前感谢:)

khbbv19g

khbbv19g1#

  1. char element[] = "";您声明了长度为1个字符的数组,因此strcat将始终失败(除非第二个字符串也为空)。
    1.即使你用正确的方式定义它,赋值element_arr[i] = element;时你每次都会给数组元素赋值相同的引用,所以数组会简单地用对同一个对象的引用填充。
  2. while(!feof(file_to_read))-读取Why is “while ( !feof (file) )” always wrong?
    我建议你从C书开始,因为你不了解这门语言的基础知识。
2guxujil

2guxujil2#

对问题3的愚蠢回答,你可以看到问题是否是由于过度分层。我也是一个Mac用户,我的代码有时会有错误发生,由于有太多的功能层等。我不知道是否有人已经找到了问题3的答案,但我真诚地希望这有助于/帮助。

相关问题