1

私は現在、 strcpy() function の別の種類の動作で立ち往生しているプログラムを書いています。ここに短いデモがあります...

私は次の質問をしました:C文字列から最初と最後の文字を取り除きます

//This program checks whether strcpy() is needed or not after doing the modification in the string 
#include <stdio.h>
#include <string.h>

int main()
{
        char mystr[] = "Nmy stringP";
        char *p = mystr ;
        p++;

        p[strlen(p)-1] = '\0';
        strcpy(mystr,p);
        printf("p : %s mystr: %s\n",p,mystr);

}

出力:-

p : y strnng mystr: my strnng

strcpy() 関数を使用しない場合、取得します

p : my string mystr : Nmy string 

なぜこうなった ??

4

2 に答える 2

9

標準は次のように述べています。

7.24.2.3

重複するオブジェクト間でコピーが行われる場合、動作は未定義です。

memmoveまたは別の方法をまったく使用できます。

于 2013-04-08T04:34:01.620 に答える