2015-09-27 33 views
2

我有这个程序要求用户输入字符串和两个字符。一个字符将被替换,另一个字符将替换旧字符。我调用一个名为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; 
     } 
    } 
} 
+2

'的scanf( “%C”,与oldChar);' - >'的scanf( “%C”,与oldChar); getchar();' – BLUEPIXY

+0

Wooaahh。试过了。有效。谢谢:D – fixotherm

+2

或'scanf(“%c”,&newChar);' - >'scanf(“%c”,&newChar);'。 –

回答

1

请试试这个,我觉得都有getchar丢失:

printf("Enter a character to replace: "); 
scanf("%c", &oldChar); 
getchar(); 

printf("Replace character with?: "); 
scanf("%c", &newChar); 
getchar(); 
相关问题