ページ 11

【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月09日(日) 19:15
by 若葉マーク
現在ファイルから文字列を読み出すプログラムを作っているのですが、
余分な改行コードを削除する部分がうまくつくれずにいます。

コード:

//※色々省略
char inputc[64];
char input[64];

while(1)
{
	for( i = 0; i < 64; ++ i )
	{	
		inputc[i] = input[i] = FileRead_getc(fp);	//1文字取得する
                          if ( input[i] == '\n' )						//カンマか改行なら
		{
			inputc[i] = '\0';						//そこまでを文字列とし←ここが上手くいかない
			break;
		}
		if ( input[i] == EOF )						//ファイルの終わりなら
		{
			goto EXFILE;							//終了
		}
}
inputc='\0';
としても、DrawString()で出力すると最後に'.'と改行コードを出力したときの文字がくっついてしまいます。
しかもなぜか
inputc[i-1]='\0';
とすると上手くいくのです。
ナニが原因なのかどなたかご教授お願いします。
(以下ににテキスト内容の一部を晒します。)
~ゲームのあそびかた~
HOW TO PLAY

Re: 【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月09日(日) 19:22
by ゆうたろう
input[64]はint型だったはず

Re: 【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月09日(日) 19:33
by 若葉マーク
ゆうたろう さんが書きました:input[64]はint型だったはず
本当ですね、ご指摘ありがとうございます!
正しくは

コード:

//※色々省略
int input[64];
char inputc[64];

 
while(1)
{
    for( i = 0; i < 64; ++ i )
    {   
        inputc[i] = input[i] = FileRead_getc(fp);   //1文字取得する
                          if ( input[i] == '\n' )                       //カンマか改行なら
        {
            inputc[i] = '\0';                       //そこまでを文字列とし←ここが上手くいかない
            break;
        }
        if ( input[i] == EOF )                      //ファイルの終わりなら
        {
            goto EXFILE;                            //終了
        }
}
です。

Re: 【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月09日(日) 19:38
by へにっくす
若葉マーク さんが書きました:inputc='\0';
としても、DrawString()で出力すると最後に'.'と改行コードを出力したときの文字がくっついてしまいます。
しかもなぜか
inputc[i-1]='\0';
とすると上手くいくのです。
ナニが原因なのかどなたかご教授お願いします。


以下で分かるかな?
C言語で"\n"を、テキストモードで開いたファイルで出力すると、"\r\n"となるんですよ。
改行コード-Wikipedia

Re: 【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月09日(日) 20:00
by ゆうたろう
if(input==EOF){//ファイルの終わりなら
goto EXFILE;//終了
}
をforループの外に出してみるとか

Re: 【DXライブラリ】FileRead_getc()【余分な改行削除】

Posted: 2012年9月20日(木) 11:35
by 若葉マーク
返信が大変遅れてしまいましたが、
皆様のおかげで解決する事ができました、ありがとうございます!
へにっくす さんが書きました: C言語で"\n"を、テキストモードで開いたファイルで出力すると、"\r\n"となるんですよ。
大変参考になりました!