gpt4 book ai didi

c - 如何创建一个改变字符串的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 07:19:48 26 4
gpt4 key购买 nike

我创建了这个程序作为学校的家庭作业。该程序采用用空格分隔的名字和姓氏,然后将名字和姓氏的第一个字符大写并将其余字母更改为小写。

我已经成功地做到了这一点,但我想在函数内更改字母。我以前创建过很多函数,但从未涉及过字符串。正如我所了解的那样,您必须为此目的使用指针,但我不明白究竟是什么方式。

我的程序代码如下:

//The program only accepts first and last name seperated by 1 space.
#define MAX 31


int main()
{
char name[MAX];
int i;

printf("What is your name? (First name and last name only): ");
fgets(name, sizeof(name), stdin);
name[strlen(name)-1] = 0;


for (i=0; i<strlen(name); i++)
{
if (i==0)
name[i]=toupper(name[i]);

else if(name[i] == ' ') {
name[i+1]=toupper(name[i+1]);
i++;
}

else
name[i]=tolower(name[i]);
}

printf("Name = %s\n", name);

return 0;

}

基本上,我想将整个 for 循环 放在一个函数中。我将不胜感激关于这个问题的任何帮助。我也非常感谢任何可能为我提供有关该主题的更多知识的链接或网站。

提前致谢。

最佳答案

没有太多内容:

void myfunc(char name[]) {
int i;
for (i=0; i<strlen(name); i++)
{
if (i==0)
name[i]=toupper(name[i]);

else if(name[i] == ' ') {
name[i+1]=toupper(name[i+1]);
i++;
}

else
name[i]=tolower(name[i]);
}
}

main() 中:

myfunc(name);

在这种情况下,您甚至不必考虑指针。实际上,函数声明中的char name[]会被当作char *name,而myfunc(name)中的name 将衰减为指向字符串第一个字符的指针。但由于字符串以 null 结尾,并且您使用 strlen(),因此代码保持完全相同。

哦,还有一个小提示:你应该把 strlen(name) 从循环中取出来,然后再做。在每次迭代中调用 strlen() 来测试循环条件是不必要且低效的。

关于c - 如何创建一个改变字符串的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com