本文介绍了为什么在 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 上崩溃?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 19:49