これは私が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,);
あなたは問題のエラーレポートを含めHACEする必要があり、それが起こっているのかを確認する方が簡単です。
あなたはあなたのコードにいくつかの問題を持っている:
は「^^」の文字が、2文字の文字列ではありません。 '^'は文字です。それが「マルチチャーター」エラーの理由です
あなたはSpacePlugの中で「Ch」を使用していません。置換文字はハードコードされています。私はいつも '^^'、存在しない。
mainで関数が正しく呼び出されていません。パラメータがありません。
今解決してください。私が理解したところでは、 "SpacePlug"は文字列内のすべてのスペース、最初のパラメータを見つけようとし、それらを2番目のパラメータである文字に置き換えようとします。次のコードはうまく動作します:
#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(構文エラーあり)のようです。なぜC++タグを追加したのですか? – Olaf
私は誰の助けも受け入れるだろうから。 –
タグは注目を集めるのではなく、質問を並べ替えることです!サイトのルールに従い、[ask]を読んでください。 CとC++は**異なる**言語です。 – Olaf