int main()
{
int LengthofWord = strlen('word');
printf("%s", LengthofWord);
}
由于某种原因,此代码崩溃了。我想检索字符串的长度(在本例中为字符串)以便稍后使用。为什么这段代码会崩溃?
由于
答案 0 :(得分:4)
您的代码存在以下问题:
'word'
。 '
符号用于单个字符,例如'a'
。你打算写"word"
。LengthofWord
的类型应为size_t
而不是int
,因为这是strlen
返回的内容。printf
使用了错误的格式字符串。您使用了适合字符串的%s
。对于整数值,您应该使用%zu
。但是,请注意某些运行时无法理解%zu
。int main(void)
所以你的完整程序应该是:
#include <stdio.h>
#include <string.h>
int main(void)
{
size_t LengthofWord = strlen("word");
printf("%zu", LengthofWord);
}
答案 1 :(得分:3)
应该是
... = strlen("word");
在C字符串文字中加入双引号。
同样strlen()
返回size_t
而不是int
。所以整行应如下所示:
size_t LengthofWord = strlen("word");
最后打印出size_t
使用转换说明符“zu”:
printf("%zu", LengthofWord);
"%s"
需要一个0
终止的char
数组,一个“字符串”。
最后,最重要的是,使用
启动程序int main(void)
{
...
并通过退回int
...
return 0;
}
答案 2 :(得分:2)
C中的'
引号和"
引号之间存在差异。使用字符"
。
改变
int LengthofWord = strlen('word');
^ ^
| |
-----------Replace these single quotes with double quotes("")
到
int LengthofWord = strlen("word");
strlen
会返回size_t
类型。将其声明为size_t
类型而不是int
。同时将printf
中的格式说明符更改为%zu
printf("%d", LengthofWord);
您的最终代码应该是
int main(void)
{
size_t LengthofWord = strlen('word');
printf("%zu", LengthofWord);
return 0;
}