C言語のファイル入出力の基礎につての質問

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: C言語のファイル入出力の基礎につての質問

Re: C言語のファイル入出力の基礎につての質問

#3

by shika » 7年前

コード:

/*
*   c_9_2_1.c
*/
 
#include <stdio.h>
#include <stdlib.h> /* exit() */
 
int main (void)
{
    char str[80] = "これは、ファイルシステムのテストです。\n";
    FILE *fp;
    char *p, ch;
    int i;
 
    /* 書き込み用にをmyfileを開く */
    if ((fp = fopen("myfile", "w")) == NULL)
    {
        puts("ファイルオープンエラーです。");
        exit(1);
    }
 
    /* ディスクにstrを書き込む */
    p = str;
    while(ch = *p)
    {
        if (fputc(ch, fp) == EOF)
        {
            puts("ファイル書き込みエラー");
            exit(1);
        }
        p++;
    }
    fclose(fp);
 
    /* 読み込み用にをmyfileを開く */
    if ((fp = fopen("myfile", "r")) == NULL)
    {
        puts("ファイルオープンエラーです。");
        exit(1);
    }
 
    /* ファイルを読み込み直す */
    for(;;)
    {
        if ((i = fgetc(fp)) == EOF)
            break;
        putchar(i);
    }
    fclose(fp);
 
    return 0;
}
ですね。
コンパイルしてみて、自分で確認してみました。
忙しいところ恐縮ですが、ご教授ありがとうございました。

Re: C言語のファイル入出力の基礎につての質問

#2

by みけCAT » 7年前

fputsの第一引数には、文字列を指す有効なポインタを渡す必要があります。
chは整数であり、有効なポインタに変換される可能性は無いといっていいでしよう。
整数を指定して1文字(1バイト)出力するには、fputsではなくfputcを使うといいでしょう。

C言語のファイル入出力の基礎につての質問

#1

by shika » 7年前

環境は、win7 の winxp で、gccコンパイラです。

コード:

/*
*	c_9_2_1.c
*/

#include <stdio.h>
#include <stdlib.h> /* exit() */

int main (void)
{
	char str[80] = "これは、ファイルシステムのテストです。\n";
	FILE *fp;
	char *p, ch;
	int i;

	/* 書き込み用にをmyfileを開く */
	if ((fp = fopen("myfile", "w")) == NULL)
	{
		puts("ファイルオープンエラーです。");
		exit(1);
	}

	/* ディスクにstrを書き込む */
	p = str;
	while(ch = *p)
	{
		if (fputs(ch, fp) == EOF)
		{
			puts("ファイル書き込みエラー");
			exit(1);
		}
		p++;
	}
	fclose(fp);

	/* 読み込み用にをmyfileを開く */
	if ((fp = fopen("myfile", "r")) == NULL)
	{
		puts("ファイルオープンエラーです。");
		exit(1);
	}

	/* ファイルを読み込み直す */
	for(;;)
	{
		if ((i = fgetc(fp)) == EOF)
			break;
		putchar(i);
	}
	fclose(fp);

	return 0;
}
大変基本的で初歩的な質問ですみませんが、
上記Cソースコードをコンパイルすると、fput() の所でエラーと成ります。
エラー原因がよく分かりません。
何処が間違っているのか、どなたか詳しい方、ご教授願います。

ページトップ