关于尾0

free_tend 2011-12-20 10:59:55
char string[10];
int i;
for(i = 0; i < 10; ++i)
string[i] = 'a';

printf("%s\n", string);
打印结果aaaaaaaaaa后面接一个乱码,这就是越界了,那么在上面这种赋值情况下使用
上面的printf具体是怎么回事呢?
...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2011-12-20
  • 打赏
  • 举报
回复
不是越界吧。是找不到字符串结束的符号。'\0'也要占用字符串的一个字符的。一下是修改方案。
char string[10];
int i;
for(i = 0; i < 9; ++i)
string[i] = 'a';
string[i] = '\0'; //没有结束符的话 字符串会一直输出 直到遇到结束符为止。
printf("%s\n", string);
鱼C缸 2011-12-20
  • 打赏
  • 举报
回复

char string[10];
int i;
for(i = 0; i < 10; ++i)
string[i] = 'a';
string[10] = '\0'; //没有结束符的话 字符串会一直输出 直到遇到结束符为止。
printf("%s\n", string);

cxxer 2011-12-20
  • 打赏
  • 举报
回复

#define MAX 10
char string[MAX+1];
int i;
for(i = 0; i < MAX; ++i)
string[i] = 'a';
string[MAX] = '\0'; //没有结束符的话 字符串会一直输出 直到遇到结束符为止。
printf("%s\n", string);


langyano1 2011-12-20
  • 打赏
  • 举报
回复


printf ”%s“,打印字符(遇到\0)时停
gaochizhen33 2011-12-20
  • 打赏
  • 举报
回复

char string[10];
int i;
for(i = 0; i < 10; ++i)
string[i] = 'a';
string[10] = '\0'; //没有结束符的话 字符串会一直输出 直到遇到结束符为止。
printf("%s\n", string);

如此美丽的你 2011-12-20
  • 打赏
  • 举报
回复
参考<<中断大全>>
jiutianc 2011-12-20
  • 打赏
  • 举报
回复
+1[Quote=引用 3 楼 wizard_tiger 的回复:]

不明白楼主的意思
printf输出字符串的时候会以尾0结束如没有尾0则会一直输出直至在内存中遇到尾0为止。
[/Quote]
free_tend 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wizard_tiger 的回复:]

不明白楼主的意思
printf输出字符串的时候会以尾0结束如没有尾0则会一直输出直至在内存中遇到尾0为止。
[/Quote]
谢谢了 我在printf源码中看到了vsprintf的写法 明白了 谢谢了·
wizard_tiger 2011-12-20
  • 打赏
  • 举报
回复
不明白楼主的意思
printf输出字符串的时候会以尾0结束如没有尾0则会一直输出直至在内存中遇到尾0为止。
free_tend 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ivers0n 的回复:]

没结束符\0
[/Quote]
是没有尾零 可能我没说清楚
我的意思是printf执行的时候到底怎么回事·?
IVERS0N 2011-12-20
  • 打赏
  • 举报
回复
没结束符\0

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧