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,);
}
函数是用字符替换字符串中的每个空格。主要使用SpacePlug 我想用^^替换alton tait之间的空间,所以它应该是alton ^^ tait 多数民众赞成我想出来的我不知道我想知道我哪里出错了。谢谢
答案 0 :(得分:0)
'^^'
不是角色。它是一个多字符常量which is not portable。
您的代码适用于单字符替换,即
SpacePlug(a, '^');
您还需要将打印移出if
:
int i = 0;
while (*(StringPtr + i)!= '\0')
{
if (*(StringPtr + i)== ' ')
{
*(StringPtr + i ) = '^';
}
printf("%c", *(StringPtr + i));
i++;
}
要替换多个角色,您需要采用完全不同的方法:
char*
替换答案 1 :(得分:0)
这是我尝试使用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);
}
干杯。