
こんばんはです。
次のソースは、構造体の中にファイルから読み込んだDATAを格納する部分です。
ファイルに書き込む際に
for(i = 0;i<AllMen;i++){
fputs((person + i)->name,fp);
fputs("\n",fp);//(1)
fputs((person + i)->mail,fp);
fputs("\n",fp);//(1)
}
fclose(fp);
と、上記の様に、(1)のところで無理やり改行をいれて、ファイルに書き込んでます。
fgetsで一行分読み込むとき、nameとmailを分けて取りたいからです。
javaでは、newLineと言うものがあり、\nをしなくてもファイルには
次の行に移動する手段がありますが、Cには無いのでしょうか?
fgetsする際に\nがどうしても不都合なのです。
過去に同じ経験のある方、高スキルの方のご回答いただければ嬉しいです。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
No.1です。
すみません、問題点を勘違いしていました。書き込みでなく、読み込みの時が問題なのですね。
No.2の方の書かれているように、\nを除去すればいいと思います。
char *nl;
:
:
while(fgets(person[s].name,256,fp) != NULL){
fgets(person[s].mail,256,fp);
if ((nl = strchr(person[s].name,'\n') != NULL) {
*nl = '\0'
if ((nl = strchr(person[s].mail,'\n') != NULL) {
*nl = '\0'
}
s++;
}
こんな感じでしょうか?(最終行が改行されてない場合\nが入ってこないのでNULLチェックをしてます)
お返事ありがとうございます。
ソースまで記入いただけるなんて光栄です。
これからもよろしくおねがいします。
本当にありがとうございました^^
No.2
- 回答日時:
出力の際に「データ末尾に '\n' を追加する」なら, 入力のときは「データ末尾の '\n' を削除する」のが筋ではないだろ~か. fgets したあとで
*strrchr(それ, '\n') = '\0';
みたいな. あ, もちろんこのままだとコケますので注意.
お返事ありがとうございます。
お教えいただけたおかげで、無事に求めていた結果を出すことができました。
本当にありがとうございました^^
No.1
- 回答日時:
fprintf(fp,"%s\n",(person + i)->name);
fprintf(fp,"%s\n",(person + i)->mail);
とすればいかがでしょうか。
この回答への補足
お返事ありがとうございます。
ファイルへの書き込みは改行されて問題ないのですが、
while(fgets(person[s].name,256,fp) != NULL){
fgets(person[s].mail,256,fp);
s++;
}
で、読込み、さらにそのまま再度ファイル書き込みしますと
//ファイルの中1回目
abe
abe@ne.jp
takahashi
takahashi@ne.jp
↓
//ファイルの中2回目
abe
abe@ne.jp
takahashi
takahashi@ne.jp
と、言う風に、間にスペース行が出来てしまいます。
このままfgetsしますと、スペース行が変数に格納されてしまい、
表示に不具合がおきてしまうのです・・。
何かお気付きなことがございましたら、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# Cの関数の引数のconst *charについて 5 2023/04/25 13:05
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルへの落とし方について
-
ファイル名をチェックする方法。
-
VisualC++でのバイナリファイル
-
テキストファイルの中身をまと...
-
配列のメモリの確保
-
ファイル関数について
-
C言語・Windows 文字の出力がで...
-
続jファイルに文字列を書く
-
C言語でのtxt検索
-
テキストファイルの読み込み
-
(UWSC)このような場合、解決策...
-
書き込んだファイルに改行が入...
-
テキストファイルの各行の文字...
-
ダンプツール作成… 行き詰まり...
-
ダイアログボックスで複数フォ...
-
どんなプログラムを書いても指...
-
Cでexcelを読込み
-
Webアプリケーションの公開にあ...
-
C言語初心者の質問失礼します。
-
教えてください!vectorworksに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルの行数を取得...
-
ファイル内のデータを1行削除...
-
バイナリファイルをテキストフ...
-
fgetsで2行目から文字化け
-
c言語 2つのファイルを行ご...
-
ファイル読み込みについて
-
巨大なテキストファイル(可変...
-
改行までの一文字ずつのファイ...
-
0x00をファイル出力
-
複数テキストファイルを読み込...
-
EOF判定されない
-
【VB.Net】バイト型配列に読み...
-
変数内の文字列を空にできない
-
[動的配列]C言語の勉強で簡単な...
-
続・EOF判定されない
-
0バイトファイルの作成
-
ファイルサイズ指定し、ファイ...
-
winsock recvでの文字化け
-
int型の値をファイルに保存
-
UNIXシェルプログラム等からバ...
おすすめ情報