我刚开始学习编程,从C开始,我只是在闲逛,试图制作一个函数,将字符串中的字母从大写更改为全小写,然后以小写字母数组返回。。。
我的代码不起作用。我厌倦了谷歌搜索。有人能帮帮我吗?
以下是我到目前为止所拥有的:
#include <ctype.h>
#include <cs50.h>
#include <stdio.h>
#include <string.h>
string lowercase(char inlower[]);
int main(void)
{
string word = get_string("Type in a word: ");
char inlower[strlen(word)];
printf("You typed: %sn", word);
}
string lowercase(string word)
{
for (int i = 0, len = strlen(word); i < len; i++)
{
inlower[i] = tolower(word[i]);
// printf("%c", inlower[i]);
}
return inlower[];
}
您需要处理word
并返回word
,而不是word[]
。inlower
是main
的本地,不能在lowercase
中使用,除非将其作为参数与word
一起传递。
还要注意,在将char[]
(string
(中的char
与tolower
一起使用之前,应将其强制转换为unsigned char
。如果char
是有符号的,而char[]
包含负值,则调用tolower
将导致未定义的行为。
#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
string lowercase(string word)
{
for (unsigned i = 0, len = strlen(word); i < len; i++)
{
word[i] = tolower((unsigned char) word[i]);
}
return word;
}
int main(void)
{
string word = get_string("Type in a word: ");
printf("You typed: %sn", lowercase(word));
}
如果你确实想把你在main
中声明的小写单词放在inlower
中,你还需要让它足够大,以容纳你在word
中的内容。strlen(word)
短一个char
,因为每个字符串都必须以