gpt4 book ai didi

C 初学者编码器,程序正在输出垃圾值

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

我是新来的,看来这个网站是获得建议的最佳场所。
我的程序应该读取一个 30 个字符长的字符串。然后程序应该将该字符串中的字符按顺序复制到第二个字符数组中,
但前提是字符是元音(a、e、i、o、u)。

此刻我有点不知所措。任何帮助将不胜感激!

程序打印随机字符行。
该行有 30 长,如我所愿,但输出是随机垃圾。

#include <stdio.h>

const int MAXSIZE = 31;

int main()
{
char stringtwo[31];
int i;
int hold;
char string[31] = {'\0'};

printf("Enter message, upto 30 characters!\n");
fgets(string, MAXSIZE, stdin);

for(i = 0; i < MAXSIZE; i++)
{
hold = (int) string[i];

if(hold == 97 && hold == 101 && hold == 105 && hold == 111 && hold == 117)
{
strcpy(stringtwo, string);
}
}
/* Test to see if any vowels */
if(strcmp(string, stringtwo) == 0)
{
printf("Strings are the same. \n");
}

for(i = 0; i < MAXSIZE; i++)
{
printf("%c\n", stringtwo[i]);
}

return(0);
}

最佳答案

if(hold == 97 && hold == 101 && hold == 105 && hold == 111 && hold == 117)
{
strcpy(stringtwo, string);

}

应该是

size_t vowels = 0;
/* Loop ... */
if (hold == 'a' || hold == 'e' || hold == 'i' || hold == 'o' || hold == 'u')
{
stringtwo[vowels] = string[i];
vowels++;
}
/* End loop ... */
stringtwo[vowels] = '\0';

注意 OR 而不是 AND,并且不要使用像 97 这样的魔数(Magic Number),而是使用 ASCII 表示。

此外,您不需要在循环中迭代 MAXSIZE

fgets(string, MAXSIZE, stdin);

for(i = 0; i < MAXSIZE; i++)

应该是

fgets(string, MAXSIZE, stdin);
size_t len = strlen(string);
for (i = 0; i < len; i++)

现在你可以比较

if (vowels == len)

代替

if(strcmp(string, stringtwo) == 0)

关于C 初学者编码器,程序正在输出垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195091/

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