文字列の文字を置き換えるプログラムを作成しました。エラーはありませんが、出力は期待どおりではありません。それで私を助けてください。Cで別の文字に置き換えるプログラム
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<string.h>
void replace(char s,char d);
char a[100];
int main()
{
char b,r;
printf("enter the string\n:");
gets(a);
printf("enter the the letter to be replaced\n:");
scanf("%c", &b);
printf("enter the letter to be replaced with\n:");
scanf("%c", &r);
replace(b,r);
}
void replace(char s, char d)
{
int i,f=0;
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] == s)
{
a[i] = d;
f = 1;
}
}
if (f == 0)
{
printf("letter not found");
}
}
出力
enter the string
:hello every one
enter the the letter to be replaced
:e
enter the letter to be replaced with
:letter not found
私はOで電子を交換したかったが、私は
UPDATE にこのループを使用することを交換する単語の入力を与えることができないのですscanf
を使用しているときに入力バッファの問題を取り除いてください。しかし、私のプログラムにそれを実装する方法がわかりませんhel P
void
clear(void)
{
while (getchar() != '\n')
;
}
'scanf("%c "、&r)'は実際には改行を指すstdinで呼び出されます。行の終わりまで正しく読み込む方法の詳細については、http://stackoverflow.com/q/7898215/1084879を参照してください。 – zapstar
@zapstar私はそれを持って、それはループを書くと言った 'void clear(void) { while(getchar()!= '\ n'); } '私のプログラムに実装する方法 –
これはWindows上で動作するかわかりません。通常、代わりに 'scanf("%c%* c "、&r)'を使用します。 – zapstar