我应该制作一个程序,用数字代替字符串中的元音,而不使用和使用指针。
我在每个switch语句中使用了注释的printf来调试我的程序,当字符串为 aeiou 时的输出是:
4eiou
3iou
1ou
0u
2
当打印字符串时,它只打印一个空行,输出应为: 43102 。
我做错了,正在替换完整的字符串,但我无法理解。有人能帮我吗? 非常感谢你!
#include <stdio.h>
void changes(char* ptr) {
while (*ptr != '\0') {
switch(*ptr) {
case 'a':
*(ptr)='4';
//printf("%s\n", ptr);
break;
case 'e':
*(ptr)='3';
//printf("%s\n", ptr);
break;
case 'i':
*(ptr)='1';
//printf("%s\n", ptr);
break;
case 'o':
*(ptr)='0';
//printf("%s\n", ptr);
break;
case 'u':
*(ptr)='2';
//printf("%s\n", ptr);
break;
default:
break;
}
ptr++;
}
//Print the string
printf("%s\n", ptr);
}
int main() {
char sString[51];
char *charPtr = NULL;
charPtr = &sString[0];
printf("Introduce a string: ");
scanf("%[^\n]s", sString);
changes(charPtr);
}
答案 0 :(得分:1)
使用%s
printf
格式说明符递增指针并打印指向的内容。保持指向字符串开头的指针并打印它。您将看到所需的行为。
char *s = ptr;
while(*ptr != 0){
..
printf("%s",s);
}
这将打印整个字符串。(您可以注意到您所做的更改)。