ページ 11

fscanfでの読み込み

Posted: 2011年10月20日(木) 23:04
by ガムテープ
メモ帳のデータを読み込んで表示するプログラムを作ろうとしているのですが
改行コードを読み込む方法がわかりません

条件はfscanfを使うということ以外は特にないです

コード:

#include<stdio.h>
main(){
	FILE *fp;
	int ch;

	/* ファイルオープン */
	if((fp = fopen("meiro.txt","r"))==NULL){
		printf("ファイルオープンエラー\n");
		exit(1);
	}

	/* ファイルのすべてのデータを1行ずつ読み込む */
	while((fscanf(fp,"%d",&ch))!=EOF){
		if(ch==1){
			printf("■");
		}
		else if(ch==0){
			printf("□");
		}
		else {
			printf("\n");
		}
	}
	/* ファイルクローズ */
	fclose(fp);
}
メモ帳(meiro.txt)
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 0 1
1 1 1 0 0 0 1 1 0 1
1 0 1 0 1 0 0 1 0 1
1 0 1 0 1 1 0 1 0 1
1 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1

Re: fscanfでの読み込み

Posted: 2011年10月21日(金) 01:26
by かずま
ガムテープ さんが書きました:メモ帳のデータを読み込んで表示するプログラムを作ろうとしているのですが
改行コードを読み込む方法がわかりません

条件はfscanfを使うということ以外は特にないです
%c を使えばよいのでは?

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char ch;
 
    FILE *fp = fopen("meiro.txt", "r");
    if (!fp) printf("ファイルオープンエラー\n"), exit(1);

    while ((fscanf(fp, "%c", &ch)) == 1)
        if (ch == '1') printf("■");
        else if (ch == '0') printf("□");
        else if (ch == '\n') printf("\n");

    fclose(fp);
    return 0;
}

Re: fscanfでの読み込み

Posted: 2011年10月21日(金) 13:08
by ガムテープ
ありがとうございます!  

Re: fscanfでの読み込み

Posted: 2011年10月21日(金) 16:55
by ISLe
なぜfscanfを使わなければならないのか。
fgetcを使ってはいけないのか。
気になります。