[英]strcat causing segmentation fault
這會導致分段錯誤:
char str1[60];
char**array;
array=malloc( str_nos * sizeof(char *) );
array[i]=malloc( str_len * sizeof(char *) );
strcat(array[i],str1);
strcat(array[i]," ");
str1
是從scanf
獲取的,並且少於60個字符。 array[i]
來自動態字符串數組。
您是否知道導致問題的原因? 它僅發生在大量scanf
。
至少兩種可能性:
如果array[i]
指向的緩沖區沒有足夠的空間,則您將覆蓋緩沖區的末尾,這通常會導致seg-fault。
其中一個字符串未正確以Null結尾,因此strcat
才開始遍歷內存。
任一array[i]
是指向不通,或者通過指向的緩沖區的長度array[i]
是不夠的。
編輯:根據您發布的代碼,由array[i]
指向的緩沖區最初包含未初始化的垃圾。 您不能將strcat
應用於包含未初始化垃圾的目標緩沖區。
要么讓你的緩沖試圖之前持有空字符串strcat
東西吧
array[i][0] = '\0';
strcat(array[i],str1);
strcat(array[i]," ");
或者,以strcpy
開頭,然后執行strcat
strcpy(array[i],str1);
strcat(array[i]," ");
array[i]=malloc( str_len * sizeof(char *) );
i
這是什么 如果i
不在[0,str_len)
范圍內,則您正在訪問的內存可能沒有使用權限...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.