到目前为止我已完成此代码,但我没有得到最终输出(空白)。
我期望的输出是当我放置字符串Hello World
并将o
替换为i
时,字符串将为Helli Wirld
。但是我在最后的输出中什么都没有。
char * substitute(char *, char, char);
int main(void){
char arr[255];
char i,j;
printf("Enter a string: ");
gets(arr);
printf("Find a char: ");
scanf(" %c", &i);
printf("Replace with: ");
scanf(" %c", &j);
printf("Final output: ");
printf("%s", substitute(arr, i, j));
return 0;
}
char * substitute(char *data, char find, char replace){
while(*data!='\0'){
if(*data==find){
*data=replace;
}
data++;
}
return data;
}
答案 0 :(得分:3)
在substitute()
中,您返回已在data
循环中递增的指针while
,现在它指向终止'\0'
,这就是您{{1} }}。
您可以使用单独的局部变量来遍历字符串,或者根本不使用printf()
的返回值并替换
substitute()
通过
printf("%s", substitute(arr, i, j));