ページ 11

main関数の引数argvとcharについて

Posted: 2022年5月18日(水) 22:27
by ハシビロコウ
入力として英語大文字または数字を受けてとるというプログラムのメイン関数について

コード:


int main(int argc, char *argv[])
{
	char c = argv[1][0];
}
という部分はargv[1]でないのはなぜですか?

Re: main関数の引数argvとcharについて

Posted: 2022年5月18日(水) 23:38
by box
argvはchar型の配列へのポインターだからです。
argv[1]はchar型の配列の要素であり、型はchar *です。

Re: main関数の引数argvとcharについて

Posted: 2022年5月18日(水) 23:52
by box
argvはchar型の配列へのポインターだからです。
argvはchar型へのポインターの配列、と言った方が正確だったかな?

Re: main関数の引数argvとcharについて

Posted: 2022年5月19日(木) 01:38
by box
こんなサンプルコードをコマンドプロンプトかどこかで
実行ファイル名 hoge foobar <enter>
みたいに実行してみると、何か体感できるかもしれません。

コード:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int i, j;

    for (i = 1; i < argc; i++) {
        printf("%s\n", argv[i]);
        for (j = 0; j < strlen(argv[i]); j++) {
            putchar(argv[i][j]);
            putchar('\n');
        }
        putchar('\n');
    }
	return 0;
}

Re: main関数の引数argvとcharについて

Posted: 2022年5月19日(木) 14:40
by あたっしゅ
東上☆海美☆「
> char c = argv[1][0];

char c と argv[ 1 ] を生かすなら

char c = *( argv[ 1 ] );

みみ。

コード:

#include <stdio.h>
#include <string.h>


int main(int argc, char *argv[])
{
    char c = *( argv[ 1 ] );

    putchar(c);
    putchar('\n');

    return 0;
}