C語言使用指針連接兩個字符串,這個錯哪了?
補充:#include<stdio.h>
void main()
{
int strcat_(char *a,char *b);
char *a="hello";
char *b="rabbit";
strcat_(a,b);
printf("%s\n",b);
}
int strcat_(char *a,char *b)
{
while(*a!='\0')
a++;
while(*b!='\0')
{
*a=*b;
a++;
b++;
}
*a='\0';
}
補充:如果把char *a="hello";
char *b="rabbit";
改成char a[40]="hello";char b[40]="rabbit";
就正確了,但不明白為什麼
最佳回答:
指向字符串的指針所指向的字符串是字符串常量,看清楚,是常量啊,所以不能被改變。所以你必須把裡面的一個字符串指針改成字符數組,用來存放連接後的字符。還有你要輸出的應該是a不是b把。所以你應該把a定義成字符數組而不是指向字符串的指針
#include<stdio.h>
int strcat_(char*,char*);
void main()
{
char a[20]="hello";
char *b="rabbit";
strcat_(a,b);
printf("%s\n",a);
}
int strcat_(char *a,char *b)
{
while(*a!='\0')
a++;
while(*b!='\0')
{
*a=*b;
a++;
b++;
}
*a='\0';
return 0;
}