プロが教える店舗&オフィスのセキュリティ対策術

文字を入力してそれをファイルに追加したいです。

1か2を入力して1を押したら自分が入力したものを表示
2を入力したらいくつかの項目を入力(誕生日、名前...)

1で出力するときは項目ごとに改行している

一回目に入力したもの、二回目、三回目の間には’========’の区切りをいれる

これどうやってやればいいでしょうか?

```c
#include <stdio.h>

int main (){
FILE *fp;
char str[1024];

int num = 0;
printf("請問您要 1.輸出好友名單 2.新增好友資料:");
scanf("%d",&num);
fp = fopen("/Users/enomotoryoga/Desktop/01.cpp","r");
fp = fopen("/Users/enomotoryoga/Desktop/01.cpp","w");
if(fp == NULL){
printf("unsucsess open file");
return -1;
}

while(1){
if(num == 1){
while((fgets(str,256,fp))!=NULL){
printf("%s",str);
}
}else if(num == 2){
printf("請輸入姓名:");
fgets(str, sizeof(fp), stdin);
printf("請輸入電話號碼:");
fgets(str, sizeof(fp), stdin);
printf("請輸入生日:");
fgets(str, sizeof(fp), stdin);
}
printf("請問您要 1.輸出好友名單 2.新增好友資料:");
scanf("%d",&num);
}


return 0;
}
```

自分の途中までのコードです

A 回答 (2件)

拡張子 ".cpp" を持つファイル名は、一般的には C++ 言語プログラムを意味しますので、別な名前にしましょう。


".dat" か ".txt" が適当かと思います。

複数の情報をファイルに記録させるなら fopen を追記を意味する mode="a" で開きましょう。
fgets したものを、そのまま fputs でファイルに書けば良いかと思います。

情報をファイルから読み取るなら、読み取る毎に先頭から読みましょう。
fseek するか fopen しなおすのが良いかと思います。

区切り出力するなら、現在までの入力行数を把握しておいて、Nの倍数の行数なら出力とすればよいでしょう。

fgets などの関数の使い方は、ちゃんと調べましょう。
参考:
https://docs.microsoft.com/ja-jp/cpp/c-runtime-l …
https://manpages.debian.org/jessie/manpages-ja-d …
    • good
    • 0

いきなりコードを書こうとするんじゃなくて, まずアルゴリズムを考えるべきだろう.



と書いておくけど, いったい何をどう考えてこのようなコードにしたのかがさっぱりわからんなぁ....
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング