C语言字符指针问题,找不到错误。。。大大们帮忙!

[复制链接]
查看11 | 回复4 | 2010-12-7 11:18:00 | 显示全部楼层 |阅读模式
#include
void copy_string(char *a,char *b);
void main()
{
char *a,*b;
a="I am a teacher.";
b="You are a student.";
printf("string a=%s\nstring b=%s\n",a,b);
printf("copy string a to string b:\n");
copy_string(a,b);
printf("string a=%s\nstring b=%s\n",a,b);
}
void copy_string(char *a,char *b)
{
int i;
for(i=0;*(a+i)=!'\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0';
}

回复

使用道具 举报

千问 | 2010-12-7 11:18:00 | 显示全部楼层
无论是:char *a,*b;a="I am a teacher.";b="You are a student.";还是:char *a="I am a teacher.";;char *b="You are a student.";都是错的。因为,a, b都只声明为指针,并指向的是(只读!注意这里)内存区域,所以才会报错。你需要的是自己申请一块内存然后存放这2个字符串。后面的字符串复制才不会报告错误!正确:char a[250]="I am a teacher.";char b[250]="You are a student.";另外,你的copy_string编写也有错误的。自己改吧。
回复

使用道具 举报

千问 | 2010-12-7 11:18:00 | 显示全部楼层
直接写:char *a="I am a teacher.";;char *b="You are a student.";//这样做,才能给那两个字符串分配内存空间。而你的写法是只为两个指针分配了内存空间
回复

使用道具 举报

千问 | 2010-12-7 11:18:00 | 显示全部楼层
把字符串先存放在数组里面,再定义指针指向数组char from[]="I am a teacher.";char to[]="You are a student.";char *a=from,*b=to;
回复

使用道具 举报

千问 | 2010-12-7 11:18:00 | 显示全部楼层
其实最主要的问题是copy_string()函数里面的for语句for(i=0;*(a+i)=!'\0';i++)改为for(i=0;*(a+i)!='\0';i++)!=写反了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行