大写到小写



我刚开始学习编程,从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[]inlowermain的本地,不能在lowercase中使用,除非将其作为参数与word一起传递。

还要注意,在将char[](string(中的chartolower一起使用之前,应将其强制转换为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,因为每个字符串都必须以char结束。

string lowercase(string inlower, string word)
{
unsigned i = 0;
for (unsigned len = strlen(word); i < len; i++)
{
inlower[i] = tolower((unsigned char) word[i]);
}
inlower[i] = '';
return inlower;
}
int main(void)
{
string word = get_string("Type in a word: ");
char inlower[strlen(word) + 1]; // correct size
lowercase(inlower, word); // pass `inlower` in to `lowercase` too
printf("You typed:    %sn"
"In lowercase: %sn", word, inlower);
}

不在lowercase中执行strlen的替代版本:

string lowercase(string inlower, string word)
{
string dest = inlower;
for(;*word; ++word, ++dest)
{
*dest = tolower((unsigned char) *word);
}
*dest = '';
return inlower;
}

相关内容

  • 没有找到相关文章

最新更新