【发布时间】:2015-12-24 15:33:28
【问题描述】:
我有这个程序要求用户输入一个字符串和两个字符。一个要替换的字符,另一个将替换旧的字符。我调用了一个名为replace() 的函数,它循环遍历字符串,查找旧字符并将其替换为新字符。它在main() 中打印新字符串,但它不能正常工作。我做错了什么?
#include <stdio.h>
#include <string.h>
void replace(char string[], char old, char new);
int main()
{
char input[100], newChar, oldChar;
char newstr[100];
printf("Enter a string: ");
fgets(input, 100, stdin);
printf("Enter a character to replace: ");
scanf("%c", &oldChar);
printf("Replace character with?: ");
scanf("%c", &newChar);
getchar();
replace(input, oldChar, newChar);
printf("Result: %s\n", input);
}
void replace(char string[], char old, char new)
{
int length = strlen(string);
int i = 0;
for(i=0; i<length; i++)
{
if(string[i] == old)
{
string[i] = new;
}
}
}
【问题讨论】:
-
scanf("%c", &oldChar);-->scanf("%c", &oldChar);getchar(); -
哇哦。试了一下。有效。谢谢:D
-
或
scanf("%c", &newChar);-->scanf(" %c", &newChar);. -
请注意,最基本的调试技术之一是“打印输入以确保得到预期的结果”。如果你打印了字符,你就会发现问题。
-
@CoolGuy 怎么换成空格?