| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 218 人关注过本帖
标题:为什么第二个print函数不能输出
只看楼主 加入收藏
福建刘德华
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-2-13
结帖率:100%
  已结贴   问题点数:20  回复次数:7   
为什么第二个print函数不能输出
#include<stdio.h>

void main()
{
    char a[]="Evil communication corrupt good manners!",b[40],*p1,*p2,*p3;
    int i;
   
    printf("String a is:%s\n",a);
   
    p1 = a;
    p2 = b;
   
    for( ; *p1 != '\0'; p1++,p2++)
    {
        *p2 = *p1;
    }
        *p2 = '\0';
   
    printf("String a is:%s\n",a);


    printf("String b is:");
   
    for( i=0; b[i] != '\0'; i++)
    {
        printf("%c",b[i]);
    }
   
    putchar('\n');
}
附件: 您没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: String print printf 输出 函数 
5 天前 18:24
福建刘德华
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-2-13
  得分:0 
5 天前 18:36
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:229
帖 子:6925
专家分:30819
注 册:2014-5-20
  得分:6 
溢出
//b[40]
b[41]
5 天前 18:48
叶纤
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:269
专家分:304
注 册:2019-11-22
  得分:4 
程序代码:
你是想让a[]放在b[]里吗
#include<stdio.h>

int main()
{
    char a[100]="Evil communication corrupt good manners!",b[100],p1,p2,p3;
    int i;   
   printf("String a is:%s\n",a);   
    printf("String b is:");
   
    for( i=0; a[i] ; ++i)
    {
        
    b[i]  = a[i];
    printf("%c",b[i]);      
     }
     printf("\n");
  printf("String b is:%s\n",b);   
  printf("String a is:%s\n",a); 
    putchar('\n');
}

每天进步一点点,一点点,就可以了
5 天前 19:38
福建刘德华
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-2-13
  得分:0 
回复 4楼 叶纤
是的
我想知道我这样为什么不能把第二个print函数输出?
蟹蟹!
5 天前 21:50
福建刘德华
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-2-13
  得分:0 
回复 3楼 吹水佬
是的。
但是明明是一样的,为什么不能输出呢?这个b【】数组和a不是没有关系吗?
5 天前 21:54
forever74
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:CC
等 级:贵宾
威 望:25
帖 子:1295
专家分:2257
注 册:2007-12-27
  得分:10 
不能输出不是必然的,也可能以别的方式出错。

C意义下的字符串是从首地址开始到结束符为止的。
因此首地址单元保存了结束符的就叫空字符串。
某些编译系统喜欢在栈上连续存放你连续定义的变量。
栈的一般实现是逆生长的,也就是从高地址往低地址方向。

那么问题就来了,你的b溢出了以后,放不下的结束符正好被放在了a[0]应该在的位置。
于是a字符串变成了上述的空字符串。
再强调一下,出错是肯定的,但并不一定这样表现。这样表现是偶然的(平台相关)。

别人能不等于你能,别人不能不等于你不能
不要问别人能不能,要说:我能
5 天前 22:22
福建刘德华
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-2-13
  得分:0 
回复 7楼 forever74
感谢
5 天前 22:25
快速回复:为什么第二个print函数不能输出
数据加载中...
 
   



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

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