ソースcharのインスタンスを置換charに置き換えるreplacechar関数を作成しました。この関数は、文字列が期待どおりに変更されるという点で機能しますが、関数の戻り値を使用しようとすると、putsは空白行を出力するだけです。
誰かが何が起こっているのか、そして私が修正するためにreplacecharで何を変更する必要があるのかを説明してもらえますか?
#include <stdio.h> /* puts */
#include <string.h> /* strcpy */
#include <stdlib.h> /* malloc, free */
char* replacechar(char* s, char ch1, char ch2) {
while (*s) {
if (*s == ch1)
*s = ch2;
*s++;
}
return s;
}
int main()
{
char* s = malloc(8);
strcpy(s, "aarvark");
puts(replacechar(s, 'a', 'z')); /* prints blank line */
puts(s); /* prints zzrvzrk as expected */
free(s);
return 0;
}
すべての回答をありがとう。
私はこれに変更しました(これは現在正常に動作しています)。
char* replacechar(char* s, char ch1, char ch2) {
char* p = s;
while (*p) {
if (*p == ch1)
*p = ch2;
p++;
}
return s;
}