【发布时间】:2017-02-17 10:39:26
【问题描述】:
我有一个充满 * 字符的数组。我需要将数组中的任何字符替换为用户输入的另一个字符。可能吗?我会很感激任何建议。谢谢
#include <stdio.h>
#include <string.h>
strreplace(char[],char,char);
int main()
{
char s[17]="* * * *\n* * * * ";
char chr,repl_chr;
printf("%s", s);
printf("\nEnter character to be replaced: ");
chr=getchar();
fflush(stdin);
printf("\nEnter replacement character: ");
repl_chr=getchar();
printf("\nModified string after replacement is: \n");
strreplace(s,chr,repl_chr);
getch();
return 0;
}
strreplace(char s[], char chr, char repl_chr)
{
int i=0;
while(s[i]!=' ')
{
if(s[i]==chr)
{
s[i]=repl_chr;
}
i++;
}
puts(s);
return 0;
}
【问题讨论】:
-
正确理解:您希望所有次出现的第一个输入字符替换为第二个输入字符?例如,如果用户输入
*被-替换,那么程序应该输出"- - - -\n- - - - ",是吗? -
但是有一个问题:因为 char 数组只包含可替换的
*(strreplace显然会忽略空格),所以用户输入的任何其他字符(例如a,b,c,-, ...) 在该数组中找不到,因此无法替换任何内容。 -
并不是我的显示应该看起来像两行四列的那些 - 符号。使用可以替换数组中的任何字符。假设用户想用 B 替换第三个 - 那么它看起来像这样 - - B - \n - - - -。他必须输入他想在数组中为他想要的另一个字符替换哪个元素。
-
这当然是一个关键信息:因此用户不必指定要替换的字符,而是指定该字符在源字符串中的坐标是什么。
-
是的!可以这样做吗?还是有其他方法可以做到这一点?
标签: c arrays input replace character