gpt4 book ai didi

C题: why is my 20 length string limits itself with 6 chars?

转载 作者:行者123 更新时间:2023-12-01 23:36:00 25 4
gpt4 key购买 nike

我正在尝试创建自己的 str_to_upper 函数,但是当我写的内容超过 5 个字符时,它只返回前 5 个字符和一个 '\0' 字符。我猜 word[5] 应该是 '\0',这意味着我的代码返回一个 6 个字符长度的字符串,但我不明白 '\0' 来自哪里。

我的代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

char *str_to_upper(char *);

int main()
{
char word[20];

puts("Please enter a word: ");
fgets(word, strlen(word), stdin);

puts(str_to_upper(word));

return 0;
}

char *str_to_upper(char *sentence)
{
int length=strlen(sentence);

for(int i=0; i<length; i++)
{
sentence[i]=toupper(sentence[i]);
}

return sentence;
}

输出:

Please enter a word: 
aaaaaaaaaaa
AAAAA

当我将 for 循环写入我的数组时,我得到:

Please enter a word:
aaaaaaaaaaa
AAAAA
AAAAA0��}y

最佳答案

只需替换你的

fgets(word, strlen(word), stdin);

fgets(word, sizeof(word), stdin);

实际上,strlen 返回的是未初始化的字符串(word)的长度。因此,fgets 的当前限制是您堆栈中的结果。

关于C题: why is my 20 length string limits itself with 6 chars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60580397/

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