测试 你的程序有问题!
错误1:
char a[4]="
abc\0",b[4]="
cba\0";
"\0"这个字符是C语言自己加上去的,你写的C语言会把 "\"和"0"各看成字符的!共有5个字符,加 上"\0"就有6有字符了,而 " char a[4]" 只有4个!
错误2:
char
*temp=NULL;
temp只是个指针,不是字符串,没有存字符串的内存;
解决方法有;1,用malloc()函数分配内存给temp;
2,把指针temp改为字符串temp[];
代码如下:
第一种;
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<stdlib.h>
/*实现字符串交换*/
void stringcopy(char *a,char *b)
{
char *temp=NULL;
temp=(char*)malloc(10);
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
}
void main()
{
char a[4]="abc",b[4]="cba";
stringcopy(a,b);
puts(a);
puts(b);
}
第二种:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<stdlib.h>
/*实现字符串交换*/
void stringcopy(char *a,char *b)
{
char temp[10];
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
}
void main()
{
char a[4]="abc",b[4]="cba";
stringcopy(a,b);
puts(a);
puts(b);
}
[
本帖最后由 啊C 于 2010-6-26 19:56 编辑 ]