c - 为什么在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?

标签 c string gcc windows-7

我的程序如下;

#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/

相关文章:

c - 除了邮件搜索技术之外,如何获取邮箱中未见过/未读的电子邮件

ruby - 在 Ruby 中评估字符串中的正则表达式

c++ - 为什么 GCC 在我的机器上创建额外的汇编指令?

gcc - 编译外部内核模块时如何手动包含.config?

c - sprintf 线程安全吗?

c - 如何使用 _spawn 或 _exec 进行引导?

c - 如何更新矢量化汇编(AVX)中的数组?

c# - 去除字符串中的空格

java - 字符串格式参数在 android 上的 string.xml 中不起作用

c - 'int main(){ return(0); }' 上的浮点异常 (SIGFPE)