1. 程式人生 > >詳解C語言在字串的指定位置插入字元

詳解C語言在字串的指定位置插入字元

詳解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;
}