[英]What is wrong with this code attempting to concatenate strings in C?
我只是想在C中連接兩個字符串,我不知道為什么,但是我遇到了段錯誤。 我使用gdb跟蹤到了下面的代碼行的第一行。
strcat(tempString, "uptime");
pFile = fopen (tempString,"r");
tempString是=“ / proc /”。 我只想將字符串“ uptime”附加到tempString,然后嘗試打開文件(如果它存在於/ proc文件夾中)。 當strcat()調用memcpy()時,即發生實際的段錯誤。
您尚未在這些行之前顯示任何代碼,但是很可能使用
tempString = "/proc/";
這使其成為常數(具有恆定的內存大小分配)
第二行strcat
將嘗試覆蓋字符串常量,這會將緩沖區之外的6個字節放入未知區域(*如果成功)。
負責任地使用strcat: http : //beej.us/guide/bgc/output/html/multipage/strcat.html
*正如JeremyP所指出的那樣,如果它指向文本段,則它是只讀的,將導致段錯誤
如果您向我們展示定義tempString
的行,這將有助於確認事情。 但是,看起來好像有一些char * tempString = "/proc/";
,並嘗試對其進行修改。 由於它是帶引號的字符串,因此您可能會或可能無法對其進行修改,如果嘗試,則很可能會出現分段錯誤。 (此外, "/proc/"
長度為7個char
,在末尾添加任何內容將覆蓋某些內容。)
對於可修改的字符串,您需要在堆棧或堆上分配自己的緩沖區,並且需要確保其足夠長。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.