• ベストアンサー

ポインタのポインタ

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv){ int i; if(argc != 2) { fprintf(stderr, "Usage: %s vector\n\tEx: %s 11110000\n", argv[0], argv[0]); return 1; } for(i=0;i<8;i++){ if(**argv == '0'){ printf("%d\n",i); } else{ printf("A%d\n",i); } argv++; } return 0; } コンパイルして./a.exe 10010011などと入力しても A0 A1 Segmentation Faultとなります。 どうすれば、 A1 0 ・・・省略 for文で回した8回分、出力が可能になるのか教えてください。 初歩的な質問ですいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • keibou21
  • ベストアンサー率31% (18/58)
回答No.1

for(i=0; i<8; i++) { if(argv[1][i] == '0') { // ほにゃほにゃ } else { // こねこね } }

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

ポインタ使うなら if(*argv[1] == '0') argv[1]++; かな

noname#77475
質問者

お礼

期待通りの結果が出ました。 php504さん、ありがとうございました。

  • baber
  • ベストアンサー率18% (17/92)
回答No.2

「if(**argv == '0'){」のところが問題でしょう。 argv[0]は起動コマンド名になるので、argv[1]を指定しないと期待通りには動作しないですよ。

関連するQ&A