【发布时间】:2012-12-01 04:33:18
【问题描述】:
c 编程书说我的字符串必须以 null 结尾才能使用 printf 打印,但以下程序仍会打印字符串,尽管它不是以 null 结尾的!!
#include <stdio.h>
#include <stdlib.h>
int main(){
int i ;
char str[10] ;
for(i = 0 ; i < 10 ; i++ ) {
str[i] = (char)(i+97) ;
}
printf("%s",str) ;
}
我正在使用代码块 IDE。
【问题讨论】:
-
你碰巧很幸运,在那个数组后面的某个地方有一个
0。您刚刚利用了经验丰富的程序员称为“未定义行为”的东西。不要指望在任何地方都能做到这一点,大多数程序都会崩溃。 -
我已经运行了 1000 次循环,但它总是运行相同而没有任何问题。我应该考虑从 codeblocks 更改我的编译器吗?谢谢。
-
未定义并不意味着不可重复。尝试使用不同的标志编译,或在不同的架构上编译。
-
这就像酒驾一样。如果你这样做,你会在大多数时候逃脱。你只是在危及自己和他人。
标签: c