詳解C語言在字串的指定位置插入字元
問題分析
在字串S的所有數字字元前加一個$字元,可以有兩種實現方法。
方法一:用串S拷貝出另一個串T,對串T從頭至尾掃描,對非數字字元原樣寫入串S,對於數字字元先寫一個$符號再寫該數字字元,最後,在S串尾加結束標誌。使用此方法是犧牲空間,贏得時間。
方法二:對串S從頭至尾掃描,當遇到數字字元時,從該字元至串尾的所有字元右移一位,在該數字字元的原位置上寫入一個$。使用此方法是節省了空間,但浪費了時間。
本題採用方法一,下面是完整的程式碼:
#include <stdio.h>
int fun(char *s)
{
char t[80];
int i, j;
for(i=0; s[i]; i++) /*將串s拷貝至串t*/
t[i]=s[i];
t[i]='\0';
for(i=0,j=0; t[i]; i++)
/*對於數字字元先寫一個$符號,再寫該數字字元*/
if(t[i]>='0' && t[i]<='9')
{
s[j++]='$';
s[j++]=t[i];
}
/*對於非數字字元原樣寫入串s*/
else
s[j++]=t[i];
s[j]='\0'; /*在串s結尾加結束標誌*/
return 0;
}
int main()
{
char s[80];
printf ( "Enter a string:" );
scanf ("%s", s); /*輸入字串*/
fun(s);
printf ("The result: %s\n", s); /*輸出結果*/
return 0;
}