gpt4 book ai didi

c - 在多个字符串的偶数和奇数位置打印字符

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

我正在尝试使用 c 程序在偶数和奇数位置打印给定字符串的字符。如果只有一个字符串,我的程序工作正常,但它不适用于包含多个字符串的句子。下面的代码只打印输入的第二个字符串,但它不会像原来那样在偶数和奇数位置打印字符对于第一个字符串。

int main() 
{
char string[10], even[10], odd[10], i, j, k,count;

i = j = k = count = 0;

do
{
printf("Enter your input string:");
fgets(string, 10, stdin);
string[strlen(string) - 1] = '\0';

/* printing the input string */
printf("Given Input string:%s\n", string);

while (string[i] != '\0')
{
if (i % 2 == 0) {
odd[j++] = string[i];
}
else {
even[k++] = string[i];
}
i++;
}
/* terminating even and odd string with NULL */
odd[j] = even[k] = '\0';

/* print the characters at odd position and even positions */
printf(" %s %s", odd,even);

odd[0]=even[0]='\0';
count++;
}while(count<2);
return 0;
}

在执行时,当我输入第一个字符串“united”时,它打印出奇数位置的“uie”和偶数位置的“ntd”。然后系统提示我输入第二个字符串,我将其输入为“状态”,但除了输入的字符串和程序退出外,没有打印出任何内容。它没有像第一个字符串那样输出。请帮我指出我的错误,这样我的代码就可以对任意数量的字符串正确工作,而不仅仅是第一个字符串,即它应该为用户输入的所有字符串输出偶数和奇数位置的字符。

最佳答案

您将自己限制在一个古老版本的 C 语法中,该语法要求所有局部变量都在 block 的顶部声明,在任何可执行语句之前。

由于您的代码没有在 do/while 循环外使用 count 以外的变量,因此您应该将它们的声明移到循环内。这将确保变量在每次迭代开始时具有适当的初始值。

这里有几点需要牢记:

  • 如果最终用户终止输入流(Ctrl+Z 在 Windows 上,Ctrl+<,您的代码将导致未定义的行为kbd>D 在 UNIX 上)无需输入任何字符
  • 当最终用户在输入少于十个字符后终止输入流时,您的代码将丢弃最后一个字符
  • odd[0]=even[0]='\0' 是不必要的

关于c - 在多个字符串的偶数和奇数位置打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40113759/

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