| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1343 人关注过本帖
标题:c++中%s输出地时候为什么后面会多出几个字母???
只看楼主 加入收藏
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
结帖率:69.23%
收藏
已结贴  问题点数:5 回复次数:6 
c++中%s输出地时候为什么后面会多出几个字母???
#include <stdio.h>
#include <malloc.h>

int main(void)
{
    char *c;
    c=(char*)malloc(sizeof(char)*10);
    c[0]='a';
    c[1]='a';
    c[2]='a';
    c[3]='a';
    c[4]='a';
    c[5]='a';
    c[6]='a';
    c[7]='a';
    c[8]='a';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
   
    printf("%s",c);
   
   
   
   
   
   
   
   
    getchar();
    return 0;
}








输出结果有时候是aaaaaaaaablit  有时候是aaaaaaaaabc  F1
反正就是后面会出现几个其他的字母?
我在其他电脑上面试了一下也是这样!............
搜索更多相关主题的帖子: return include 
2011-08-22 15:14
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
程序代码:
#include <stdio.h>
#include <malloc.h>

int main(void)
{
    char *c;
    c=(char*)malloc(sizeof(char)*10);
    c[0]='a';
    c[1]='a';
    c[2]='a';
    c[3]='a';
    c[4]='a';
    c[5]='a';
    c[6]='a';
    c[7]='a';
    c[8]='a';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[10] = '\0';
    printf("%s",c);
   
   
   
   
   
   
   
   
    getchar();
    return 0;
}

                                         
===========深入<----------------->浅出============
2011-08-22 15:19
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
    char *c;
    c=(char*)malloc(sizeof(char)*11);
    c[0]='a';
    c[1]='a';
    c[2]='a';
    c[3]='a';
    c[4]='a';
    c[5]='a';
    c[6]='a';
    c[7]='a';
    c[8]='a';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[9]='b';
    c[10]=0;
    printf("%s",c);
   
   
   
   
   
   
   
2011-08-22 15:35
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
还是楼上认真

                                         
===========深入<----------------->浅出============
2011-08-22 18:13
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
收藏
得分:0 
我知道加上\0可以避免这种情况,但是我不明白的是为什么我分配的是10个字节的空间,而且我已经全部使用了这些空间,为什么输出地时候却多出来其他的字符?难道%s的问题?
2011-08-23 11:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
当你把数组视为字符串时(%s就是视为字符串的意思),它需要找到字符串的结束符才算输出完毕。你运气好,程序没崩溃,通常这样操作可不是多输出几个字符那么简单。

授人以渔,不授人以鱼。
2011-08-23 16:18
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
回复 6楼 TonyDeng
永远不会崩溃,运气不好会输出很多没用的字符,但被置0的字节有很多,所以程序会很快停止。

My life is brilliant
2011-08-23 18:41
快速回复:c++中%s输出地时候为什么后面会多出几个字母???
数据加载中...
 
   



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

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