2016-02-28 54 views
-3

在下面的程序中我需要反向字符串而不使用庫函數。但是複製後的輸出會打印一些垃圾值。任何人都可以幫助我解決這個問題嗎? Please find the code and output字符串複製問題C

+0

您需要做的第一件事是定義一個字符限制並堅持使用它,否則您可能會出現分段錯誤。此外,它更有助於將代碼作爲文本發佈在屏幕上,而不是半個計算機程序的圖片。 – Mike

+1

1.'#include '位於文件的頂部。 2.修復編譯器錯誤。 3.如果還有其他問題,請將代碼複製/粘貼爲文字,而不是圖像。 – dxiv

+0

[使用strcpy時正在打印的垃圾]的可能重複(http://stackoverflow.com/questions/11161609/garbage-being-printed-when-using-strcpy) – Abhijeet

回答

2

str1str2必須char陣列大到足以容納字符串。 爲了您的簡單化示例,char str1[128], str2[128];應該這樣做。

循環之前,您必須初始化jstr1長度與str2[j--] = '\0';循環之前空終止str2

for (j = 0; str1[j] != '\0'; j++) { 
    continue; 
} 
str2[j--] = '\0'; 
for (i = 0; str1[i] != '\0'; i++, j--) { 
    str2[j] = str1[i]; 
} 
+0

但'strlen'需要string.h庫,OP想要不使用它 – Cherubim

+0

@ ch3rub7:你說的對,我刪除了''依賴。 – chqrlie

+0

使用null終止str2會產生所需的結果。如果str2沒有以null結尾,輸出就像「ayvid垃圾值divya」(如圖1中的輸出屏幕)。我需要知道如何在垃圾值之後再次在最後打印原始字符串。任何人都可以澄清? – divya

0

STR2應以空字符「\ 0」的字符串逆轉的後分配循環。

for(j=strlen(str1);str1[i]!='\0';i++,j--) 
     str2[j-1]=str1[i]; 
str2[i]='\0'; 
+0

以null幫助終止str2。謝謝。 – divya

+0

如果str2沒有以null結尾,輸出就像「ayvid垃圾值divya」(如圖1中的輸出屏幕)。我需要知道如何在垃圾值之後再次在最後打印原始字符串。 – divya