gpt4 book ai didi

c - 函数 SpacePlug 将一个指向字符串的指针和另一个字符作为参数。

转载 作者:行者123 更新时间:2023-11-30 19:34:46 25 4
gpt4 key购买 nike

void SpacePlug(char *StringPtr, char Ch)
{
int i = 0;
while (*(StringPtr + i)!= '\0')
{
if (*(StringPtr + i)== ' ')
{
*(StringPtr + i ) = '^^';
printf("%c",*(StringPtr + i));
}
i++;
}
}
int main()
{
char a[]= "Alton Tait";
SpacePlug(a,);
}

功能是将字符串中的每个空格替换为字符。在main中,使用SpacePlug我想用 ^^ 替换 alton tait 之间的空格,所以它应该是 alton^^tait这就是我想出的,我不能,我想知道我哪里错了。谢谢

最佳答案

这是我尝试使用 gcc 编译代码时得到的输出:

In function 'SpacePlug':
8:33: warning: multi-character character constant [-Wmultichar]
*(StringPtr + i ) = '^^';
^
8:33: warning: overflow in implicit constant conversion [-Woverflow]
In function 'main':
17:17: error: expected expression before ')' token
SpacePlug(a,);

您应该在问题中包含错误报告,这样更容易了解发生了什么。

您的代码存在一些问题:

  • “^^”不是一个字符,而是一个2个字符的字符串。 '^' 是一个字符。这就是“多字符”错误的原因

  • 您没有在 SpacePlug 中使用“Ch”。替换字符是硬编码的。我总是“^^”,它不存在。

  • 该函数未在 main 中正确调用。它缺少一个参数。

现在来看看解决方案。我的理解是,“SpacePlug”尝试查找字符串(第一个参数)内的所有空格,并将它们替换为字符(第二个参数)。下面的代码就可以很好地工作:

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

void SpacePlug(char *StringPtr, char Ch, char *newString)
{
for (int i = 0; i < strlen(StringPtr); i++)
{
if (StringPtr[i] == ' ')
{
newString[i] = Ch;
}
else
{
newString[i] = StringPtr[i];
}
}
}
int main()
{
char *a = "Alton Tait";
char replace = '^';
char *newString = (char *)malloc(strlen(a) + 1); // the +1 is for the null terminator
SpacePlug(a, replace, newString);
printf("%s\n", newString);

free(newString);
}

干杯。

关于c - 函数 SpacePlug 将一个指向字符串的指针和另一个字符作为参数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440248/

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