ファイルの入出力
Re: ファイルの入出力
文字の比較は,単純に==や!=などで可能です。
ところで,質問の内容とタイトルが一致していません。
この内容だと,「文字の比較方法」等の方が適切です。
ところで,質問の内容とタイトルが一致していません。
この内容だと,「文字の比較方法」等の方が適切です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ファイルの入出力
作っている問題のあるプログラムコードを提示して下さいね。まっさん さんが書きました:やっぱりできません。fgetcの戻り値であるint型とchar型をどうやって比較するのですか?
その時、どう出来無いかも詳細に書いて下さい。
あとソースコードはcodeタグをご利用下さい。 いろんなことを含めて詳しくは、フォーラムルールを。 http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ファイルの入出力
ポインタが不要な所でポインタを使っていまいた。%cは文字用でポインタを使う%sの文字列ではありません。
入出力を分けたバージョン。
append(追加)である"a"を使ったバージョン。読み込むので"a+"にする必要があります。
後どんどんファイルが膨らみます。読み込むときはファイル先頭にシークも必要です。
入出力を分けたバージョン。
#include<string.h>
#include<stdio.h>
int main()
{
int num = 0, word;
char *formula = "3x^2+4x-2+6y+1";
FILE *fp;
//ファイルを書き込みオープン
fp = fopen( "brain.txt", "wt" );
//数式の書き込み
fprintf( fp, "%s\n", formula );
fclose( fp );
//ファイルを読み込みオープン
fp = fopen( "brain.txt", "rt" );
while( ( word = fgetc( fp ) ) != EOF ) {
printf( "%c", word ); //wordはポインタでは無いのでchar*にキャストしてはいけません。ただの値です。
}
fclose( fp );
return 0;
}
後どんどんファイルが膨らみます。読み込むときはファイル先頭にシークも必要です。
#include<string.h>
#include<stdio.h>
int main()
{
int num = 0, word;
char *formula = "3x^2+4x-2+6y+1";
FILE *fp;
//ファイルを書き込みオープン
fp = fopen( "brain.txt", "a+" );
//数式の書き込み
fprintf( fp, "%s\n", formula );
fseek(fp,0,SEEK_SET); //ファイル先頭をポイント
while( ( word = fgetc( fp ) ) != EOF ) {
printf( "%c", word ); //wordはポインタでは無いのでchar*にキャストしてはいけません。ただの値です。
}
fclose( fp );
return 0;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ファイルの入出力
えーと比較の話は何処にいったのでしょうか?まっさん さんが書きました:できました!!!ありがとうございました
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ファイルの入出力
最後にひとついいですか
+の数が知りたいんですけど、これだと==のところでintからconst char*変えられない
とエラーがでます。
どうしたらよいでしょうか?
#include<string.h>
#include<stdio.h>
int main()
{
int num = 0, word;
char *formula = "3x^2+4x-2+6y+1";
FILE *fp;
//ファイルを書き込みオープン
fp = fopen( "brain.txt", "w+" );
//数式の書き込み
fprintf( fp, "%s\n", formula );
fseek(fp,0,SEEK_SET);
while( ( word = fgetc( fp ) ) != EOF ) {
if("+"==word)num++;
}
fclose( fp );
printf( "%d",num);
return 0;
}
とエラーがでます。
どうしたらよいでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ファイルの入出力
本題の比較ですね。
if("+"==word)num++;
だと"+"は文字列です。wordは文字ですよね。比較対象が違うのでエラーが出て当然です。
'+'なら文字なので比較できますよ。
文字列と文字を混同しているので、今一度入門書や文法書の確認をされたほうが良いと思います。
文字列は文字の配列か文字列のポインタです。文字は数値データです。
if("+"==word)num++;
だと"+"は文字列です。wordは文字ですよね。比較対象が違うのでエラーが出て当然です。
'+'なら文字なので比較できますよ。
文字列と文字を混同しているので、今一度入門書や文法書の確認をされたほうが良いと思います。
文字列は文字の配列か文字列のポインタです。文字は数値データです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。