#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是字符一样。如何修复这个问题?
1条答案
按热度按时间fxnxkyjh1#
正如注解中所指出的,您没有在
main
中 * 调用 *replace
。您只是将函数本身传递给printf
,printf
衰减为一个指针,几乎可以肯定printf
不应将该指针视为字符串。提示未定义的行为。您让
replace
接受string
参数,但随后立即忽略传入char*
的参数。该参数没有任何作用,应删除以保留string replace(void)
。