c言語でキーボードから入力した16進数2桁の乗算表(下)をバイナリーでdatファイルに出力する方法を教えてください!
初心者すぎてあまり理解できていません。申し訳ないです。
1 2 3 4 5 6 7 8 9 A B C D E F 10
2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 20
3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30
4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40
5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50
6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60
7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70
8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80
9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90
A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0
B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 B0
C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0
D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0
E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0
F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0
10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100
(実際は縦、横は綺麗に揃っています)
自分が考えたプログラム
どこかでstrcat関数を使いたいと考えています。
キーボード入力は行頭にピリオドを入力したら終了するようにしています。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STEP 10000
int
main(void)
{
FILE *fp;
double *p1;
int n, ndata;
char buf[200];
int a, b, c, d, e, f, g, h, j, k, l, m, o, p, q, r, x;
while ((x = getchar() != ',')) {
fgets(buf, 200, stdin);
sscanf(buf, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %", &a, &b, &c, &d, &e, &f, &g, &h, &j, &k, &l, &m, &o, &p, &q, &r);
}
p1 = buf;
p1 = malloc(STEP * sizeof(double));
if ((fp = fopen("NUMBERS.dat", "wb")) == NULL) {
perror("fopen");
exit(1);
}
ndata = 0;
while ((n = fread(p1 + ndata, sizeof(double), STEP, fp)) == STEP) {
ndata += STEP;
p1 = realloc(p1, (ndata + STEP) * sizeof(double));
}
ndata += n;
(この一連の操作はファイルの要素数が未知と仮定して、動的に確保した領域を少しずつ増やしていくものです。)
fwrite(p1, sizeof(double), ndata, fp);
fclose(fp);
free(p1);
return 0;
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
いまいちやりたい事がよくわかりませんが…。
>int a, b, c, d, e, f, g, h, j, k, l, m, o, p, q, r, x;
アルファベット1文字だけの変数名では用途が判りにくいのでやめましょう。
配列を使ってループで処理する方が良いかと思われます。
>getchar()
>fgets(buf, 200, stdin);
併用は止めておいた方がいいかも知れません。
# どちらも標準入力から…ですが……。
>p1 = realloc(p1, (ndata + STEP) * sizeof(double));
realloc()が失敗した場合、p1がどうなるのか考えてみましょう。
No.2
- 回答日時:
なにをしたいのか, さっぱりわからない.... 「よく」わからない, というのはすごいなぁ>#1.
さておき, getchar と fgets は併用しても大丈夫. とはいえこのプログラムのように書いていると, そことは違う問題が発生しそうな気もする.
wb モードでオープンして fread はダメだろう. よしんばできたと仮定しても
何も読み込めない
はず.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- 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# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜCSQとCIP形式ではコ...
-
c言語でのfscanfについて
-
fgets( ) の返り値は何?
-
txtファイルの文字を配列に格納
-
c言語 ファイルから数字を読み...
-
【C言語】ファイルを読み込んで...
-
日本語ファイル名のFTPについて
-
C言語 連番データの読み込み
-
C言語を用いて、csvファイル内...
-
複数ファイルの同時読み込みの...
-
ガンマ変換 C言語でプログラ...
-
lockfについて
-
構造体とファイル検索(><)
-
C言語でファイル読み書きを早く...
-
ファイルへの書込み処理が異常...
-
fgets関数の利用 c言語
-
OpenGLによる描画内容をBMP出力
-
C言語 ファイル入出力について
-
CSVファイルの内容を構造体に格...
-
C言語でファイル名を変数にした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語でのfscanfについて
-
C言語でファイル読み書きを早く...
-
fopenでファイル名に、変数を使...
-
複数ファイルの同時読み込みの...
-
fgets( ) の返り値は何?
-
テキストファイル内に対して, ...
-
ファイルへの書込み処理が異常...
-
C言語にてXMLファイルから任意...
-
ファイル出力で改行を入れたい!
-
C言語でセグメンテーションエ...
-
エラーがわかりません、、
-
ガンマ変換 C言語でプログラ...
-
自己相関関数を求めるプログラ...
-
VisualStudioでのファイルの入...
-
同時にファイル読み込み 書き込み
-
c言語 ファイルから数字を読み...
-
大量の入力ファイルを扱うとき...
-
ファイルが読み込めない・・・
-
【C言語】ファイルを読み込んで...
-
a*(1-exp(-bx))+cの近似の方法
おすすめ情報