質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

982閲覧

データのテクストファイルへの落とし方

hikar

総合スコア13

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

1クリップ

投稿2020/03/12 14:57

objファイルから新しく作ったテクストファイルにデータを落とす際に、いらないデータを消して、必要なデータだけを落とす方法がわかりません。

イメージ説明

上の文字に1足した値を書き込みたいのですが、下のソースコードのように書くと下の写真のようになってしまいます。
・・・・・・・・・・・
3, 59, 2,
3, 58, 59,
3, 57, 58,
このようにしたい...
・・・・・・・・・・・

イメージ説明

C++

1#include <stdio.h> 2 3#define BUFFER_MAX 10000 4 5int main() { 6 FILE* pFile,*pFileW; 7 8 fopen_s(&pFile,"fData1.txt","r"); 9 fopen_s(&pFileW, "1127.txt", "w"); 10 11 if (pFile == NULL) { 12 printf("not open file"); 13 return 0; 14 } 15 printf("openned file\n"); 16 17 char chr; 18 while ((chr = fgetc(pFile)) != EOF) { 19 if((chr != '\n')||(chr!=',')||(chr!=' ')) 20 fprintf(pFileW,"%c",++chr); 21 else 22 fprintf(pFileW, "%c", chr); 23 } 24 25 fclose(pFile); 26 return 0; 27}

初歩的な質問ですが、どなたかわかる方おしえてください<(_ _)>

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

while ループを次のようにしてみたらどうなりますか?

C

1 int d1, d2, d3; 2 while (fscanf_s(pFile, "%d,%d,%d,", &d1, &d2, &d3) == 3) 3 fprintf(pFileW, "%d, %d, %d\n", d1 + 1, d2 + 1, d3 + 1); 4 5 fclose(pFile); 6 fclose(pFileW);

投稿2020/03/12 16:46

編集2020/03/12 16:49
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

majiponi

2020/03/12 23:18

間違いの原因も指摘してあげてはいかが? (&&じゃなくて||になっていること、繰り上がりが意識できていないこと)
hikar

2020/03/13 13:21

ご返信ありがとうございます。<(_ _)> 教えて頂いたソースコードでやってみましたが、ファイルの1行目しか書くことができませんでした。 教えて頂いたソースコード基に while(fgets(str,500,pFile)!=NULL{ sscanf(str,"%d,%d,%d",&f1,&f2&f3); fprintf(pFileW,"%d,%d,%d",f1,f2,f3); } でやってみたら、うまくいきました。 ありがとうございました。(>_<)
guest

0

C

1 while ((chr = fgetc(pFile)) != EOF) { 2 if((chr != '\n')||(chr!=',')||(chr!=' ')) 3 fprintf(pFileW,"%c",++chr); 4 else 5 fprintf(pFileW, "%c", chr); 6 }

1文字読み込んでそれに1足してますが、それでは別の文字になるだけです
これではダメです。

・1行読み込む
・読み込んだ文字列をコンマで区切って分割
・分割した文字列を整数に変換
・変換した整数を+1
・コンマを挟んで各整数を文字列に展開
・ファイルに書き込む

ということを行う必要があります
がんばってください

投稿2020/03/12 23:19

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikar

2020/03/13 13:24

ご返信ありがとうございます。<(_ _)> 教えて頂いたことを参考にさせていただき、ソースコードの改善をしたところうまくいできました。 ありがとうございました。(>_<)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問