最近C言語を勉強を始めまして、参考書に載っていた以下のソースプログラムをvisualC++2010に打ち込んだのですがビルドが成功しません
#include <stdio.h>
#include <math.h>
int main(void)
{
int d[33];
double m,v,s;
int n=33;
int i;
double sum;
printf("データを%d個入力してください\n",n);
for(i=0;i<n;i++)
{
printf("date %d=",i+1);
scanf_s("%d",&d[i]);
}
for(sum=0.0,i=0;i<n;i++)
{
sum+=d[i];
}
m=sum/n;
for(sum=0.0,i=0;i<n;i++)
{
sum+=(d[i]-m)*(d[i]-m);
}
v=sum/n;
s=sqrt(v);
printf("平均=%10.3f\n",m);
printf("分数=%10.3f\n",v);
printf("標準偏差=%10.3f\n",s);
return 0;
}
エラーメッセージは
・'scanf' の宣言を確認してください。
・(11): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません
・(14): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません
・(14): error C2065: 'i1' : 定義されていない識別子です。
と出るのですがさっぱりわかりません。どなたか教えてください。
No.2
- 回答日時:
そのエラーになったプログラムをそのまま貼り付けてないのでは?サンプルの方を貼り付けたとか、サンプル見ながら入力しなおした、とか
エラーがあると報告されている行数と、おそらくのそれが出ているであろう行が一致してません。
正しい情報が無ければ、こちらでは判断できません。
エラーメッセージの読み方はわかりますか?
()の中がエラーのある行数、errorはビルドに致命的な「エラー」、warning はビルドはできるけども、場合によっては実行時に問題になる「警告」、その後のC???はエラー番号で、これで検索するとある程度の解説が見付かる。その後は簡単にエラー/警告の内容を説明しているものです。
> ・(14): error C2065: 'i1' : 定義されていない識別子です。
メッセージの通り、定義されていない識別子(変数とか定数とか関数とか) i1 が使われている、というものですが、このプログラム中にどこにも i1 なんて書いてありません。
おそらく
printf("date %d=",i+1);
が
printf("date %d=",i1);
となっているのでは?
/* あと、細かいことを言えば「data」ですね */
> ・'scanf' の宣言を確認してください。
scanfはどこで使っているのでしょう?エラーメッセージはもうすこし長くなかったですか?
> ・(11): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません
ちょっと根が深い問題です。
nの前の\は実際にはどう表示されていますか?
/を反対にしたような記号(バックスラッシュ)でしょうか?円記号でしょうか?
なんにせよ、一度消して、キーボードの円記号のキーを入力しなおしてください。
この回答への補足
新しくプロジェクトを作って以下のように入力してみたら警告がでましたが、実行できました
#include <stdio.h>
#include <math.h>
int main(void)
{
int d[33];
double m,v,s;
int n=33;
int i;
double sum;
printf("データを%d個入力してください\n",n);
for(i=0;i<n;i++)
{
printf("data%d=",i+1);
scanf("%d",&d[i]);
}
for(sum=0.0,i=0;i<n;i++)
{
sum+=d[i];
}
m=sum/n;
for(sum=0.0,i=0;i<n;i++)
{
sum+=(d[i]-m)*(d[i]-m);
}
v=sum/n;
s=sqrt(v);
printf("平均=%10.3f\n",m);
printf("分散=%10.3f\n",v);
printf("標準偏差=%10.3f\n",s);
return 0;
}
コピペしたので、そのままです。nの前\は円マークです。
エラーメッセージは
.cpp(16): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304) : 'scanf' の宣言を確認してください。
とでました。
No.1
- 回答日時:
貼り付けられているソースをVS2008のVC++でコンパイルすると、コンパイルは通りましたね。
なので、ここにあるソースは、問題ないようですね。
原因は
>>printf("データを%d個入力してください\n",n);
の"\"がうまくユニコードに変換されないため、
>>・(11): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません
のエラーになったように思えます。
とりあえず、漢字メッセージを漢字以外のアルファベット表示に変えてみるとコンパイルエラーは無くなると思います。
なかなかユニコード変換が絡むと、よくわからないエラー状況になりますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# プログラミング実行後に表示される値を答えよ #include <stdio.h> void main 4 2022/05/28 10:20
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
コンパイルできません。
-
デバッグ中のエラーのことで教...
-
HEWを使用しているのですが、こ...
-
multiple definitionというエラー
-
Handlesについて
-
1つのDLLにソースを1500個ほど...
-
Arduinoに関する質問
-
HANDLEの宣言でのエラー
-
PC画面を録画するプログラムでd...
-
どうしてもできない!!
-
VB2008で定数に色の設定をした...
-
VB2010でのSQL日付フォーマ...
-
入れ子になっている構造体配列...
-
subまたはfunctionが定義されて...
-
error C3867 関数呼び出しには...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
バッチからsqlplusの接続エラー...
-
Excelのエラーで困ってます。
-
HEWを使用しているのですが、こ...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
fortranでプログラムを実行する...
-
BC30002: 型 'ListItem' が定義...
-
VBAでファイルを開くプログラム...
-
sys/time.hのインクルードがで...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
LPCWSTRとchar
-
RightとLeft関数のライブ...
-
Handlesについて
-
multiple definitionというエラー
-
ACCESSのDate関数のエラー表示...
-
WindowsからLinuxへの移植
おすすめ情報