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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 putchar関数 2 2021/12/06 17:50
- C言語・C++・C# C言語の問題です。大至急回答お願いします 次の条件を満たすキュー・プログラムを作成せよ。 ①キューに 1 2021/12/05 01:35
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語 ループ中からの関数の呼び出し方のコーディング 2 2021/11/02 09:33
- MySQL PHPで「myql関数」が使用できない場合、mysql のために PHPを学習する意味はありますか? 2 2021/12/24 16:37
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ストリーム 意味について。
C言語・C++・C#
-
C言語について。
C言語・C++・C#
-
C言語 バッファについて。
C言語・C++・C#
-
-
4
ストリームについて。
C言語・C++・C#
-
5
C言語について。
C言語・C++・C#
-
6
C言語について。
C言語・C++・C#
-
7
バッファリングについて。
C言語・C++・C#
-
8
これなにがちがうんですか??
C言語・C++・C#
-
9
C言語について。
C言語・C++・C#
-
10
C言語について。
C言語・C++・C#
-
11
C言語 解答について。
C言語・C++・C#
-
12
C言語です
C言語・C++・C#
-
13
C言語 バッファについて。
C言語・C++・C#
-
14
Javaって使いますか、もう古いですか?C++とどっちがいいですか?分析でC++使う授業ありましたけ
C言語・C++・C#
-
15
コマンドプロンプトについて。
C言語・C++・C#
-
16
写真のプログラムは、1からnまでの、全整数の積すなわち階乗値を求めて返却する関数を作成したいのですが
C言語・C++・C#
-
17
C言語って古いですか?
C言語・C++・C#
-
18
VisualStudio2022でC言語プログラムで全角文字を使用すると不明なエラーが表示される
C言語・C++・C#
-
19
C言語 ストリームについて。
C言語・C++・C#
-
20
gcc13.2のバグ?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイルの結合
-
グローバル変数のよくない使い...
-
ダイアログボックスで複数フォ...
-
ドラッグアンドドロップでファ...
-
フレームワークについて
-
プログラムについて。
-
CSVファイルへの保存の際、デー...
-
テキストファイルの最終行を削...
-
バッチで118項目のCSVを処理し...
-
HANDLE無効について
-
Android ファイルの書き込み
-
Javascript で INI の読み書き
-
マスタとファイルの違いって?
-
dataファイルをxtxファイルにす...
-
画像読み込み時のOutOfMemory
-
smarty上で、動的にファイルを...
-
ファイル名の先頭にアンダース...
-
【C#】リソースファイルの埋め...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報
NULL文字とは、文字列を区切るものなのでしょうか?教えて頂けると幸いです。
コンパイルは成功しました!ありがとうございました!ですが、質問のscanf関数がどういうものかというのが、いまいちつかめません。教えていただけると幸いです。
迅速な回答大変恐縮です。すみませんが、3つほど教えて頂けると幸いです。以下の通りです。
①return 0は、0=成功、1=失敗の、0でしょうか?
②printfで、/nを使っていますが、なぜ、sprintfで、/nは間違いだと言ったのでしょうか?
③vsprintfは、sprintfや printfなどの関数と何が違うのでしょうか?