在c中连接两个字符串时出现非法硬件指令错误
我想循环遍历一个文本文件并连接所有字符串,直到找到一个空行,然后对下一个字符串执行相同的操作,依此类推。应将每个字符串连接的结果添加到char*数组中:在c中连接两个字符串时出现非法硬件指令错误,c,string,macos,clang,strcat,C,String,Macos,Clang,Strcat,我想循环遍历一个文本文件并连接所有字符串,直到找到一个空行,然后对下一个字符串执行相同的操作,依此类推。应将每个字符串连接的结果添加到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){
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);
}
char*元素_arr[287];
作废拆分护照(文件*文件读取){
char元素[500];
char-str[80];
int i=0;
int j=0;
while(j
然而,当我尝试这样做时,我得到一个非法的硬件指令错误(我在Mac上)。如何正确地将新字符串添加到现有字符串中,然后将其附加到数组中,然后将其设置回零,以对少数行执行相同操作,直到出现空行?
我对C比较陌生,所以提前感谢:)
char元素[]=”
您声明的数组长度为1个字符,因此strcat总是会失败(除非第二个字符串也是空的)
元素\u arr[i]=元素代码>每次都将使用相同的引用分配数组元素,因此数组将简单地填充对相同对象的引用
while(!feof(文件读取))
-read
char元素[]=”
您声明的数组长度为1个字符,因此strcat总是会失败(除非第二个字符串也是空的)
元素\u arr[i]=元素代码>每次都将使用相同的引用分配数组元素,因此数组将简单地填充对相同对象的引用
while(!feof(文件读取))
-read
我建议您从C语言书开始,因为您不了解该语言的基础知识。
元素
是一个字符宽(终止符)。任何非空concation都将调用未定义的行为。无关,。请花一些时间刷新,以及。请不要在您显示的代码中包含行号。还要注意,代码将导致更多未定义的行为,而不仅仅是数组越界问题。还可以返回指向本地数组元素,该数组的生命周期以函数结束。从何处获得错误?在返回中
?可能是因为您在element\u arr
中写入了287个以上的条目,或者在str
中写入了80个以上的字符。好的,您已经更改了代码。那么是的,它是元素\u arr
。但是由于element\u arr
中的所有初始化元素都被初始化为指向element
,因此仍然存在相同的问题。您也从未初始化element\u arr
的未使用元素,因此无法知道已初始化元素的数量。我建议您使用指针、动态分配、重新分配和strdup
函数来动态创建element\u arr
数组及其元素。element
是一个字符宽(终止符)。任何非空concation都将调用未定义的行为。无关,。请花一些时间刷新,以及。请不要在您显示的代码中包含行号。还要注意,代码将导致更多未定义的行为,而不仅仅是数组越界问题。还可以返回指向本地数组元素,该数组的生命周期以函数结束。从何处获得错误?在返回中
?可能是因为您在element\u arr
中写入了287个以上的条目,或者在str
中写入了80个以上的字符。好的,您已经更改了代码。那么是的,它是元素\u arr
。但是由于element\u arr
中的所有初始化元素都被初始化为指向element
,因此仍然存在相同的问题。您也从未初始化element\u arr
的未使用元素,因此无法知道已初始化元素的数量。我建议您使用指针、动态分配、重新分配和strdup
函数来动态创建element\u arr
数组及其元素?还有两个问题:1。当我尝试将元素变成char*时,这是否解决了您提到的问题1?2.为什么对元素的引用总是相同的?我不能“清除”字符串并给它赋值吗?然后添加到元素_arr?@Phil问的问题表明指针和数组对你来说是“黑色巫术”。正如我所写的,从书中学习C。做练习。没有别的办法。那么,维修不是吗?但一定有办法做到这一点吗?还有两个问题:1。当我尝试将元素变成char*时,这是否解决了您提到的问题1?2.为什么对元素的引用总是相同的?我不能“清除”字符串并给它赋值吗?然后添加到元素_arr?@Phil问的问题表明指针和数组对你来说是“黑色巫术”。正如我所写的,从书中学习C。做练习。没有别的办法。修复工作也是如此