テキスト読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
txet

テキスト読み込み

#1

投稿記事 by txet » 14年前

DXライブラリのファイル読み込み関数を使って、テキストファイルの文章を
配列に入れるというプログラムを組んでいてエラーがでました

コード:


//main.cpp

main{

  Init(); // 初期化

  Draw();//文字描画

}


Init(){

  //いろいろ初期化

 TextRead( " text1.txt" ); //テキストファイル読み込み

}


//TextRead.cpp

namespace{

    char String[ ][ 256 ]; //文章格納配列

}

TextRead( char *TfileName ){

	int FileHandle;//ファイルハンドル
	int line = 0;     //行番号

	FileHandle = FileRead_open( TfileName );


	while( FileRead_eof( FileHandle ) == 0 ){

		FileRead_gets( String[ line ], 256, FileHandle );

		line++;

	}


	FileRead_close( *TfileName );


}

エラーは以下の通りです

error LNK2001: 外部シンボル ""char (* `anonymous namespace'::String)[256]" (?String@?A0x7b83eac9@@3PAY0BAA@DA)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。


サンプルプログラムを見ながら作りました
自分としてはString[line][256]にテキストでの一行分( テキストファイルでは文の改行まで )格納したら
lineに1足して次の一行を入れるというのをしたいと思いますが
案の定エラーが出ました

エラーの原因も教えて頂きたいのですがそれ以前にこのソースコードは正しいのでしょうか?

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: テキスト読み込み

#2

投稿記事 by beatle » 14年前

txet さんが書きました:エラーの原因も教えて頂きたいのですがそれ以前にこのソースコードは正しいのでしょうか?
お示しになったソースコードはC++のつもりで書いたものでしょうか?もしそうなら、正しくありません。
  • main関数(関数、といっていいのかどうか・・・)の定義に、()がない。
  • 関数の戻り値の指定が無い。main、Init、TextRead
これらは単に書き間違いですか?
txet さんが書きました:DXライブラリのファイル読み込み関数を使って、テキストファイルの文章を
配列に入れるというプログラムを組んでいてエラーがでました

コード:


//main.cpp

main{

  Init(); // 初期化

  Draw();//文字描画

}


Init(){

  //いろいろ初期化

 TextRead( " text1.txt" ); //テキストファイル読み込み

}


//TextRead.cpp

namespace{

    char String[ ][ 256 ]; //文章格納配列

}

TextRead( char *TfileName ){

	int FileHandle;//ファイルハンドル
	int line = 0;     //行番号

	FileHandle = FileRead_open( TfileName );


	while( FileRead_eof( FileHandle ) == 0 ){

		FileRead_gets( String[ line ], 256, FileHandle );

		line++;

	}


	FileRead_close( *TfileName );


}

エラーは以下の通りです

error LNK2001: 外部シンボル ""char (* `anonymous namespace'::String)[256]" (?String@?A0x7b83eac9@@3PAY0BAA@DA)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。


サンプルプログラムを見ながら作りました
自分としてはString[line][256]にテキストでの一行分( テキストファイルでは文の改行まで )格納したら
lineに1足して次の一行を入れるというのをしたいと思いますが
案の定エラーが出ました

エラーの原因も教えて頂きたいのですがそれ以前にこのソースコードは正しいのでしょうか?
char String[ ][ 256 ];は配列の大きさを省略しているためどのくらいメモリを確保していいかが分からず、変数定義になっていない、というのが原因じゃないかと推測しました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: テキスト読み込み

#3

投稿記事 by softya(ソフト屋) » 14年前

namespaceは、C++の名前空間指定で使うものですが使い道は理解されていますか?
まぁ、無名空間を使っているので間違いというわけでは無いのですが他の部分の知識と考え合わせるとよくこんな技を知っているなと。
参考にしたプログラムは、何処のURLで見たのでしょうか?

あと
char String[ ][ 256 ]; //文章格納配列
コレに付いてっは不定サイズですのでエラーになるはずなのですが。
これが解決したら、
error LNK2001: 外部シンボル ""char (* `anonymous namespace'::String)[256]" (?String@?A0x7b83eac9@@3PAY0BAA@DA)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。
も直るはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る