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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

929閲覧

ファイルの中にある検索文字列を置換文字列に置換してファイルを出力する

ex_nh0

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/08/18 11:04

編集2020/08/19 15:23

前提・実現したいこと

ある参考書の問題なのですが19行目の if(Sstr[++s] == '/0')の部分がよくわからないです。Sstrの次の部分がNULLになったらという条件分岐というのはわかるのですが、解説には検索文字が見つかった場合の条件分岐と書かれていたのがよくわからないので教えてもらいたいです。問題と書かれている文が空白になっていて、該当ソースコードのところには答えを書いています。

該当のソースコード

#include<stdio.h> int main(){ FILE *fp,*wpf; char filename[256]; char Sstr[20]; char Pstr[20]; int i,c,s = 0; int flag = 0; printf("ファイル名ー>"); scanf("%s",Sstr); printf("検索文字列ー>"); scanf("%s",Sstr); printf("置換文字列ー>"); scanf("%s",Pstr); fp = fopen(filename,"r"); wpf = fopen("out.txt","w"); while((c = fgetc(fp) != EOF){ if(c == Sstr[s]){ if(flag == 0) flag = 1; if(Sstr[++s] == '/0'){        fputs(Pstr,wpf); //問題1 s = 0; flag = 0; } }else{ if(flag ==1){                  for(i = 0; i < s; i++) fputc(Sstr[i],wpf); //問題2 fputc(c,wpf); s = 0; flag = 0; } else { fputc(c,wfp);            //問題3 } } } fclose(wpf); fclose(fp); return 0; }

補足情報(FW/ツールのバージョンなど)

①対象ファイル名、検索文字列、置換文字列は標準入力から指定する
②検索文字列、置換文字列ともに1~19文字で半角英数文字のみとする

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

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

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

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

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

can110

2020/08/18 11:10

解説とともに何がどのように分からなかったのかを具体的に記載ください。
YAmaGNZ

2020/08/18 13:19

ソースを見た感じC#は関係なさそうですのでタグを外してください。
kazuma-s

2020/08/19 23:28

コンパイルできるコードを貼り付けてください。 '/0' ではなく '\0' です。 全角スペースがあります。 filename が未初期化のまま、fopen(filename, "r") を実行しています。 wpf と wfp があります。
guest

回答1

0

動きを見る場合、実際に適当な値を仮置きして、どんな動きをするか、頭の中や紙の上でトレースしてみるのが一番早いです。
デバッガとかでも構いませんが、細かい動きを辿る練習はしておいた方がいいです。
ここら辺は、何度もやってなれるしかないので、誰かに説明してもらって、ふーんそうか。だとあまり意味が無いです。
とりあえずは、自分で辿ってみて、ここまでやってみたけど、ここでどう考えても動きが追えなくて迷子になる、とか、ここでこうしたらこうなると思うのに、実際には違うことが起きている?とか、
具体的な質問にすると、詳しい答えが書きやすいです。

(とりあえず、ファイル名の入力が間違ってます)

投稿2020/08/18 12:34

amiya

総合スコア1218

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問