int main()請問有沒有人幫我解答一下,我這段c程式為啥實作不了字串的連接呢?
{////***連接字串
char str1[50],str2[20];
int i,j;
printf("輸入第一個字串(不含空格):\n");
scanf("%s",str1);
printf("輸入第二個字串(不含空格):\n");
scanf("%s",str2);
i=j=0;
while(str1[i]!='\0') {i=i+1;}
while(str2[j]!='\0')
{
str1[i+1] =str2[j];
printf("連接后的字串1:%s\n",str1);
i=i+1;
j=j+1;
}
// strcat(str1,str2);
printf("\n連接后的字串1:%s\n",str1);
return 0;
uj5u.com熱心網友回復:
#include <stdio.h>
#define DEBUG
int main()
{////***連接字串
char str1[50],str2[20];
int i,j;
printf("輸入第一個字串(不含空格):\n");
scanf("%s",str1);
printf("輸入第二個字串(不含空格):\n");
scanf("%s",str2);
i=j=0;
while(str1[i]!='\0') {i=i+1;}
while(str2[j]!='\0')
{
//str1[i+1] =str2[j];
str1[i] =str2[j];
#ifdef DEBUG
str1[i+1] = 0;
printf("連接后的字串1:%s\n",str1);
#endif
i=i+1;
j=j+1;
}
str1[i] = 0; //equal '\0'
// strcat(str1,str2);
printf("\n連接后的字串1:%s\n",str1);
return 0;
}
供參考~
在第一個字串的末尾,即'\0'的位置存放第二個字串的第一個字符,而不是第一個字串'\0'的下一個位置存放第二個字串的第一個字符
另外,字串都是一個'\0'結束,因此要%s輸出,需要添加'\0'
uj5u.com熱心網友回復:
樓上說了 。還有陣列初始化時要清零 ,操作不要溢位轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252766.html
標籤:C語言
上一篇:break只能用于回圈陳述句中?
