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

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

 詳しくはこちら



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

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


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

No.19318

リングバッファを動的確保
投稿者---北海道(2005/01/19 01:34:33)


指摘していただいたので、改めて投稿させてもらいます。
まず、ソースにリングバッファを作り、コマンドラインからなにか数字を取り込んで、その値の分だけリングバッファを動的確保するプログラムを作りたいです。
(例:(コマンドライン) pattern -n file...)
例を使って説明すると、コマンドラインでnの部分に数字をいれて、その行数だけリングバッファの容量を確保して、file...の末尾n行をリングバッファにいれて表示するプログラムを作りたいです。
まったく見当もつかない状況なのでどなたか教えていただけませんか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:リングバッファを動的確保 19326 επιστημη 2005/01/19 07:39:39
<子記事> Re:リングバッファを動的確保 19329 もぐりん 2005/01/19 08:35:54


No.19326

Re:リングバッファを動的確保
投稿者---επιστημη(2005/01/19 07:39:39)


>まったく見当もつかない状況なのでどなたか教えていただけませんか?

何を?

ファイルの扱い? 領域の動的確保? リングバッファ?


この投稿にコメントする

削除パスワード

No.19329

Re:リングバッファを動的確保
投稿者---もぐりん(2005/01/19 08:35:54)


あなたは本当に【掲示板ご利用上の注意を読みましたか?
読んでいれば、「※環境(OSとコンパイラ)や症状は具体的に詳しく!」
は理解できているはずです。
2度と同じ指摘を受けないように、詳細に説明してください。





この投稿にコメントする

削除パスワード

No.19330

Re:リングバッファを動的確保
投稿者---επιστημη(2005/01/19 09:50:21)


>読んでいれば、「※環境(OSとコンパイラ)や症状は具体的に詳しく!」
>は理解できているはずです。

OSや処理系の絡む話じゃないんだから、そないに怒らいでも。
質問があまりに漠然としていることが問題で。




この投稿にコメントする

削除パスワード

No.19331

Re:リングバッファを動的確保
投稿者---かずま(2005/01/19 10:25:01)


> OSや処理系の絡む話じゃないんだから、そないに怒らいでも。
> 質問があまりに漠然としていることが問題で。

そんなに漠然としているでしょうか? 例も書かれていて、私は質問の意味が
理解できたのでプログラムは簡単に作れました。

最初の質問者の方、このプログラムはあなたの思ったとおりに動きますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void proc(FILE *fp, char **lines, int n)
{
    char buf[1024];  int i = 0, j;

    while (fgets(buf, sizeof buf, fp)) {
        free(lines[i]);
        lines[i] = strdup(buf);
        if (lines[i] == NULL) puts("out of memory"), exit(1);
        if (++i == n) i = 0;
    }
    j = i;
    do {
        if (lines[j])
            fputs(lines[j], stdout), free(lines[j]), lines[j] = NULL;
        if (++j == n) j = 0;
    } while (j != i);
}

int main(int argc, char *argv[])
{
    char **lines;  int n, i;  FILE *fp;

    if (argc < 2 || argv[1][0] != '-')
        puts("pattern -n [file ...]"), exit(1);
    n = atoi(argv[1] + 1);
    if (n <= 0) puts("bad lines"), exit(1);
    lines = malloc(n * sizeof(char *));
    if (lines == NULL) puts("out of memory"), exit(1);
    for (i = 0; i < n; i++) lines[i] = NULL;

    if (argc == 2)
        proc(stdin, lines, n);
    else
        for (i = 2; i < argc; i++) {
            fp = fopen(argv[i], "r");
            if (fp == NULL) printf("can't open %s\n", argv[i]), exit(1);
            proc(fp, lines, n);
            fclose(fp);
        }
    return 0;
}



この投稿にコメントする

削除パスワード

No.19332

Re:リングバッファを動的確保
投稿者---REE(2005/01/19 11:13:42)


>> 質問があまりに漠然としていることが問題で。
>
>そんなに漠然としているでしょうか? 例も書かれていて、私は質問の意味が
>理解できたのでプログラムは簡単に作れました。

“質問”は漠然としていますよ。
私は、どんなプログラムを作りたいのかは分かりましたが、
何を聞きたいのかはさっぱり分かりませんでした。


この投稿にコメントする

削除パスワード

No.19335

Re:リングバッファを動的確保
投稿者---北海道(2005/01/19 13:48:53)


>> OSや処理系の絡む話じゃないんだから、そないに怒らいでも。
>> 質問があまりに漠然としていることが問題で。
>
>そんなに漠然としているでしょうか? 例も書かれていて、私は質問の意味が
>理解できたのでプログラムは簡単に作れました。
>
>最初の質問者の方、このプログラムはあなたの思ったとおりに動きますか?
>ありがとうございます。なんとかできそうです。


この投稿にコメントする

削除パスワード

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