| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 379 人关注过本帖
标题:在这个程序错在哪?
只看楼主 加入收藏
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:9 
在这个程序错在哪?
这个程序,就是把字符串2连接到1后面,但运行结果总是乱码。怎么回事,请大虾指教
#include <stdio.h>
void main()
{
    char *s1,*s2;
    char str1[30],str2[10];
    str1[30]="Beijing",str2[10]="China";
    for(s1=str1;*s1!='\0';s1++);
    for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
    *s1='\0';
    printf("%s\n",str1);
    getch();
}
搜索更多相关主题的帖子: 字符串 
2011-03-06 11:50
默默学习
Rank: 4
等 级:业余侠客
帖 子:134
专家分:200
注 册:2010-6-22
收藏
得分:15 
#include <stdio.h>
void main()
{
    char *s1,*s2;
    char str1[30]="Beijing",str2[10]="China";
    for(s1=str1;*s1!='\0';s1++);
    for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
    *s1='\0';
    printf("%s\n",str1);
}
字符数组只能初始化赋值,.它跟指针的赋值不一样,指针可以改变指向.

2011-03-06 11:58
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:3 
    char str1[30],str2[10];
    str1[30]="Beijing",str2[10]="China";

这句肯定编译不通过

勤能补拙,熟能生巧!
2011-03-06 11:59
wolonga123
Rank: 2
等 级:论坛游民
帖 子:25
专家分:35
注 册:2010-9-16
收藏
得分:0 
感觉*s1++=*s2++应该改为*(s1++)=*(s2++)啊.......自增运算符与指针运算符优先级一样的
2011-03-06 12:02
wolonga123
Rank: 2
等 级:论坛游民
帖 子:25
专家分:35
注 册:2010-9-16
收藏
得分:0 
回复 2楼 默默学习
应该 没这回事吧.......你可以试一下啊,,,,,,,呵呵
2011-03-06 12:09
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
char str1[30],str2[10];
    str1[30]="Beijing",str2[10]="China";  不能这样赋值。
字符数组只能初始化时赋值。不像其他变量如指针变量。可先申明变量。再给变量赋值。因字符数组名是常量。不能给一个常量赋值。
2011-03-06 12:12
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
不好意思。我似乎弄错了。
2011-03-06 12:17
weiwei555
Rank: 5Rank: 5
来 自:中国
等 级:职业侠客
帖 子:179
专家分:323
注 册:2011-3-4
收藏
得分:2 
char str1[30],str2[10];
str1[30]="Beijing",str2[10]="China";你这样赋值是不对的,应在定义是赋值,即为:char str1[30]={"Beijing"},str2[10]={"China"};
2011-03-06 14:02
photon1001
Rank: 1
等 级:新手上路
帖 子:19
专家分:3
注 册:2010-9-10
收藏
得分:0 
#include <stdio.h>
void main()
{
    char *s1,*s2;
    char str1[30]="Beijing",str2[10]="China";
  
    for(s1=str1;*s1!='\0';s1++);
    for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
    *s1='\0';
    printf("%s\n",str1);
    getch();
}
2011-03-06 19:04
shiliangzdm
Rank: 1
来 自:四川
等 级:新手上路
帖 子:22
专家分:8
注 册:2010-3-21
收藏
得分:0 
这个    for(s1=str1;*s1!='\0';s1++);
        for(s2=str2;*s2!='\0';)
        *s1++=*s2++;
循环能把字符串2连接到1后面?我怎么感觉不能呢。没运行过,只是感觉
2011-03-06 21:44
快速回复:在这个程序错在哪?
数据加载中...
 
   



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

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