使用指针替换字符串中的字符

时间:2018-02-03 04:26:46

标签: c arrays string pointers character

我应该制作一个程序,用数字代替字符串中的元音,而不使用和使用指针

我在每个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);
}

1 个答案:

答案 0 :(得分:1)

使用%s printf格式说明符递增指针并打印指向的内容。保持指向字符串开头的指针并打印它。您将看到所需的行为。

char *s = ptr;
while(*ptr != 0){

 ..
 printf("%s",s);
}

这将打印整个字符串。(您可以注意到您所做的更改)。