繁体   English   中英

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

[英]illegal hardware instruction error when concatenating two strings in c

我想遍历一个文本文件并连接所有字符串,直到遇到一个空行,然后对下一个字符串执行相同的操作,依此类推。 每个字符串连接的结果应该添加到一个 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 上)。 如何将新字符串正确添加到现有字符串中,然后将 append 添加到我的数组中,然后将其设置回零以对几行执行相同的操作,直到命中空白行? 我对 C 比较陌生,所以提前致谢:)

  1. char element[] = ""; 您声明了 1 个字符长的数组,因此strcat将始终失败(除非第二个字符串也是空的)。

  2. 即使你以正确的方式定义它,赋值element_arr[i] = element; 您将每次为数组元素分配相同的引用,因此数组将简单地填充对相同 object 的引用。

  3. while(!feof(file_to_read)) - read 为什么“while (?feof (file))”总是错的?

我建议您从 C 书开始,因为您不了解该语言的基础知识。

对问题3的愚蠢回答,你可以看看问题是否是由于过度分层造成的。 我也是Mac用户,我的代码有时会因为函数层太多等原因出现错误。我不知道是否有人已经找到问题3的答案,但我真诚地希望这有助于/帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM