C编程书上说我的字符串必须以空结尾才能使用printf打印它,但是下面的程序仍然打印字符串,尽管它不是以空结尾的!啊!
#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。
最佳答案
读取超出数组范围是未定义的行为,实际上您很不幸它没有崩溃,如果您运行它足够多次或在它可能(或可能不会)崩溃的函数中调用它,您应该始终终止字符串,或使用宽度说明符:
printf("%.10s", str);