标题:为什么第二个print函数不能输出
只看楼主
福建刘德华
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-2-13
结帖率:50%
已结贴  问题点数: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 输出 函数 
2020-02-13 18:24
福建刘德华
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-2-13
得分:0 
2020-02-13 18:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:6 
溢出
//b[40]
b[41]
2020-02-13 18:48
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册: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');
}

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-13 19:38
福建刘德华
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-2-13
得分:0 
回复 4楼 叶纤
是的
我想知道我这样为什么不能把第二个print函数输出?
蟹蟹!
2020-02-13 21:50
福建刘德华
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-2-13
得分:0 
回复 3楼 吹水佬
是的。
但是明明是一样的,为什么不能输出呢?这个b【】数组和a不是没有关系吗?
2020-02-13 21:54
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:10 
不能输出不是必然的,也可能以别的方式出错。

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

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

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-02-13 22:22
福建刘德华
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2020-2-13
得分:0 
回复 7楼 forever74
感谢
2020-02-13 22:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499220-1-1.html




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

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