[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/16 09:46 / Filesize : 287 KB / Number-of Response : 1022
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.102【環境依存OK】



1 名前:デフォルトの名無しさん [2017/11/04(土) 16:33:35.07 ID:NYxCuvMY.net]
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1500329247/

75 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:17:22.95 ID:x1hu0efq.net]
コンストラクタの例。
class A
{
public:
int m_a;
A(int a) {m_a = a + 1; }
};

int main() {
A a(2);
printf("%d\n", a.m_a);
}

76 名前:片山博文MZ mailto:sage [2017/11/10(金) 22:19:15.61 ID:x1hu0efq.net]
別のコンストラクタの例。
class A {
public: int m_a;
A(int a, int b) : m_a(a + b) { }
};
int main() {
A a(2, 3);
printf("%d\n", a.m_a);
}

77 名前:はちみつ餃子 mailto:sage [2017/11/10(金) 23:02:09.42 ID:4kUQXTj6.net]
そんなの説明してやらなくてもネット上に無数の解説があるだろ。
ちゃんとした説明を読んで理解できないなら掲示板で短い説明読んだってわかりゃしねーよ。

78 名前:片山博文MZ mailto:sage [2017/11/10(金) 23:14:40.61 ID:x1hu0efq.net]
>>75
情報が多過ぎて迷子になってるんじゃないか。マニュアル読め、規格票読め、で終わればいいのだが。

79 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 23:21:03.62 ID:YANYSepQ.net]
そう思うならなぜ現在地を聞く前に世界地図を渡すのか

80 名前:デフォルトの名無しさん mailto:sage [2017/11/10(金) 23:32:23.63 ID:2wx3Dyqu.net]
>クラスは構造体に関数を追加したようなもの

こういうアホってどこにでもいるんですね

81 名前: mailto:sage [2017/11/10(金) 23:40:07.53 ID:qCTAOUdD.net]
>>78
その理解で8割がたOKだと思うのだが、何が問題なの?

82 名前:はちみつ餃子 mailto:sage [2017/11/10(金) 23:46:33.90 ID:4kUQXTj6.net]
>>76
チュートリアルだってたくさんあるじゃん。

83 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 00:24:04.64 ID:5MIg+SHx.net]
>>79
クラスがわからんやつにこんな説明しても通じないだろ



84 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 00:49:17.73 ID:1PUme0lw.net]
山田さんってどんな人?と聞かれて
原子の集まりだよ。って答えるようなもの
形式的にウソじゃあないんだが
そこじゃないだろっていう

85 名前:デフォルトの名無しさん mailto:sage [2017/11/11(土) 02:47:19.31 ID:fW1Ux/Kl.net]
純粋にC++のクラスそれ自体の概念というなら
C言語(ベース)でのオブジェクト指向プログラミングをサポートするために言語機能で用意された部品
オブジェクト指向プログラミングにおけるオブジェクト、オブジェクトの状態、
メッセージの送受信、メッセージを受けたときの振る舞いといった概念を具体化した仕組みの一例

86 名前:デフォルトの名無しさん mailto:sage [2017/11/12(日) 13:22:39.97 ID:134uacB+.net]
記憶クラスについての質問の可能性

87 名前:デフォルトの名無しさん mailto:sage [2017/11/12(日) 23:51:21.74 ID:nDRVLcBe.net]
実のところはOOPを知らないからクラスをどう使えばいいのかわからない/
他人の真似でなんとなく使ってるけどなぜクラスを使うのかがわからないといったあたりの話だろ

88 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 02:18:46.71 ID:jSfISRI4.net]
下手にクラスを説明するやつが多いせいで、コーディング経験なくても理解できる概念的なものだと思われちゃう
クラスは実用あってこそ

89 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 07:58:58.54 ID:gxZQPw73.net]
アニマルクラスがわんにゃー鳴くのがオブジェクト指向です

90 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 17:16:56.90 ID:ehTxx6H6.net]
メンバ関数を呼び出す際の
「オブジェクトにメッセージを送る」って言い回しも
C++だと分かりにくいね。

この表現がしっくりくるプログラミング言語というか
環境もあるのだろうけど。

91 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 17:52:35.50 ID:NgxFNsMl.net]
>>88
そういうのをベタで実現しているOO言語はないかな…

92 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 18:04:22.80 ID:evJ3QlJY.net]
smalltalkは?

93 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 20:55:50.24 ID:6XHR1ElK.net]
>>90
あれも結局、関数(メソッド)の動的なコールをそう呼ばせてるだけ
同じSmalltalkでもSmalltalk-72までさかのぼるとメッセージ送信と呼べなくもない仕組みにはなっているけど
それでもオブジェクトに(メッセージを)「送る」というよりは(トークン列を)「流し込む」って感じかと

まあ、ともあれC++の「オブジェクト指向」を説明するときには「メッセージを送る」とかはすっかり忘れていいよ
そもそもC++の設計者の提唱するオブジェクト指向は「抽象データ型(端的にはユーザー定義の型)」を
Simulaという言語から拝借した「クラス」という言語機能で実現することが主軸のアイデアなので
www.stroustrup.com/whatis.pdf



94 名前:はちみつ餃子 mailto:sage [2017/11/22(水) 21:08:20.60 ID:Rn9KsJdK.net]
言語の意味論とそれを実現するメカニズムは別物だから、
仕組みがどうなっているかから考察するのは無粋だと思うけどなぁ。

まあ C++ は低水準レイヤでの仕組みを意識せざるを得ない、
意味論とメカニズムが不可分なデザインではあるから概念としてのメッセージ指向よりも
メカニズムに意識が引きずられてしまうというのは確かにあるかもしれない。

95 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:21:24.87 ID:3PrpHuiB.net]
メソッド呼び出しってメッセージパッシング感すげー出てない?

96 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:28:03.86 ID:+hB2MqUt.net]
>それでもオブジェクトに(メッセージを)「送る」というよりは(トークン列を)「流し込む」って感じかと

違いがわからないw

97 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:33:35.60 ID:2YdhEIzW.net]
>>93
メッセージパッシング言うなら、何かが静的に決定してる時点で興醒めだよ
wiki.c2.com/?AlanKayOnMessaging

98 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:02:11.68 ID:XGz0BDt0.net]
>>95
C++のポリモーフィックなメソッドは動的ディスパッチだろう

99 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:09:00.03 ID:NgxFNsMl.net]
>>91
>抽象データ型
これがすべてなのに、どうしてメッセージ駆動の話が今でももちきりなのだろうか?

100 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 08:26:45.55 ID:Qr4pYIOt.net]
>>96
C++に「動的なものは何もない」という主張ではなく
「静的に決まる何かが一つでもある」時点でそれをメッセージングに例えるのは興醒めという意味

少なくともケイは彼のOOPにおけるメッセージングを「遅延結合の徹底」の目的で提案している
d.hatena.ne.jp/katzchang/touch/20080807/p2
「私が考えるOOPはメッセージング、状態処理のローカルでの保有・保護・隠蔽、
そして全ての物に対する強力な遅延束縛、これだけだ。
これはSmalltalkとLISPだけが実現できている。他のシステムでも可能かもしれないが、私は知らない。」

つまるところ、これはすなわち、SmalltalkやLispみたいな変態言語でもなければ、
(あるいはアクター機構のように、並列化を意識して本当にメッセージを送るのでもなければ)
無理して「メッセージパッシング」なんてたとえる必要は無いんやで、という話でしかない

101 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 08:27:38.45 ID:Qr4pYIOt.net]
>>97
まったくもってその通り

102 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:15:04.16 ID:76J8bh8G.net]
Cのキャストについて教えてください

int a,b;
long c;

の条件下で、a+b 、a*100+b*100(a*100、b*100のどちらもlong型になる)
がそれぞれlong型の解になるような場合のキャストとしては

1 c=(long)a+b;
2 c=(long)a+(long)b;

3 c=(long)a*100+b*100
4 c=(long)a*100+(long)b*100

とそれぞれ、どの記載が正しいのでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:19:02.83 ID:5K7m7Mmt.net]
>a*100、b*100のどちらもlong型になる

intでは表せなくてlongが必要
って意味なら3以外



104 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:20:46.83 ID:76J8bh8G.net]
ありがとうございます。
1と3は似ていますが1はa,bそれぞれキャストされるが
3ではb*100はキャストされずint型で計算されてしまう、ということなのですね

105 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 16:57:14.87 ID:L5ESShiZ.net]
よろしかったら教えてください

  if(a==0){ }

と記述するのにfor文では
  
  for(i=0;1<100;i++){}

と書き、for(i==0;i<100;i++){}

と書かないのはなぜでしょうか?(==の使い方)

106 名前:片山博文MZ mailto:sage [2017/11/24(金) 17:05:28.65 ID:ELoh0Abo.net]
>>103
代入と比較は違う。

107 名前:デフォルトの名無しさん [2017/11/24(金) 17:07:52.77 ID:QRhLqwOG.net]
スーパー初心者か?
forでも書いてもいい。だが意味がないか低い。
「=」は代入だが「==」は代入でない。

108 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:08:50.74 ID:L5ESShiZ.net]
片山先生、ありがとうございました!
そういうことなのですね。理解できました、いつもありがとうございます!

109 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 17:38:47.92 ID:lG8HVUMw.net]
わかってる人にとってはクソみたいな質問だけど、
数学だと代入 (定義) するっていうのと等しいっていうのは区別がはっきりしないので、
そういうメンタルモデルで考えてると混乱しちゃうってのはわからんでもない。

とはいうものの、よっぽど出来の悪い入門書でもそこらへんわからんようなのは無いと思うんだが、
どういう学び方をしてるんだかちょっと疑問。

110 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:51:57.71 ID:L5ESShiZ.net]
なんかすみません
ネットで優しそうなサイトで進めてます

111 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 12:50:21.53 ID:bi1wDt8X.net]
数学のイコールには比較(の結果等しい)の意味しかないだろう
Pascalみたいに代入が:=なら良かったのに

112 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 12:57:44.05 ID:cL+Re6N7.net]
プログラムを記述する際、等しいかを比較するより、代入のほうが頻度が高いから
Cでは多く入力するであろう代入側を 1文字にして そうでない側を 2文字にした
って聞いたことがある

113 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:22:50.66 ID:8wOk3LC1.net]
Fortranだって代入は=だから、Cで採用されたのも仕方ない

とはいえ、文字数ごときにこだわらずに、:=を採用してくれていたらタラレバ



114 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 13:44:24.58 ID:9QEYjjOS.net]
力添えを頂きたい。
SunAwt系のソフト内で表示されているテキストを取得したいんだが、尻尾も掴めず困り果て、どうすれば良いか全く分からない状態。
何かヒントを頂けないだろうか。

115 名前:はちみつ餃子 mailto:sage [2017/11/28(火) 13:50:31.60 ID:1OfFiaid.net]
>>112
別のプロセスから取得するって意味?

116 名前:デフォルトの名無しさん mailto:sage [2017/11/28(火) 18:08:18.05 ID:9QEYjjOS.net]
>>113
YES。
別プロセスからテキストを取りたい。
他の例えばIEやハンドルが取れる様なソフト内の文字ならgettextやcom操作で取ったりできるがSun系のソフトは同じ様にはいかず、メモリを読むのかどうすればいいのか、知識が足りなくて検索も上手に出来ず...頭打ち状態。
何か足掛かりになる物を教えて頂きたい。

117 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 00:32:03.31 ID:/GAULuFW.net]
>>114
試したことないけどこれは?
www.oracle.com/technetwork/articles/javase/index-jsp-136191.html

118 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:08:28.50 ID:GlJ85cMo.net]
#include<stio.h>
int main(){
int i,num[5];

for(i=0;i<5;i++){
printf("***\n");
scanf("%*c%d"&num[i]);
}
}

実行し、num[]に、10、20,30,40,50と入力すると
num[0]の値は0、num[1]は20、その後50まで代入されてます
num[0]に10が代入されないのは何故なのでしょうか?

119 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:26:13.79 ID:NrhyqkWd.net]
>>116
"%*c"のせいじゃね

120 名前:デフォルトの名無しさん mailto:sage [2017/11/29(水) 13:36:20.41 ID:GlJ85cMo.net]
>>117
そうでした。ありがとうございました。

121 名前:デフォルトの名無しさん mailto:sage [2017/11/30(木) 14:49:53.66 ID:t+LxFq0J.net]
テフ?

122 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 03:20:07.32 ID:VClmrWfc.net]
boost::qiでマルチバイト文字を扱うにはどうすればいいんですかね

123 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 12:48:46.21 ID:UzEJxhfp.net]
5人の生徒に3教科のテストをし、その点数を入力する
入力後、
          テストA  テストB  テストC
 0点〜19点    0人    0人    0人
20点〜39点    0人    0人    0人
40点〜59点    2人    0人    1人
・・・
80点〜100点   1人    3人    2人

と集計する方法に悩んでいます。
どういう考え方が考えられますか?



124 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:06:08.20 ID:p7Y4uOcI.net]
>>120
char_に替わるパーサー書けばいいんじゃないかね
マルチバイトの最初の文字を認識する自作パーサーをmb1、マルチバイト文字のパーサーをmbcharとして
mbchar = (mb1 >> char_) || char_;
とか?

125 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:14:35.24 ID:LYbXDWPH.net]
>>121
宿題は自分で考えるのが原則。どこまで考えた?

126 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:21:20.74 ID:UzEJxhfp.net]
>>123
ありがとうございます。
入力された点数を3次元配列に格納するところまでです。
今は、繰り返し分を使い、配列に格納された数字が0でなかったら
その数字をカウントして人数を集計しようとしてるのですが、できていません

127 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 13:56:35.70 ID:LYbXDWPH.net]
>>124
なぜ3次元?生徒と教科がインデックスだから2次元では?
あと、表示さえすればいいだけなら、
効率度外視である教科のある得点範囲の人数をカウントするくらいできるでしょ。
効率考えるなら表示用に0で初期化した2次元配列を別に用意する。

128 名前:デフォルトの名無しさん mailto:sage [2017/12/01(金) 14:01:47.55 ID:UzEJxhfp.net]
>>125
ありがとうございます。2次元です。
ten[5][3]で得点を格納したあとが進まないのです
得点範囲の人数のカウントについてもう少し考えてみます

129 名前:デフォルトの名無しさん [2017/12/02(土) 00:04:56.97 ID:F3lbt2G4.net]
中古本でプログラミング言語c++の3版が4000円で4版が6000円なんだが
やっぱり4版を買ったほうがいいのかな

130 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 00:18:15.85 ID:4X8AnX6A.net]
あんまり良い本じゃないから買わなくていい

131 名前:デフォルトの名無しさん [2017/12/02(土) 00:54:45.18 ID:F3lbt2G4.net]
>>128
そうなのか・・・聞いておいてよかった
ありがとう

132 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 09:08:29.93 ID:XeWd0teH.net]
>>125
昨日はありがとうございました
90行程度と長いプログラムになりましたが
人数をカウントし表示させることができました

カウントは、教科毎にfor文で呼び出し
20以下、20〜39、・・・80〜99、100とif文で条件指定し
各範囲で人数をカウントし、最後に表示させました

また分からないことがありましたらご指導お願いいたします。

133 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 14:58:42.41 ID:XeWd0teH.net]
ファイルを開いた回数を記録するというプログラムを作っています
int main(){
int count;
FILE *fp;

if((fp=fopen("log.txt","r"))==NULL){
count=0;
}else{
fscanf(fp,"log.txt",&count);
fclose(fp);
}

if((fp=fopen("log.txt","w"))==NULL){
printf("Error\n");
return -1;
}

count++;
printf("%d回目のプログラムを実行です\n",count);
fprintf(fp,"%d\n",count);
fclose(fp);
}
これを実行するたびに
2752513回目の・・・
3444737回目の・・・
2953217回目の・・・
となってしまい、ファイルを開いた数が記録されません

最初にlog.txtがない状態で実行したときの、一番最初だけ、countに1が代入され
log.txtにも1が記載されるのですが、2回目以



134 名前:降のcountには7桁の乱数みたいのが代入され記載されてしまいます
どうして不具合が出るのか分からなくなっております。よろしくご教授くださいませ
[]
[ここ壊れてます]

135 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 15:12:26.31 ID:jpnrbmV1.net]
fscanfで書式の指定ミス

136 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 15:16:24.33 ID:XeWd0teH.net]
>>132
さっそくありがとうございます。fscanf(fp,"%d",&count)と訂正しました。
初歩的なミスで申し訳ありませんでした、そしてありがとうございました。

137 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 15:18:37.18 ID:Jd1ioDh8.net]
>>131
> fscanf(fp,"log.txt",&count);
二番目の引数を再確認してみ

138 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 15:35:47.69 ID:XeWd0teH.net]
>>134
ありがとうございました。
おかげさまで正常にカウントされるよになりました。
確認不足でご迷惑おかけしました。ありがとうございます。

139 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 18:53:18.55 ID:K6qIkKEG.net]
超初心者です
c言語でGetPixelが動きません
どうすれば直るのか教えてください

COLORREF GetPixel (float 変数x, float 変数y); //指定座標の色取得。

if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行

//以下、実行するコード

140 名前:デフォルトの名無しさん mailto:sage [2017/12/02(土) 19:09:54.54 ID:4pmjT1Fk.net]
>>136
>if float GetPixel(float 変数x, float 変数y == RGBCOLOR( 0, 0,255)) ; //指定座標のピクセルが青色ならコード実行

if (GetPixel(x, y) == RGBCOLOR( 0, 0,255)) {
条件が真のとき実行するコード
}
ではどうですか?

141 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 17:32:02.17 ID:K3o+GgF3.net]
boost::qiって読み方ブースト・チーでいいの?

142 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 18:32:18.36 ID:m/Ygi57i.net]
boostのパーサの使い方わかんね

143 名前:デフォルトの名無しさん mailto:sage [2017/12/04(月) 21:33:58.20 ID:K2rBoL+r.net]
>>138




144 名前:デフォルトの名無しさん [2017/12/05(火) 04:28:16.53 ID:NJ16QKFF.net]
組み込みの場合例えばRs232Cのチャンネルが三つあるようなばあいにクラスに
するとIOの初期化がそれぞれ違う。しかもチャンネル1を初期化するとチャンネル3
にも影響する場合がある。こういう場合にはどんな風にクラスをつくったらいい?

145 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 10:59:54.97 ID:BooJAJ3p.net]
よろしくお願いします。

fp=fopen("out.txt","r");
while(fscanf(fp,"%d",&da2[i])!=EOF){
fscanf(fp,"%d",&da2[i]);
i++;
}
fclose(fp);

これを実行するとテキストファイルに記録されている整数を
一行飛ばしで読みだしてしまいます
どうして飛ばされる行ができてしまうのでしょうか?

146 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 11:22:39.33 ID:tMsGMSrl.net]
>>141
friend

147 名前: mailto:sage [2017/12/05(火) 11:42:25.43 ID:x6DQdw1l.net]
>>142
fscanf() を二箇所に書いているけれども、それでいいのですか?

148 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 11:54:34.95 ID:GUcDlKUg.net]
>>142
whileでのfscanfのあとでiを変更してないから次のfscanfで同じda2[i]に上書きしてる

149 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 12:02:08.68 ID:BooJAJ3p.net]
>>144>>145
そういう事だったのですね
ありがとうございました!

150 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 15:40:18.03 ID:BooJAJ3p.net]
再びよろしくお願いいたします。

int main(){
char ch1,ch2;
printf("二文字入力\n");
scanf("%c",&ch1);
 scanf("%c",&ch2);
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}
これを実行すると、2回目のscanfを飛び越えてしまいます。
その理由と回避方法をご指南いただけませんでしょうか?
よろしくお願いいたします。

151 名前:片山博文MZ mailto:sage [2017/12/05(火) 15:46:59.33 ID:KBxdaLdg.net]
再びよろしくお願いいたします。

int main(){
char buf[3], ch1,ch2;
printf("二文字入力\n");
fgets(buf, 3, stdin);
ch1 = buf[0];
ch2 = buf[1];
printf("ch1=[%c]\nch2=[%c]\n",ch1,ch2);
return 0;
}

152 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 16:20:49.08 ID:BooJAJ3p.net]
>>148
ありがとうございます
標準入力によって処理し、scanfを使わないということなのですね
文法を覚えて活用できるようにします
何度もありがとうございます

153 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 16:50:17.51 ID:VZfNuCLu.net]
>>147
改行文字を次のscanfで読込むから
回避方法は例えば
ttp://blog.unfindabl



154 名前:e.net/archives/604 []
[ここ壊れてます]

155 名前:デフォルトの名無しさん mailto:sage [2017/12/05(火) 16:59:28.01 ID:BooJAJ3p.net]
>>150
ありがとうございます
しっかり理解できるには時間がかかりますが
とりあえず、お礼申し上げます
改行文字を処理しないと次のscanfが改行文字を読んでしまうのですね
とても勉強になりますし、皆様のおかげで前進できます
ありがとうございます

156 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 00:17:29.58 ID:fcKh4od9.net]
皆すげーな
俺みたいなライブラリのインクルードが通せなくて
そもそもコンパイルって何だっけってところから調べるような奴には恐れ多いわ

157 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 12:53:50.82 ID:4zvLzkC0.net]
毎日すみません。ご教授お願いします。

out,txtに記録されている下記文字に対して
---------------
AAA BB
ababb
099
---------------
ファイルを開いて、文字列を読み出し
配列で一文字一文字を表示させようとしています

i=0;
fp=fopen("out.txt","r");
while(fscanf(fp,"%c",&c)!=EOF){
i++;
}
for(t=0;t<=i;t++){
printf("%c\n",c[t]);
}

これだと18行表示されますが
表示されたのは全く異なるものでした
どこが不適切なのか2日考えても分かりません
いつも申し訳ありません><よろしくご指導願います

158 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 13:10:52.74 ID:dicAL8ON.net]
>>153
c は大きさの十分ある char への配列と想定した前提で
fscanf の引数がおかしい

1文字毎に配列へ順繰りに読み込ますのなら
 fscanf(fp,"%c", &c[i]);
こうなってないと

159 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 13:39:27.89 ID:4zvLzkC0.net]
>>154
&が抜けていたのは恥ずかしいです
申し訳ありませんでした
しっかり覚えさせていただきます

プログラムもちゃんと動きました
いつも簡単なことばかりなのに理解が浅くてすみません
とても勉強になりました。ありがとうございました

160 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 16:08:02.33 ID:dicAL8ON.net]
書いてあることが違うけど(&が抜けていたのではなく [i] がない)
本当に分かっているのか不安になる返答だが、そのうち慣れてくるだろう。

(文字と文字列の違いと (f)scanf に渡すフォーマットの指示と 変数をどう渡すか
 の一連が整理されてないと、また繰り返すだろう)

161 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 16:29:02.63 ID:4zvLzkC0.net]
>>156
はい、ありがとうございます。
配列にして直してあります。
fscanf(fp,"%s",c)として読み込んだ後に
c[i]で一文字一文字表示させられると思い込んでいました

先ほどの156のおかげでfscanf(**** &c[i])を覚えられました
ありがとうございます!感謝してます

162 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 15:46:12.24 ID:b0CgZ3o1.net]
こんにちは。どうか本日もよろしくお願いいたします。
10人分の点数を入れて表示するプログラムです。
下記のように作成したのですが、main()内から関数を呼び出すところで
parameter names(without typesというエラーがでてしまいます。
どうかよろしくお願いします。

#include<stdio.h>
void da(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d input ",i);scanf("%d",&ten[i]);
}
return;
}

void out(int ten[10]){
int i;
for(i=0;i<10;i++){
printf("%d人目 : %d点\n",i,ten[i]);
}
return;
}

int main(){
int ten[10];
void da(ten);
void out(ten);
return 0;
}

163 名前:片山博文MZ mailto:sage [2017/12/08(金) 15:56:23.80 ID:8LWGXCju.net]
>>158

#include <stdio.h>
void da(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d input ", i); scanf("%d",&ten[i]);
}
}

void out(int ten[10]){
int i;
for(i = 0; i < 10; i++){
printf("%d人目 : %d点\n", i + 1, ten[i]);
}
}

int main(void) {
int ten[10];
da(ten);
out(ten);
return 0;
}



164 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 16:02:05.10 ID:C0Y4l8FE.net]
そろそろうっとしいな

165 名前:デフォルトの名無しさん mailto:sage [2017/12/08(金) 16:06:39.52 ID:b0CgZ3o1.net]
すみません、ここは質問するところじゃなかったのですね
他のC言語のスレから誘導されたので、こちらで質問していいかと思ったのですが
今後質問は控えます。自力で学習を進めようと思います。
ご迷惑をおかけしてすみませんでした。
片山先生、本日もありがとうございました。感謝です。

166 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 05:14:03.17 ID:Nra/Nglb.net]
#pragma pack(1)
struct {
char a;
short b;
int c;
} x;
Cでバイナリデータとかパディング除けに上のような感じに書いて読み書きしたりしますが(例は適当)、
C++ではpragmaを使用せず記述量も少ないスマートな記述方法はあるでしょうか?

167 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 09:10:24.00 ID:67ZudMHx.net]
ない

168 名前:デフォルトの名無しさん mailto:sage [2017/12/16(土) 09:52:53.87 ID:Nra/Nglb.net]
ありがとうございます。やっぱりないですか。
pragmaがコンパイラ依存とか書かれてて非常に嫌なんですが慣れます。

169 名前:片山博文MZ mailto:sage [2017/12/16(土) 16:18:44.15 ID:2NfYNG63.net]
#include <pshpack1.h>
...
#include <poppack.h>

170 名前:デフォルトの名無しさん mailto:sage [2017/12/17(日) 02:47:22.67 ID:T7tjmkgj.net]
C/C++は言語自体は好きなんですが、GUIとかがプラットフォームに依存するみたいですが、そういった場合黙ってqt使うのが最善ですか?

171 名前:デフォルトの名無しさん [2017/12/18(月) 01:24:26.49 ID:vrG0ZJDQ.net]
>>164
そのような構造体で直接読み書きしないのがベスト

172 名前:デフォルトの名無しさん [2017/12/21(木) 16:50:57.91 ID:FN6C0PcS.net]
ここが適切かわかりませんが、

make の Makefile を Visual Studio や NetBeans 等の IDE の
プロジェクトファイルに変換するツールはありませんか。

173 名前:片山博文MZ mailto:sage [2017/12/21(木) 16:54:33.43 ID:fHSTQ7CK.net]
makeにはないが、似たようなものにCMakeというものがあって、CMakeならプロジェクトファイルを生成できる。



174 名前:168 mailto:sage [2017/12/21(木) 17:10:02.95 ID:FN6C0PcS.net]
>>169 そこまでは分ったのですが、
Makefile を CMakeLists.txt に変換するのはありますか?

見つけられたのは、nmake.exe 用の Makefile.mak を *.vsproj に変換する、
Python のスクリプトだけでした。。

175 名前:片山博文MZ mailto:sage [2017/12/21(木) 17:15:07.21 ID:fHSTQ7CK.net]
>>170
ない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<287KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef