gpt4 book ai didi

c - 这个程序有什么问题? (字符串相关)

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

我正在尝试查找以下程序中的错误。

如果我输入“This is a test”,输出显示“This Is A”。我正在尝试找出缺少“测试”的原因。

请帮助我理解这个问题。提前致谢。

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

int main()
{
char str[1000], word[100];
int i, j, length, is_word_started;

gets(str);
length=strlen(str);
is_word_started=0;

for(i=0, j=0; i<length; i++)
{
if(str[i]>='a' && str[i]<='z')
{
if(is_word_started==0)
{
is_word_started=1;
word[j]='A'+str[i]-'a';
j++;
}
else
{
word[j]=str[i];
j++;
}
}
else if(str[i]>='A' && str[i]<='Z' || str[i]>='0' && str[i]<='9')
{
if(is_word_started==0)
{
is_word_started=1;

}
word[j]=str[i];
j++;
}
else
{
if(is_word_started==1)
{
is_word_started=0;
word[j]='\0';
printf("%s\n", word);
j=0;
}
}
}

return 0;
}

最佳答案

你必须重复

if(is_word_started==1)
{
is_word_started=0;
word[j]='\0';
printf("%s\n", word);
j=0;
}

for () 循环之外(在其 的末尾)

否则,当您完成对 str 的解析时,您在 word 中积累的字母将“丢失”。

从技术上讲,您可以将其缩短为:

if(is_word_started==1)
{
word[j]='\0';
printf("%s\n", word);
}

因为之后您将不会重用这些变量。

除了@usr 建议的“永远不要使用gets()”之外,您应该正确调整word 的大小:始终使用最坏的情况。如果 str[1000] 那么 word[1000]!

关于c - 这个程序有什么问题? (字符串相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42673564/

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