【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21586

コマンドライン引数について
投稿者---pira(2005/06/23 20:28:03)


main関数でコマンドライン引数を用いることができることは理解、できたのですが、自分で作成した関数でコマンドライン引数を用いる場合はどのような入力部、又関数定義にすればいいのでしょうか?

表計算ソフト(簡単な)を作成するのですが、行や列を挿入する場合に以下のようにしなければならなく、行詰まっています。
例えば、
>B3 10
とするとB行3列に値10をいれる感じです。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:コマンドライン引数について 21587 まきじ 2005/06/23 20:45:19
<子記事> Re:コマンドライン引数について 21589 RiSK 2005/06/23 23:38:58


No.21587

Re:コマンドライン引数について
投稿者---まきじ(2005/06/23 20:45:19)


>main関数でコマンドライン引数を用いることができることは理解、できたのですが、自分で作成した関数でコマンドライン引数を用いる場合はどのような入力部、又関数定義にすればいいのでしょうか?

コマンドライン引数は、main でしか受け取れません。
他の関数で、コマンドライン引数の値が必要であれば、main で
受け取った値を、その関数に引数として渡してやればよい。


この投稿にコメントする

削除パスワード

No.21588

Re:コマンドライン引数について
投稿者---pira(2005/06/23 23:33:45)


自分が今ぶつかっているのは、
プログラム起動後、Unixのコマンドのような感じでコマンドを入力し、必要ならばそれに引数をつけるというものなのですが。

そういう場合は、コマンドライン引数(?)とはいわないんですかね?

では、どういう風にコマンドを認識したらよいのかぜひアドバイスをください。


この投稿にコメントする

削除パスワード

No.21592

Re:コマンドライン引数について
投稿者---まきじ(2005/06/24 00:10:59)


>プログラム起動後、Unixのコマンドのような感じでコマンドを入力し、必要ならばそれに引数をつけるというものなのですが。
>そういう場合は、コマンドライン引数(?)とはいわないんですかね?

例えば、コマンドが "ls" で 引数が "-al" の時、"ls -al" と実行します。
引数の "-al" は、main の引数、argv[1] で取得が可能です。
先ほども、言いましたが、その引数 "-al" が、main 以外の
関数で必要なら、その関数に引数として渡してやれば良いと思います。


この投稿にコメントする

削除パスワード

No.21589

Re:コマンドライン引数について
投稿者---RiSK(2005/06/23 23:38:58)


>main関数でコマンドライン引数を用いることができることは理解、できたのですが、
>自分で作成した関数でコマンドライン引数を用いる場合は
>どのような入力部、又関数定義にすればいいのでしょうか?

fgets, scanf などで入力を受け付け,自分で入力された文字列を解析します。

>表計算ソフト(簡単な)を作成するのですが、行や列を挿入する場合に以下のようにしなければならなく、行詰まっています。
>例えば、
>>B3 10
>とするとB行3列に値10をいれる感じです。

おもしろそうなので,細かい仕様は自己補完して,
簡易版作ってみました。

セルはa0からz9までが有効です。
途中の//注釈区切りを消せば,a0からZ9までが有効になります。

なお,質問や要望には応えませんのであしからず。

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

#define LOWER "abcdefghijklmnopqrstuvwxyz"
#define UPPER "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define ALPHA LOWER // UPPER

#define ALPAH_LEN (sizeof(ALPHA)-1)

int Alpha2Int(int c) {
    const char * const s = ALPHA;
    const char * p = strchr(s, c);
    return p == NULL ? 0 : p - s;
}

int CommandLine(char * col, char * row, int * value) {
    putchar('>');
    if (scanf(" %c%c%d", col, row, value) != 3) return 0;
    return 1;
}

void PrintTable(int table[][ALPAH_LEN], int row) {
    int i, j;
    for (i = 0; i < row; ++i) {
        for (j = 0; j < ALPAH_LEN; ++j) printf("%2d ", table[i][j]);
        putchar('\n');
    }
}

int main(void) {
    char col, row;
    int value, table[10][ALPAH_LEN] = {0};
    while (CommandLine(&col, &row, &value)) {
        if (!isalpha(col)) continue;
        if (!isdigit(row)) continue;
        col = (char)Alpha2Int(col);
        row -= '0';
        table[row][col] = value;
        PrintTable(table, 10);
    }
    return 0;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧