#include<stdlib.h>#include<stdio.h>#include<conio.h>void fun(char p1[],char p2[]){char *s1,*s2;s1=p1;s2=p2;while(*s1!='\0')s1++;while(*s2!='\0'){*s1=*s2;s1++;s2++;}}void main(){char s1[80],s2[40];system("CLS");printf("Enter s1 and s2:\n");scanf("%s %s",s1,s2);printf("s1=%s\n",s1);printf("s2=%s\n",s2);printf("Invoke fun(s1,s2):\n");fun(s1,s2);printf("After invoking:\n");printf("%s\n",s1);}編譯出來后為什么后面會有燙燙燙燙燙。。。如圖求解
2 回答

森欄
TA貢獻1810條經驗 獲得超5個贊
最后的s1后面沒賦值‘\0’
修正后的
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
void fun(char p1[],char p2[])
{char *s1,*s2;
s1=p1;s2=p2;
while(*s1!='\0')
s1++;
while(*s2!='\0')
{*s1=*s2;s1++;s2++;}
*s1='\0';
}
void main()
{
char s1[80],s2[40];
system("CLS");
printf("Enter s1 and s2:\n");
scanf("%s %s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invoke fun(s1,s2):\n");
fun(s1,s2);
printf("After invoking:\n");
printf("%s\n",s1);
}

白豬掌柜的
TA貢獻1893條經驗 獲得超10個贊
因為S1沒有'\0'結束符,在
while(*s1!='\0')
s1++;
while(*s2!='\0')
{*s1=*s2;s1++;s2++;}
兩個地方,都把'\0'去掉了,在fun函數最后加
s++;*s='\0'
添加回答
舉報
0/150
提交
取消