No.39ベストアンサー
- 回答日時:
>単なるテキストファイルの例です。
内容はどこに打てば良いのでしょうか?
terapadを起動し、文字を打ち込みます。
そして、保存するとき、「名前を付けて保存」を選択し、sample.txtの名前を付けて保存します。
必ず、goo2.cを格納しているフォルダに保存してください。
(必ず同じフォルダの下にsample.txtとgoo2.cがあるようにします)
No.38
- 回答日時:
No37の続きです。
下記のサイトも候補としてよさそうです。
一週間で身につくC言語の基本
おさえておきたいプログラミングの基本
https://c-lang.sevendays-study.com/
ざっと読んでみて、あなたにとってしっくりくる方を選べばよいかと思います。
No.37
- 回答日時:
>①FILE fpと、の意味
回答:
FILE *fp;
はFILE型のポインタ変数fpです。ファイルを扱うときに使用します。
詳細は、
https://9cguide.appspot.com/index.html
の17章:ファイルの取り扱い
を読んでください。
>②char *p の、*はどういう意味なのでしょうか?後、
回答:
char *p;はchar型のポインター変数です。
ポインターについては、
https://9cguide.appspot.com/index.html
の15章:ポインタ変数の仕組み
を読んでください。
>③sample.txt の例です。
回答:
単なるテキストファイルの例です。内容は
AAA
BBB
CCC
でも
aioue
kakikukeko
でも構いません。
そもそもの話ですが、
return 0 とreturn 1を使うときの例を示すというのが、このソースの目的です。
ファイルをオープンしたときに、エラーが発生したら、return 1で終了する。
最後まで、実行した場合は、return 0で終了するということが、理解できれば、それで十分かと思います。
細かいところが、気になりいろいろと疑問がわいてくるのは、仕方ありませんが、
一度に、全てを理解しようとするのではなく、少しずつ基礎から一歩一歩進めてはいかがでしょうか。
その例として
https://9cguide.appspot.com/index.html
を1章から順に最後まで読まれてはいかがでしょうか。練習問題は必ず行ってください。
そこで、不明点があれば、質問するのが良いかと思います。
質問の際は、出典を明確にできるので、第三者が非常に回答しやすくなります。
上記のサイト以外にあなたが、理解しやすいサイトなり参考書があれば、それでもかまいません。
但し、出典を明確にし、第三者が簡単にその情報を共有できる方が、回答が得られやすくなります。
No.36
- 回答日時:
>このプログラムの関数の解説と、sample.txtの例です。
解説をつけました。
#include <stdio.h>
int main(void)
{
FILE *fp;
char data[1024];
char *p;
int ctr = 0; /* 読み込み件数:初期値は0*/
fp = fopen("sample.txt", "r"); /*sample.txtを読み込み用にオープンする*/
if (fp == NULL){ /*エラーがあれば:*/
printf("file open error\n"); /*エラー表示*/
return 1; /*エラーなので return 1 */
}
while(1){ /*以下を繰り返す*/
p = fgets(data,1024,fp); /*1行 読み込む*/
if (p==NULL) break; /* ファイルの終端に達して、もうデータがないなら 繰り返しを抜ける*/
ctr++; /*読み込み件数に1加算する。*/
}
fclose(fp); /*ファイルをクローズ*/
printf("record count=%d\n",ctr); /*読み込み件数を表示*/
return 0; /* 正常なのでreturn 0*/
}
すみません。3つほど質問があって、①FILE fpと、②char ✴︎p の、✴︎はどういう意味なのでしょうか?後、
③sample.txt の例です。
This is a pen.
I have a book.
Are you ready?
はどういう事なのでしょうか?
No.35
- 回答日時:
>では、なぜ、今回組んだプログラム(goo1.c)で、return1を使わなかったのでしょうか?
エラーになるケースがなかったからです。
(厳密にいえばエラーになるケースはあるかもしれないが、通常は考えなくて良いからです)
>それと、return 1を使う例を簡単なプログラムで例を挙げて頂けると幸いです。
以下のようなプログラムです。
ファイル名:smaple.txtを読み込み、その行数を画面に表示します。
#include <stdio.h>
int main(void)
{
FILE *fp;
char data[1024];
char *p;
int ctr = 0;
fp = fopen("sample.txt", "r");
if (fp == NULL){
printf("file open error\n");
return 1;
}
while(1){
p = fgets(data,1024,fp);
if (p==NULL) break;
ctr++;
}
fclose(fp);
printf("record count=%d\n",ctr);
return 0;
}
----------------------------------
sample.txtを同じフォルダにおいて、実行してください。
その行数を表示します。
sample.txtの例です。
This is a pen.
I have a book.
Are you ready?
sample.txtがないと、エラー表示し、return 1;を実行します。
実際にコンパイル&実行して確認してください。
ソースファイル名はgoo2.cとしてください。
No.33
- 回答日時:
>処理の途中で、異常を検知し、最後まで実行せず、途中でreturnするときに、0以外でreturnします。
というのは、言い換えれば、デバッグ作業をするときにということでしょうか?デバッグ時には、わざとエラーが発生するようにして、試験するので、
そのようになります。
但し、本番(実際の運用時)でも、発生する可能性はあるので、
ソースは、そのままにしておきます。
(デバッグが終わったからといって、途中でreturnする行を削除することはありません)
つまり、デバッグ作業のときにreturn0とreturn 1を1つのプログラムで、使うことはあるのでしょうか?教えて頂けると幸いです。
No.32
- 回答日時:
>①returnの所で、return1とすることは、無いですよね?
下記の続きでしょうか。
>①return 0は、0=成功、1=失敗の、0でしょうか?
それであれば、return 1;とすることはありません。
処理の途中で、異常を検知し、最後まで実行せず、途中でreturn するときに、0以外でreturn します。(return 1,return 2等)
厳密にいえば、いくつの値で、returnするかは、そのプログラムを作成した人の決め事なので、自由に決めて構いません。
俺は、return 1;が正常で、return 0;が異常にしたいといえば、それで構いません。但し、ほかの方からひんしゅくを買いますが。
それは、変数に名前を付ける時に
男の人数ならint man_count; とし
女の人数ならint woman_count; とするのが普通ですが、
これを
男の人数ならint woman_count; とし
女の人数ならint man_count; としても、プログラムは動作します。
ただし、そのようなプログラムは誤解を招くので、通常はそのようにはしません。
それと同じ理由で、通常は、正常終了時、 return 0;とします。
処理の途中で、異常を検知し、最後まで実行せず、途中でreturnするときに、0以外でreturnします。というのは、言い換えれば、デバッグ作業をするときにということでしょうか?教えて頂けると幸いです。
No.31
- 回答日時:
>その関数(サブルーチン)の知識を十分に身につけるためには、どのような本を読めば良いのでしょうか?
苦しんで覚えるC言語(下記URL)
https://9cguide.appspot.com/index.html
の
11章:関数の作り方
練習問題11
を一通りやって理解してください。
No.30
- 回答日時:
>①return 0は、0=成功、1=失敗の、0でしょうか?
はい。その意味で使っています。
>②printfで、/nを使っていますが、なぜ、sprintfで、/nは間違いだと言ったのでしょうか?
説明上の都合です。
sprintf(data,"number=%d\n", num);
とした場合は、dataの内容は
data[0]='n'
data[1]='u'
data[2]='m'
data[3]='b'
data[4]='e'
data[5]='r'
data[6]='\n'
data[7]='\0'
となります。
\nがない方が、わかりやすいかと思い、\nをとりました。
\nをつけても、C言語上は、全く問題ありません。
>③vsprintfは、sprintfや printfなどの関数と何が違うのでしょうか?
vsprintfはvprintfの変数へ出力するバージョンです。
printfとvprintfは画面に出力
sprintfとvsprintfは変数に出力
になります。
printfとvprintfの違いが判れば、sprintfとvsprinfの違いも分かるかと思います。
現時点で、vprintfの機能について説明するのは難しいので、説明は省かせてください。「可変長引数に対応するprintf機能を実現するためのもの」
というのが、回答ですが、これでは、なんのことかわからないと思います。
あなたが、関数(サブルーチン)について、十分な知識がついたときに、
機会があれば説明しますので、そのことだけを覚えておいてください。
関数(サブルーチン)について十分な知識がついたら、gooで質問してください。その時に、質問が目に付けば、回答します。
使用例としては
https://www.ibm.com/docs/ja/zos/2.3.0?topic=func …
に例があります。
只、使う機会は、めったにないので、今は、覚える必要はないかと思います。スキルとしては中級者以上で使用する関数です。
その関数(サブルーチン)の知識を十分に身につけるためには、どのような本を読めば良いのでしょうか?教えて頂けると幸いです。教えて頂けると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
C言語 コマンドプロンプトについて。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
バッチで118項目のCSVを処理し...
-
ビットマップ画像をRGB値でエク...
-
ファイル名の先頭にアンダース...
-
C言語構造体、ファイル入出力に...
-
テキストファイルの最終行を削...
-
ハッシュの計算時間について
-
読み取り専用ファイル FileStr...
-
$_GET['○○○']について
-
「VBScript」ADODB.Streamにお...
-
ASP .NETでファイル選択ダイア...
-
csvファイルを開かずに文字を検...
-
最近使ったファイルからファイ...
-
グローバル変数のよくない使い...
-
アドレス帳WABファイルをサンダ...
-
マイクラでPythonのプログラミ...
-
どんなプログラムを書いても指...
-
絶対パスの絶対て英語で何でし...
-
バッファとは何ですか
-
VBAでMP3を鳴らしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
VBに、Cのincludeのようなもの...
-
SGファイルって何ですか?
-
C言語のfopenについて教えてく...
-
分割コンパイルの#defineについて
-
アプリケーション終了時例外エ...
-
ドラッグアンドドロップでファ...
-
CSVファイルへの保存の際、デー...
-
ASP .NETでファイル選択ダイア...
-
大きいサイズのテキストファイ...
-
Javascript で INI の読み書き
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
Excelマクロでの再読込み方法
-
UTL_FILEにて既存のExcelに追加...
-
ファイルの結合
おすすめ情報
NULL文字とは、文字列を区切るものなのでしょうか?教えて頂けると幸いです。
コンパイルは成功しました!ありがとうございました!ですが、質問のscanf関数がどういうものかというのが、いまいちつかめません。教えていただけると幸いです。
迅速な回答大変恐縮です。すみませんが、3つほど教えて頂けると幸いです。以下の通りです。
①return 0は、0=成功、1=失敗の、0でしょうか?
②printfで、/nを使っていますが、なぜ、sprintfで、/nは間違いだと言ったのでしょうか?
③vsprintfは、sprintfや printfなどの関数と何が違うのでしょうか?