0

わかりましたので、私はcでプログラミングしていて、文字列が変更されたかどうかを確認したいので、最初にこれを行いました:

 if(strcmp (ax,result)!=0){
    result=ax;
        xil_printf(result);
        xil_printf("detected");
}
    }

それは1回しか検出しないので、2つのポインターを等しくしていることがわかったので、斧のピオンティーが変更されたとしても、両方が同じものを指しているので結果が発生しますが、私はそれを望んでいませんでした文字列 ax はコードの後半で変更されるため、result のデータを ax の ppointee と等しくなるように変更したかったので、いつ変更されたかを検出できます。だから私はこれを試しました:

if(strcmp (ax,result)!=0){
    *result=*ax;
        xil_printf(result);
        xil_printf("detected");
}
    }

とにかく、私がやりたいことを行う方法は、結果のデータをaxと同じにしますが、それらは同じことを指していません:したがって、

ax-->"hello"  adrress: 232
result-->"frog"  adrress: 415

私は彼らが異なっていることを検出し、私はこれを行います:

ax-->"hello"  adrress: 232
result-->"hello"  adrress: 415

しかし、これは好きではありません!:

ax-->"hello"  adrress: 232
result-->"hello"  adrress: 232   <--(they point at same thing which happens when i say result=ax)

アイデアはありますか?

4

1 に答える 1

1

あなたがする必要がありますstrcpy(result, ax);

唯一のことは、結果がaxにwhatsを保存するのに十分なスペースがあることを確認する必要があるということです

だからあなたのコードは

if(strcmp(ax,result) != 0){   // result is different from ax
     strcpy(result, ax);      // copy ax to result
     xil_printf(result);
     xil_printf("detected");
}      
于 2013-04-02T22:33:12.483 に答える