【发布时间】:2017-11-13 19:48:35
【问题描述】:
这是家庭作业
我必须编写一个程序,要求用户输入一个字符串,然后我的程序会将输入的字符串中的偶数和奇数分开。这是我的程序。
#include <stdio.h>
#include <string.h>
int main(void) {
char *str[41];
char odd[21];
char even[21];
int i = 0;
int j = 0;
int k = 0;
printf("Enter a string (40 characters maximum): ");
scanf("%s", &str);
while (&str[i] < 41) {
if (i % 2 == 0) {
odd[j++] = *str[i];
} else {
even[k++] = *str[i];
}
i++;
}
printf("The even string is:%s\n ", even);
printf("The odd string is:%s\n ", odd);
return 0;
}
当我尝试编译我的程序时,我收到两个警告:
对于我的
scanf,我得到"format '%s' expects arguments of type char but argument has 'char * (*)[41]"。我不确定这意味着什么,但我认为这是因为数组初始化。在
while循环中,它给了我一个警告,指出指针和整数之间的比较。我也不确定这意味着什么,我认为在 C 中进行这种比较是合法的。
当我编译程序时,我得到了偶数和奇数字符串的随机字符。
任何帮助将不胜感激!
【问题讨论】:
-
scanf("%s" , &str);->scanf("%s" , str); -
char *str[41];=>char str[41];然后删除str(*str) 的所有取消引用 -
scanf("%s" , &str);->scanf("%40s" , str); -
if (i % 2 == 0) { odd[j++] = str[i];看起来应该是if (i % 2 == 0) { even[j++] = str[i]; -
请编辑您的答案,因为您想打印奇数或偶数的字符,而不是值:)