
初めて投稿します。
C言語の数値入力についてお聞きします。
以下のようなプログラムで、
1
1 2
と入力し、配列t[i]、s[i]にそれぞれ、「1、2」に代入され、printfで「1、2」と出力されるか確認したところ、「2、2」と出力されました。配列t[i]、s[i]に「1、2」を代入するには、どうすればよいか、分かる方がいましたら、ぜひ教えて下さい。
#include <stdio.h>
int main()
{
//変数の宣言と初期化
int i=0,n=0, sum = 0, avg = 0;
//個分のint型配列を用意
scanf("%d",&n);
int t[n],s[i];
//nに0を代入、nが20になるまで、nに1を足す
for(i=0; i<n ;i++)
{
scanf("%d",&t[i]);
fflush(stdin);
scanf("%d",&s[i]);
sum = sum + t[i];
}
for(i=0; i<n ;i++)
{
printf("%d %d\n",t[i],s[i]);
}
return 0;
}
No.1ベストアンサー
- 回答日時:
>int i=0,n=0, sum = 0, avg = 0;
>scanf("%d",&n);
>int t[n],s[i];
s[]は0でしか作成していませんけど?
# int s[0]だとどうなるんだっけ?
# http://colorful-pico.hatenablog.jp/entry/2014112 …
# 可変長配列…らしいが……malloc()とかで動的確保したわけではないしねぇ。
回答ありがとうございます。
int t[n],s[i]ではなく、int t[n],s[n]の間違いでした。
修正したところ、無事予想通りの出力結果になりました。
No.2
- 回答日時:
手元には C99 の規格しかないのでそこから (うぅん, そろそろ C11 の規格も入手しとこうかなぁ).
一般論として「大きさ 0 の配列」を作ることはできません>#1. 規格上規定している場所は違いますが, 大きさを整定数で指定する場合でも (定数でない) 整数式で指定する場合でも, いずれにおいても「値は 0 より大きくなければならない」 (shall have a value greater than 0) とされています. そして, 今の場合その規定に反しているので (「shall」に反していることから) プログラムは ill-formed であり, 従って undefined behavior となります. ちなみに #1 のリンクに書いてあることは (規格上は) 大間違いです. ひょっとすると GCC の拡張機能を「C99 の機能」と勘違いしているのかもしれません.
あとついでに書いておくと, stdin に対して fflush を呼び出すのは一般にはアウトです. これも「できる処理系もある」というのは知ってるけど, 規格上はやってはいけません.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
char型配列をint型に代入するには
-
c言語
-
配列の要素数に変数を入れたい...
-
C言語の2次元配列 容量が大き...
-
関数のプロトタイプ宣言
-
順不同の問題の結果について
-
C言語の課題が出たのですが自力...
-
C言語 ファイルの指定された行...
-
万年カレンダーについて。
-
配列要素の値の入れ替え
-
コンボボックスでデフォルト値...
-
IPアドレスを配列に代入する方法。
-
ループカウンタを使用せず、配...
-
[C++/CLI]マネージコードで配列...
-
C言語において、 配列要素をひ...
-
char gyou[1024];でcharの表現...
-
bmpやImageの配列を関数の引数...
-
C#でのフィボナッチ数列
-
ヒストグラムのプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語 ファイルの指定された行...
-
C言語において、 配列要素をひ...
-
C言語の課題が出たのですが自力...
-
C#で配列が空かを判定するには?
-
構造体のextern方法
-
C言語の配列のコピーについて
-
c言語 構造体
-
C言語 数値の連続入力について
-
MFC - ダイアログボックスのPic...
-
C++DLLからC#へのコールバック...
-
配列のアドレス部
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
.NET C++で、構造体の配列をnew...
-
2番目の最大値を求める
おすすめ情報