社区
C语言
帖子详情
关于C语言中puts函数的问题
weixin_45906870
2020-01-12 08:41:27
#include <stdio.h>
int main()
{
char side_a[] = "Side A";
char dont[] = {'W','O','W','!'};
char side_b[] = "Side B";
puts(dont); /*dont 不是一个字符串*/
return 0;
}
为什么这个代码输出是——WOW!Side A?
Side A怎么跑后面去了?
...全文
205
6
打赏
收藏
关于C语言中puts函数的问题
#include int main() { char side_a[] = "Side A"; char dont[] = {'W','O','W','!'}; char side_b[] = "Side B"; puts(dont); /*dont 不是一个字符串*/ return 0; } 为什么这个代码输出是——WOW!Side A? Side A怎么跑后面去了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_45906870
2020-01-12
打赏
举报
回复
十分感谢
寻开心
2020-01-12
打赏
举报
回复
局部变量的之间的地址关系,c/c++标准没有定义, 是编译器自己的行为, 不能把你发现的结果作为所有的编译器通用行为
它只对你所有的编译器和所在的系统环境有效,换一个不一定对
寻开心
2020-01-12
打赏
举报
回复
printf("%p : %p %p", sida_a, dont, side_b); 你看看三个指针,他们的关系,到底哪一个地址高,哪个一个地址低
函数里面的局部变量,都是栈内存, 在你用的这个编译器里面,地址向下增长的.
weixin_45906870
2020-01-12
打赏
举报
回复
那它为什么不跑到side_b而非要跑side_a那里去呢?
寻开心
2020-01-12
打赏
举报
回复
就是把字符数组当字符串使用的时候, 必须在数组里面,人工的填写一个'\0'字符放到最后,即:
char dont[] = {'W','O','W','!'
,'\0'
};
而 char side_a[] = "Side A"; 这种定义,因为字符串自带'\0'字符在尾巴,就无需人工补这个0字符了
寻开心
2020-01-12
打赏
举报
回复
因为它是数组, 里面没有一个 ‘\0’这样的一个值
把它当做字符串输出的时候, puts会在数组里面一直输出,直到遇到了'\0'字符为止
显然,在输出的过程当中越界了, 跑到了side_a数组里面还在继续输出,直到遇到了“Side A”这个字符串结尾的'\0'字符才结束
cputs
函数
与puts
函数
比较
cputs
函数
与puts
函数
比较cputs
函数
与puts
函数
比较cputs
函数
与puts
函数
比较
C语言
中
的字符串连接
函数
#include
#include
void main() { char *a="My name is ",*b; puts(a); gets(b); strcat(a,b); puts(a); }
c语言
中
puts的作用,
c语言
puts
函数
用法是什么?
c语言
puts
函数
用法是什么?
c语言
puts
函数
用法是:puts();puts()
函数
用来向标准输出设备(屏幕)输出字符串并换行,具体为:把字符串输出到标准输出设备,将'\0'转换为回车换行。其调用方式为,puts(s);其
中
s为字符串字符(字符串数组名或字符串指针)。功能:将字符串输出到终端,puts
函数
一次只能输出一个字符串,字符串
中
可以包括转义字符。
函数
原型:int puts(const c...
puts
函数
,
C语言
puts
函数
用法详解
前面在输出字符串时都使用printf,通过“%s”输出字符串。其实还有更简单的方法,就是使用 puts()
函数
。该
函数
的原型为: # include <stdio.h> int puts(const char *s); 这个
函数
也很简单,只有一个参数。s可以是字符指针变量名、字符数组名,或者直接是一个字符串常量。功能是将字符串输出到屏幕。输出时只有遇到 '\0' 也就是字符串结束标志符才会停止。 下面写一个程序: # include <stdio.h> int main(
c语言
入门(puts
函数
用法)
输入输出puts()只能用于输出字符串,不能输出数值或者进行格式转换,即不能要求输出格式增加空格、换行(指的是输出内容的
中
间进行换行)等要求;puts() 虽然简单、方便,但也仅限于输出字符串,功能还是没有 printf() 强大。
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章