标题:%s输出时遇到的问题,请大牛指教
只看楼主
jh275208498
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-7-19
结帖率:33.33%
已结贴  问题点数:10 回复次数:3 
%s输出时遇到的问题,请大牛指教
大牛们,小弟打程序的时候。出了一个错误 ,就是下行程序printf里的%s,index是整型的,但是却用%s输出,所以发生了段错误,但是当index为0的 时候却又能输出
输出为 You enter (null) strings,这是怎么理解的呢,为什么index大于1就出现段错误,而为0就不可以呢,接着再请问下,什么时候会出现段错误?%s的输出又是怎么回事
呢? 小弟初学,非常感激!!!
 printf("\nYou enter !%s! string%s",index,index > 0?"":"s");
 55     for(i = 0;i < index;i++)
 56     {
 57         printf("%s\n",ps[i]);
 58         free(ps[i]);
 59         ps[i] = NULL;
 60     }
 61     return 0;
搜索更多相关主题的帖子: index null 
2012-10-15 07:30
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
得分:0 
%s为输出字符串,当你输入的index=0时...则字符串为空,

index > 0?"":"s"...这里是当index>0的时候就输出 " ",当<0 则输出"s".....
2012-10-15 08:37
pengzhuo2008
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:29
专家分:68
注 册:2012-9-28
得分:10 
一般的编译器都是这样定义的
#define NULL 0
你输出一个字符串类型的数据,这个时候,要求的参数是一个地址,而你的index是一个整型值,当索引为0的时候,刚好满足是一个空指针,但如果是一个其它值,则是一个非法的地址,也就是段错误了。

1+1=2
2012-10-15 08:38
jh275208498
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-7-19
得分:0 
回复 2楼 爱闹的娃
谢谢熊弟弟 懂了!
2012-10-17 07:37



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




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

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