gpt4 book ai didi

c - 为什么我不能得到整个字符串的长度?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:20 25 4
gpt4 key购买 nike

我尝试了 strlen(string)。我尝试编写代码来查找整个字符串的长度。然而,当到达第一个“空格”时,它仍然倾向于停止计算长度。为什么会这样?解决办法是什么?我试图在 '\0' 处停止。这不应该工作吗?这是代码的一部分。

int main(void) {
char phrase[256];
char phrase2[256];
int i,j,size;
scanf("%255s", phrase);
for(i=0;phrase[i]!='\0';i++){
size++;
}
...

最佳答案

它停止计数的原因是因为 scanf 一次读取一个单词。它正在读取第一个单词然后停止,忽略该行的其余部分。

相反,使用 fgets :

Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or the end-of-file is reached, whichever happens first.

你可以像这样从标准输入读取:

fgets(phrase, 256, stdin);

您是否考虑过使用 strlen测量输入的长度?

最后,你应该养成在声明变量时初始化变量的习惯:

int i = 0,j = 0, size = 0;

当声明一个变量时,它的值是“内存中的任何内容”,直到您设置它的值。在您的示例中,“长度”从未被初始化,这将导致意外行为。初始化变量是避免意外行为和浪费时间追踪错误的好方法。

关于c - 为什么我不能得到整个字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com