C语言 因为s是字符串而不是字符,所以有什么错误?

eqoofvh9  于 2023-02-07  发布在  其他
关注(0)|答案(1)|浏览(96)
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

string replace(string s);

int main(void/*int argc, string argv[]*/)
//int main(string)
{
printf("%s\n", replace);
//return 0;
}

string replace(string s)
{
    //string s;
    int n;
    s = get_string("Please type the word: ");
    //s = tolower(s[i]);
    n = strlen(s);
    for (int i = 0; i < n; i++)
    {
        switch(tolower(s[i]))
        {
            case 'a' :
            s[i] = '6';
            continue;
            case 'e' :
            s[i] = '3';
            continue;
            case 'i' :
            s[i] = '1';
            continue;
            case 'o' :
            s[i] = '0';
            continue;
            case 'u' :
            s[i] = 'u';
            continue;
            //default :
            //printf("default");
        }
    }
    return s;
    //printf("%c\n", s[0]);
    //n = strlen(s);
    //printf("%i\n",n);
    //printf("%s\n", s);
    //printf("%s\n", s);
    //return 1;
}

用数字替换元音。代码给我错误,就好像s是字符一样。如何修复这个问题?

fxnxkyjh

fxnxkyjh1#

正如注解中所指出的,您没有在main中 * 调用 * replace。您只是将函数本身传递给printfprintf衰减为一个指针,几乎可以肯定printf不应将该指针视为字符串。提示未定义的行为。
您让replace接受string参数,但随后立即忽略传入char*的参数。该参数没有任何作用,应删除以保留string replace(void)

相关问题