Cプログラムで関数を呼び出すたびに関数の中でカウントアップ(line変数)したいと思っています。
しかし下記記述だとカウントアップされません。
記述をどのように変更すればよいか分からないでいます。
ご助言戴ければ幸いです。
宜しくお願いします。
◉入力ファイル(aaa、3行、1行1byte)
11
11
11
◉Cプログラム
void get_bgr();
main(argc, argv)
int argc;
char **argv;
{
int line;
line = 0;
size = 1;
num = 1;
unsigned char buf[1024];
infile[0] = fopen("aaa", "r");
while( fread(buf, size, num, infile[0]) == num){
get_bgr(line);
printf("line2=%d\n",line);
}
void get_bgr( line )
int line;
{
line++;
printf("line1=%d\n",line);
}
◉出力結果
line1=1
line2=0
line1=1
line2=0
line1=1
line2=0
◉期待値
line1=1
line2=1
line1=2
line2=2
line1=3
line2=3
No.1ベストアンサー
- 回答日時:
とりあえず、参考にしている書籍・サイト・教科書が古すぎます。
main(argc, argv)
int argc;
char **argv;
はすごく古い書き方なので現代風に改めましょう。
int main(int argc,char **argv)
と書きます。
void get_bgr( line )
も
void get_bgr( int line )
です。プロトタイプ宣言も同様に直しましょう。
で問題点ですが、get_bgr関数の仮引数のlineとmain関数のローカル変数lineは実際には名前が同じだけの別の変数です。
get_bgrの呼び出しの瞬間にmain→get_bgrでlineの値はコピーされますが逆は起こりません。なのでline++;してもmainのlineには反映されないです。
反映させる方法としてはlineの値を戻り値で返してlineで受けるか、lineをポインタで渡してポインタ参照で書き換える2つの方法があります。
zwiさん
ご連絡遅くなり申し訳ありません。
細かいご指摘ありがとうございます。
記述方法について、古い書き方があるということで、現代風に書き換えるようにします。
>反映させる方法としてはlineの値を戻り値で返してlineで受け
>るか、lineをポインタで渡してポインタ参照で書き換える2つ
>の方法があります。
関数からの戻り値を反映させる方法として2通りあるということで、こちらでも所望の期待値を得られること確認しました。
早急にご回答いただき大変助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- 工学 以前、線形代数からフーリエ級数展開を導く上で 式v=(v, e1)e1+(v, e2)e2+…+(v 6 2022/06/29 17:24
- 工学 ちなみになぜv=(v・e1)e1+(v・e2)e2はe1やe2が、正規直交基底でないと成り立たないと 2 2022/12/22 17:22
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- 数学 「(((a0)/2)・1, 1) …(a0)/2の1倍と1の内積 =(a0)(1, 1) …1 と1 5 2022/07/05 19:11
- 英語 TOEIC公式問題集のリスニングの一部分に “I’ll get an ad in the local 2 2022/08/17 18:52
- Ruby 教えてください 2 2023/01/04 17:50
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
C言語でlookupのような関数って?
C言語・C++・C#
-
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
face book で女性の方からline ...
-
よく05(04)lineって見かけるん...
-
遠くにいる友達とLINE交換する...
-
lineのワン切り、なぜ?
-
年賀状にLINEのIDを書く
-
生産ラインの品質を表す直行率...
-
Windowsのバッチファイルで正規...
-
python flask から fastapiへの...
-
質問です。 先日クラスの女子に...
-
LINEで好きな人が「笑」を全然つ...
-
phpとpostgreの接続にエラー解...
-
タイトルの改行
-
毎月記念日をlineで祝うのって...
-
既婚女性にラインを聞くことに...
-
lineを断られた時の対処法につ...
-
あの噂の世界三大チェーンメー...
-
ラインナップとラインアップは...
-
法線(normal line)はなぜそう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
face book で女性の方からline ...
-
よく05(04)lineって見かけるん...
-
Windowsのバッチファイルで正規...
-
法線(normal line)はなぜそう...
-
遠くにいる友達とLINE交換する...
-
「一番上、真ん中、下」を示す英語
-
LINEで好きな人が「笑」を全然つ...
-
生産ラインの品質を表す直行率...
-
python flask から fastapiへの...
-
lineのワン切り、なぜ?
-
毎月記念日をlineで祝うのって...
-
line でおはようございます、の...
-
会社の先輩とLINE プライベート...
-
2000年生まれなのですが 00line...
-
ある男子から、ライン追加され...
-
まだそんなに親しくない相手と...
-
並立と並列の違いってなんですか?
-
タイトルの改行
おすすめ情報