aus*_*ete 14 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;
}
Run Code Online (Sandbox Code Playgroud)
我正在gcc下编译,虽然它没有给我任何错误,但程序每次运行时都会崩溃.从我见过的例子来看,代码似乎很好.很高兴知道我做错了什么.
谢谢.
Pra*_*rav 16
使用不正确的格式说明符printf()
调用未定义的行为.正确的格式说明符应该是%zu
(不是%d
)因为返回类型strlen()
是size_t
注意:长度修饰符z
in %zu
表示长度相同的整数size_t
你有错误的格式说明符.%s
用于字符串,但你传递size_t
(strlen(string)
).使用不正确的格式说明符printf()
调用未定义的行为.请%zu
改用,因为返回类型strlen()
是size_t
.
所以改变
printf("That string is %s characters long.\r\n", strlen(string));
Run Code Online (Sandbox Code Playgroud)
至:
printf("That string is %zu characters long.\r\n", strlen(string));
Run Code Online (Sandbox Code Playgroud)
由于您正在使用,请gcc
查看此处以获取有关可传递给的更多信息printf