本文介绍了为什么在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的程序如下;
#include <stdio.h>
#include <string.h>
int main()
{
char string[] = "Gentlemen start your engines!";
printf("That string is %s characters long.
", strlen(string));
return 0;
}
我在 gcc 下编译,虽然它没有给我任何错误,但每次我运行它时程序都会崩溃.从我看过的例子来看,代码似乎很好.很高兴知道我是否做错了什么.
I'm compiling under gcc, and although it doesn't give me any errors the program crashes every time I run it. The code seems to be fine from examples I've seen. It'd be great to know if I'm doing anything wrong.
谢谢.
推荐答案
在 printf()
中使用不正确的格式说明符会调用未定义行为.正确的格式说明符应该是 %zu
(不是 %d
),因为 strlen()
的返回类型是 size_t
Using incorrect format specifier in printf()
invokes Undefined Behaviour. Correct format specifier should be %zu
(not %d
) because the return type of strlen()
is size_t
注意:%zu
中的长度修饰符z
表示长度与size_t
Note: Length modifier z
in %zu
represents an integer of length same as size_t
这篇关于为什么在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!