No.5
- 回答日時:
Koyucode.altのほうはバイナリファイルってことはないでしょうか。
だとすると、ますますレコード長を自動で調べるのは無理です。
16進ダンプを眺めたりして、フォーマットを解析するしかないですね。
無理にKoyucode.altを調べる必要がないなら、Koyucode.txtだけ相手にしてりゃいいように思えますけど。
No.4ベストアンサー
- 回答日時:
>C言語でレコード長を調べるための関数はありますか?
ファイル先頭から最初の「改行文字」までを第一レコード、次の「改行文字」までを第二レコード、・・とすると
fgets() がよいのでは・・。
改行文字までを文字配列に格納するので、strlen() で、この文字配列の長さを求めるだけかと・・。
http://www.bohyoh.com/CandCPP/C/Library/fgets.html
http://www.bohyoh.com/CandCPP/C/Library/strlen.h …
下にソースを掲載します(BorlandC++5.5.1)。
レコード長が「固定」でないファイルを想定しています。
--------------------------------------------------------
ただ、「質問本文だけ」ならこれで当たって?いるかもしれないのですが・・・。
補足文、ちょっと判りづらい、というより矛盾しています。
>そのKoyucode.altを調べてみたら中身はKoyucode.txtとほぼ同じですが、
>・・・
>ファイルの大きさの違いは.txtのほうが3倍大きいです。
(1)「ほぼ同じ」なのに「3倍大きい」って???。
>13行ぐらい違います。
>3倍大きい
.alt が6行とすると、.txt が19行かなぁ。「目で見ても」違いが判りそうなものですが・・。
>もしかしたら1行はある決まったレコードに設定されたかもしれないと推定したんですが、
>α : 62,11,
>β : 60,
>太郎:113、
>鬼:130、
(2)見かけ上、レコード長は「決まっていない」ようですが・・。レコード末の「改行」まで「空白」が埋まっているのでしょうか。
#include <stdio.h>
#include <string.h>
#define K_MAX 1000
#define RECL 1024 // テキストエディタなどで確認したレコード長の最大を!
typedef struct{
int iLen;
int iCnt;
}KIND;
int main( void )
{
KIND sRecLenKind[ K_MAX ];
int iLenOrg, i, j, iKind = 0, iAri, iYou, iMax;
FILE *fp;
char cBuf[ RECL ];
fp = fopen( "Z:\\Koyucode.txt", "r" );
if( NULL == fp ){
printf( "ファイルオープンに失敗\n" );
return( 255 );
}
while( NULL != fgets( cBuf, RECL, fp ) ){
iAri = 0;
iLenOrg = strlen( cBuf );
for( i = 0; i < iKind; i++ ){
if( iLenOrg == sRecLenKind[ i ].iLen ){
sRecLenKind[ i ].iCnt++;
iAri = 1;
break;
}
}
if( iAri ) continue;
sRecLenKind[ iKind ].iLen = iLenOrg;
sRecLenKind[ iKind ].iCnt = 1; // 初期化
if( K_MAX <= ++iKind ){
printf( "ソースに栄養を!\n" );
return( -1 );
}
}
fclose( fp );
for( i = 0; i < iKind; i++ ){
iMax = 0;
for( j = 0; j < iKind; j++ ){ // 長いものから出力
if( iMax > sRecLenKind[ j ].iLen ) continue;
iMax = sRecLenKind[ j ].iLen;
iYou = j;
}
printf( "%3d レコード長 = %5d, レコード数 = %5d\n", i, sRecLenKind[ iYou ].iLen, sRecLenKind[ iYou ].iCnt );
sRecLenKind[ iYou ].iLen = 0;
}
return( 0 );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。
Im speechless....you are really really kind person^.^
本当に本当にありがとうございました。ソースコードは早速実行させていただきました、両方のファイルのレコード長とレコード数を比較して違いが明らかになりました。
コードがレベル高いようですが、これからゆっくり読み解いていきます。
本当にありがとうございました。
No.2
- 回答日時:
C では基本的に「ファイル = バイトの並び」です. つまり, (利用者が設定しない限り) 「レコード」という単位は存在しません.
「レコード」が存在しなければ「レコード長」も存在しないので, そのような関数は (自分で作らない限り) ないということになります.この回答への補足
なるほど。そのファイルが私が作ったものではないです。そのファイルは固有名詞のリストファイルでありKoyucode.txtと名つけられた。
なぜレコード調べたいかというと似たようなファイルがあってKoyucode.altといいます。そのKoyucode.altを調べてみたら中身はKoyucode.txtとほぼ同じですが、ファイルサイズが違う。もしかしたら1行はある決まったレコードに設定されたかもしれないと推定したんですが、その1行の大きさはどれぐらいなのかどう調べればよいかわからなくて質問しました。
ちなみに両方のファイルの全体の行をwc -l コマンドで調べたら13行ぐらい違います。ファイルの大きさの違いは.txtのほうが3倍大きいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数ブックの統合について Excel VBA 1 2022/05/13 09:48
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- スピーカー・コンポ・ステレオ レコードのマトリクス番号の見方を教えてください。 最近レコードの知識が少しずつ増え、最近マトリクス番 1 2022/08/14 13:58
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- その他(AV機器・カメラ) レコードの針圧とアンチスケーティングの調整について。 レコードに関する質問です。宜しく御願い致します 2 2022/09/05 16:11
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- Visual Basic(VBA) Excel VBA 複数ブックシートごとにデータを統合する方法について 4 2022/05/20 14:23
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- その他(音楽・ダンス・舞台芸能) 「録音品質の良い」オススメのレコードを教えてください。 皆様のお持ちのレコードで「これは音がいい!」 8 2022/08/08 14:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
JSPのNULLレコード表示について...
-
アクセスでレポートの1印刷内...
-
DataGridViewの、選択されてい...
-
DataGridViewの内容をDBに反映...
-
【ExcelVBA】Powerクエリーでい...
-
サブフォームに新規レコードを...
-
ファイル書込みで一行もしくは...
-
ACCESSで大量の更新を行うと「...
-
ヘッダレコードとトレーラレコ...
-
エラー番号=5 制約を有効にで...
-
Accessデータシートビューの行...
-
Excel VBA読み込みで文字化けが
-
DataGridViewにてセル以外をク...
-
ACCESSのフォームで複数レコー...
-
VB.netでmdbのレコードを取得
-
カレントレコードが無い事を判...
-
AccessVBAのMoveメソッドにつき...
-
レコードセット(ADO.Recordset)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
アクセスでレポートの1印刷内...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
レコードセット(ADO.Recordset)...
-
ワードの差込印刷で教えて下さ...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
DataGridViewの、選択されてい...
-
JSPのNULLレコード表示について...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
Access を×ボタンで閉じ...
-
サブレンジ分割されたNDB(富士...
-
ヘッダレコードとトレーラレコ...
-
データセットのレコード更新が...
-
DataGridViewにてセル以外をク...
-
Line Inputで文字化け(助けて...
おすすめ情報