-2

char *p があり、p に「これは簡単ではありません」というフレーズがあるとします。最後に null で終了します。p を検索したいのですが、「s」に遭遇した場合は、他の文字を削除せずに代わりに「101」を入力したいと考えています。したがって、この例では、p は「これは簡単ではありません」に由来します。「hi101 i101 ない ea101y」に。また、ヘッダー stdio.h、stdlib.h、および string.h のみを使用できます。

char q[] = "s";
char r[] = "101";
    for(int j = 0; s[j]!='\0'; j++){
        if(s[j]==q[0]){
            int temp = 0;
            s[j] = r[temp];
            temp++;
            int temp2 = j;
            while(temp<3){
                for(int k = length; k>j+1; k--){
                    s[k]=s[k-1];

                }
                s[j] = r[temp];
                temp++;
                j++;                    
            }
            j = temp2;
        }
    }
}

s は、先ほど「これは簡単ではありません」と述べた文字列です。

現在取得している出力は「thi011 i011 not ea」であり、正しくありません。

4

1 に答える 1

1

最初に "s" (1) と "101" (3) の長さを決定します。次に、「s」が出現するたびにすべての文字を 3-1=2 ずつシフトし、「101」を配置します。

もちろん、文字列バッファーが操作に十分な大きさであることを確認する必要があります。

于 2013-10-26T18:18:51.173 に答える