【发布时间】:2021-11-09 11:35:14
【问题描述】:
我必须编写一个 C 程序,其中输出应该与输入相同,但删除了所有元音。除了我的程序没有打印出句子之间的换行符之外,一切正常。我必须使用 printf 和 scanf。
输入:
Peter Piper picked a peck of pickled peppers.
A peck of pickled peppers Peter Piper picked.
If Peter Piper picked a peck of pickled peppers,
Where's the peck of pickled peppers Peter Piper picked?
Peter Piper picked a peck of pickled peppers.
If Peter Piper picked a peck of pickled peppers,
How many pickled peppers that Peter Piper picked?
我的程序的输出:
Ptr Ppr pckd pck f pckld ppprs. pck f pckld ppprs Ptr Ppr pckd.f Ptr Ppr pckd pck f pckld ppprs,Whr's th pck f pckld ppprs Ptr Ppr pckd?Whr's th pck f pckld ppprs Ptr Ppr pckd?Whr's th pck f pckld ppprs Ptr Ppr pckd?Whr's th pck f pckld ppprs Ptr Ppr pck ...
句子后面好像没有打印出\n。
这是我的代码:
void check_and_print_consonants(char string1[], char string2[]) {
int vowel = 0;
int str1_len = strlen(string1);
int str2_len = 10;
for (int i = 0; i < str1_len; i++) {
for (int j = 0; j < str2_len; j++) {
if (string1[i] == string2[j]) {
vowel = 1;
}
}
if(vowel == 0){
printf( "%c", string1[i]);
}
else{
vowel = 0;
}
}
}
int main(void) {
//collect input in an array
char input[128];
char vowels[] = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
while (scanf("%99[^\n]%*c", input) != EOF){
check_and_print_consonants(input, vowels);
}
printf("\n");
return 0;
}
我不知道我哪里错了。
【问题讨论】:
-
您不打印
\n,因此输出中没有行尾是正常的。你试过调试这个吗? -
是否允许使用
memchr、strchr、strspn和strcspn等库函数? -
好吧,如果可以解决问题,也许只是在
.、,和?之后打印\n? :) -
使用
fgets(),而不是scanf()。
标签: arrays c char printf scanf