【问题标题】:Replacing characters in a string using pointers使用指针替换字符串中的字符
【发布时间】:2018-02-03 04:26:46
【问题描述】:

我应该编写一个程序,将字符串中的元音替换为数字,不使用和使用指针

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

【问题讨论】:

  • 请将代码格式化为代码。

标签: c arrays string pointers character


【解决方案1】:

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

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

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

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

【讨论】:

  • 这很有意义!非常感谢!我肯定需要另一个头脑来帮助我找到我的错误:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多