みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ポインタのポインタ

#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回分、出力が可能になるのか教えてください。
初歩的な質問ですいません。

投稿日時 - 2006-12-08 15:44:38

QNo.2587987

すぐに回答ほしいです

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

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

投稿日時 - 2006-12-08 16:03:03

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

argv[1]++;
かな

投稿日時 - 2006-12-08 16:09:23

お礼

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

投稿日時 - 2006-12-08 17:40:10

ANo.2

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

投稿日時 - 2006-12-08 16:09:21