| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 319 人关注过本帖
标题:好奇葩的错误
只看楼主 加入收藏
呢喃君
Rank: 2
等 级:论坛游民
帖 子:32
专家分:28
注 册:2012-7-5
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:1 
好奇葩的错误
题目是让我交换两个字符串
#include<stdio.h>
#include<string.h>
int main()
{
 int t,i;
 void swap(char **x,char **y);
 char s1[80],s2[80],c;
 scanf("%d",&t);
 
 for(i=1;i<=t;i++)
 {  scanf("%c",&c);
  gets(s1);
  gets(s2);
  swap(&s1,&s2);
  printf("Case %d :\n",i);
  puts(s1);
  puts(s2);
 
 }
 return 0;
}
 
void swap(char **x,char **y)
{   
 
 char *s;
 s=*x;
 *x=*y;
 *y=s;
 
}

输入1

abcdefg

hijklm

他输出的是

hijkefg

abcdlm

--为什么只交换了前面4个。。。。。
搜索更多相关主题的帖子: void 交换 include 字符串 
2012-07-11 15:59
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:10 
你可以用swap来改变指针变量的值。

但是,你不能修改数组名的值!

就像你不能这样:char s1[80] = xxxxxxxxxx; char *p; s1 = p;或者你来个s1++;

数组名虽然是个左值,但是不能被赋值!---- C专家编程
2012-07-11 16:25
快速回复:好奇葩的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014573 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved