我的程序如下;
#include <stdio.h>
#include <string.h>
int main()
{
char string[] = "Gentlemen start your engines!";
printf("That string is %s characters long.\r\n", strlen(string));
return 0;
}
我在 gcc 下编译,虽然它没有给我任何错误,但每次运行时程序都会崩溃。从我见过的例子来看,代码似乎没问题。很高兴知道我是否做错了什么。
谢谢。
最佳答案
在 printf()
中使用不正确的格式说明符会调用未定义的行为。正确的格式说明符应该是 %zu
(不是 %d
),因为 strlen()
的返回类型是 size_t
注意:%zu
中的长度修饰符z
表示与size_t
长度相同的整数
关于c - 为什么在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231891/