gpt4 book ai didi

c - C 中的指针和数组

转载 作者:行者123 更新时间:2023-12-04 11:54:16 25 4
gpt4 key购买 nike

我是 C 语言和编程的新手。我被困在家庭作业练习中。我的输出只显示大写的第一个字符,以及一些奇怪数字的后续字符。有人可以看看我的代码并给我一些提示,说明我做错了什么以及解决问题的方法吗?非常感谢您的帮助!

“编写一个函数 void sticky(char* word),其中 word 是单个单词,例如“sticky”或“RANDOM”。sticky() 应该修改单词以显示为“sticky caps”(http://en.wikipedia.org/wiki/StudlyCaps),也就是说,字母必须交替大小写(大写和小写),第一个字母以大写开头。例如,“sticky”变成“StIcKy”,“RANDOM”变成“RaNdOm”。注意结尾字符串,用 '\0' 表示。您可以假设将合法字符串提供给 sticky() 函数。”

#include <stdio.h>
#include <stdlib.h>

/*converts ch to upper case, assuming it is in lower case currently*/
char toUpperCase(char ch)
{
return ch-'a'+'A';
}

/*converts ch to lower case, assuming it is in upper case currently*/
char toLowerCase(char ch)
{
return ch-'A'+'a';
}

void sticky(char* word){
/*Convert to sticky caps*/

for (int i = 0; i < sizeof(word); i++)
{
if (i % 2 == 0)
{
word[i] = toUpperCase(word[i]);
}
else
{
word[i] = toLowerCase(word[i]);
}
}

int main(){
/*Read word from the keyboard using scanf*/
char word[256];
char *input;
input = word;
printf("Please enter a word:\n");
scanf("%s", input);

/*Call sticky*/
sticky(input);

/*Print the new word*/
printf("%s", input);

for (int i = 0; i < sizeof(input); i++)
{
if (input[i] == '\n')
{
input[i] = '\0';
break;
}
}

return 0;

最佳答案

您需要使用 strlen 而不是 sizeof 来查找 char* 字符串的长度

关于c - C 中的指针和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15648531/

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