0

strcmp を使用して、char 配列で特定の文字を検索したいと考えています。たとえば、テキストのどこにあるインデックス番号を検出したいと思い.ます。

char host[100] = "hello.world";
size_t i=0;
for(i=0;i<strlen(host);i++){
   if(strcmp(host[strlen(host)-i], ".")){
        printf("%d\n",i);
   }
}

ただし、出力します"passing argument 1 of 'strcmp' makes pointer from integer without a cast "。char 配列が int であることに気付きましたが、char インデックスを渡す方法がわかりませんでした。この機能をどのように使用すればよかったのか教えてください。

4

2 に答える 2

1

この行:

if(strcmp(host[strlen(host)-i], ".")){

次のようになります (char 配列の要素へのポインターを渡すために、アンパサンドが追加されます)。

if(strcmp(&host[strlen(host)-i], ".")){

ただし、他の人がすでに指摘しているように、それstrcmpはこのタスクに最適なツールではないのは事実です。strchr独自のループをロールしたい場合は、「==」演算子を使用して文字を比較するか、単に比較することができます。

于 2013-07-14T13:01:46.587 に答える