C言語関係掲示板

過去ログ

No.456.ファイルに指定文字書き込み

[戻る] [ホームページ]
No.3289

ファイルに指定文字書き込み
投稿者---aki(2002/11/02 14:45:31)



ファイルに書き込みたい文字数を自由に変更し、その文字数だけファイルに書き込みたいのですが、うまくできません。
どのようにかいたらいいのでしょうか? よろしければおしえてください。


ここでは文字配列aの中の3文字分だけを書き込みたいのです。

char a[30]="abcde";

fprintf(fp1,%s,&a);

これだと5文字全部書き込んでしまってこまっています。
3文字または自由に変更するためにどうのように修正したらいいか教えてださい。




No.3290

Re:ファイルに指定文字書き込み
投稿者---aki(2002/11/02 15:39:47)


fprintf(fp, "%.3s", a);

とすれば、fpが指すストリームに書き込まれる文字列の文字数を
最大3文字までに制限できます。この文字数は次のようにfprintf
の引数として指定することもできます。

int limit = 3;
fprintf(fp, "%.*s", limit, a);


No.3291

Re:ファイルに指定文字書き込み
投稿者---kamadoma(2002/11/02 15:50:28)


>
>ファイルに書き込みたい文字数を自由に変更し、その文字数だけファイルに書き込みたいのですが、うまくできません。
>どのようにかいたらいいのでしょうか? よろしければおしえてください。
>
>
>ここでは文字配列aの中の3文字分だけを書き込みたいのです。
>
>char a[30]="abcde";
>
>fprintf(fp1,%s,&a);
>
>これだと5文字全部書き込んでしまってこまっています。
>3文字または自由に変更するためにどうのように修正したらいいか教えてださい。
>
>
#include <stdio.h>
#include <stdlib.h>

#define OUT_FILE "c:\\out.txt"

FILE *fileOpen(char *p_filename,char *p_mode);

int main(void)
{
	FILE *out_fp;
	char line[256];
	char temp[256];
	int num;

	out_fp = fileOpen(OUT_FILE,"w");

	strcpy(line,"abcde");
	printf("ファイルに書き込む文字数を入力してください。\n");
	scanf("%d",&num);
	memcpy(temp,line,num);
	temp[num] = '\0';
	fprintf(out_fp,"%s\n",temp);

	fclose(out_fp);

	return 0;
}

FILE *fileOpen(char *p_filename,char *p_mode)
{
	FILE *fp;

	fp = fopen(p_filename,p_mode);
	if(fp == (FILE *)NULL){
		fprintf(stderr,"ファイル[%s]を開けません。\n",p_filename);
		exit(1);
	}

	return fp;
}






No.3293

Re:ファイルに指定文字書き込み
投稿者---aki(2002/11/02 19:11:00)



同じ名前のakiさん それにkamadomaさんのおかげでできるようになりました。
どうもありがとうございました。