現在、ヒストグラムのプログラムを作成しています。
まず0~255の1000個の乱数ファイルdata.txtを読み込み、
ヒストグラムは出来たのですが、
エクセルでグラフを作りたいので、
data1.txtに書き込みたいので、下のソースでやってみましたが、
0~255のカウントが全部0になってしまします。
fp = fopen("data1.txt","w");が無ければ正常に処理されます。
どうか教えてください。よろしくお願いします。
#include <stdio.h>
#define BUF 10
#define MAX 256
void count(FILE *fp , int* counter);
int main(void)
{
FILE *fp;
fp = fopen("data.txt","r");
fp = fopen("data1.txt","w");
int counter[MAX];
int i;
for(i=0 ; i<MAX ; i++)
{
counter[i] = 0;
}
count(fp , counter);
for(i=0 ; i<MAX ; i++)
{
printf("%d %d\n" , i, counter[i]);
}
fclose(fp);
return 0;
}
void count(FILE* p_file , int* counter)
{
char buf[BUF];
while (fgets(buf , BUF , p_file) != NULL)
{
int n;
sscanf(buf , "%d" , &n);
counter[n]++;
}
}
No.3
- 回答日時:
あっ、失礼しました^^;
わたしが意味を取り違えておりました。申し訳ありません。
以下のようですねかね(n が 0 以上、MAX 未満かなどはチェックしてませんが)。
====
#include <stdio.h>
#define MAX 256
int main(void)
{
FILE *fp = fopen("data.txt", "r");
int counter[MAX] = { 0 };
int i, n;
while (fscanf(fp, "%d", &n) == 1) ++counter[n];
fclose(fp);
fp = fopen("data1.txt", "w");
for (i = 0; i < MAX; ++i) fprintf(fp, "%d %d\n", i, counter[i]);
fclose(fp);
return 0;
}
No.2
- 回答日時:
ほんとにきちんと読めてますか?count()内でcounter[n]++; としているのとか。
。それに、書き出し用にオープンしているのに、書き出すときに標準出力に出しているようですし。。。エラー処理をしないとして、やりたいことは、===
#include <stdio.h>
#define MAX 256
int main(void)
{
FILE *fp = fopen("data.txt", "r");
int counter[MAX] = { 0 };
int i, n = 0;
for (i = 0; i < MAX; ++i) {
if (fscanf(fp, "%d", counter + i) != 1) break;
++n;
}
fclose(fp);
fp = fopen("data1.txt", "w");
for (i = 0; i < n; ++i) fprintf(fp, "%d %d\n", i, counter[i]);
fclose(fp);
return 0;
}
===
こんな感じですか?読み込んだ個数をカウントしているので、counter の0での初期化は必要ありませんけどね(int counter[MAX]; で十分)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でファイル読み書きを早く...
-
複数ファイルの同時読み込みの...
-
ファイル出力で改行を入れたい!
-
【C言語について】ファイル名の...
-
C言語でセグメンテーションエ...
-
テキストファイル内に対して, ...
-
fread()エラー
-
C言語におけるファイル読み込み...
-
初心者のc言語
-
音声データを出力するCプログラ...
-
急!【数列のヒストグラム作成...
-
c言語による画像処理について
-
CSVファイルの内容を構造体に格...
-
ファイルに行番号を追加
-
fopenの追記モードについて
-
test.csvの内容
-
C言語でファイルの内容を strto...
-
VisualStudioでのファイルの入...
-
c言語でのfscanfについて
-
同時にファイル読み込み 書き込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ガンマ変換 C言語でプログラ...
-
c言語でのfscanfについて
-
なぜCSQとCIP形式ではコ...
-
複数ファイルの同時読み込みの...
-
fopenでファイル名に、変数を使...
-
ファイル出力で改行を入れたい!
-
ファイルへの書込み処理が異常...
-
【C言語】ファイルを読み込んで...
-
エラーがわかりません、、
-
C言語でセグメンテーションエ...
-
C言語でファイル読み書きを早く...
-
テキストファイル内に対して, ...
-
fgets( ) の返り値は何?
-
ファイルに行番号を追加
-
OpenGLによる描画内容をBMP出力
-
fscanfでループしてしまう。
-
c言語 ファイルから数字を読み...
-
ファイルが読み込めない・・・
-
CRC32の計算方法
-
CSVファイルの内容を構造体に格...
おすすめ情報