C言語の文字列操作を調べていてmemchr()という関数を知ったのですが、使い方の例を見て疑問を覚えました(コードが動くことは確認しました)。
以下のコードがその使用例なのですが、
- p はポインタなので printfで出力するときは %p を使わないとエラーになる、と思っていたのですが、なぜこのコードは動作するのでしょうか?
- また、なぜ p-str で文字の位置を得られるかが解らないのですが、この部分はなにをしているのでしょう? ポインタ同士の引き算が int 型になっているように見えて、よく理解できませんでした。
以上、よろしくお願い致します。
###memchr()の使用例のコード
C
1#include<stdio.h> 2#include<string.h> 3 4int main(void){ 5 char str[] = "abcdef\0ghij"; 6 char *p; 7 8 p = memchr(str, 'i', 12); 9 printf("iは文字列の%d番目\n",p - str); 10 11 return 0; 12}
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/11 04:59