下面是一個問題,我們需要用另一個新字符串替換字符串中所有字符的出現。 下面給出的是這樣一個問題:無法用另一個字符串替換字符串中的字符
編寫一個程序,替換給定字符的發生(比如C) 在主字符串(說PS)與另一個字符串(比如S)。
輸入: 第一行包含在主串(PS) 下一行包含一個字符(C) 下一行包含一個字符串(或多個)
輸出: 打印串PS與每一個發生c被s代替。
NOTE: - PS或s中沒有空格。 - PS的最大長度爲100 - S的最大長度爲10
下面是我的代碼:
#include<stdio.h>
int main()
{
char ps[100],*ptr,c,s[10];
printf("Enter any string:");
gets(ps);
printf("Enter the character you want to replace:");
scanf("%c",&c);
printf("Enter the new string:");
fflush(stdin);
scanf("%s",&s);
ptr=ps;
while(*ptr!='\0')
{
if(*ptr==c)
*ptr=s;
ptr++;
}
printf("Final string is:");
puts(ps);
return 0;
}
我不能用字符串替換字符。它只是給我一個垃圾輸出而不是我想要替換的角色。
但是,當我將它聲明爲字符時,輸出與預期的一樣。它用另一個角色代替角色。
你能幫我解決嗎?
'fflush(stdin)'和'gets()'...都是壞的。 –
你看到的'垃圾'可能是一個內存地址... –
我建議將結果字符串寫入一個新的'char'數組。 'c'中的數組不會自動調整大小。即使你正確地用字符串's'替換字符'c',如果's'多於一個字符長度,它將覆蓋'ps'中的字符,這不是你想要的。你當然可以在陣列中移動角色來爲新陣列騰出空間,但這會比編寫一個新陣列更困難的編碼方式。 – yano