C言語なら俺に聞け 140 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
垢版 |
2017/05/11(木) 22:20:03.99ID:cn414UR90
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
70デフォルトの名無しさん (ワッチョイ 8383-hEfH)
垢版 |
2017/05/16(火) 18:26:04.60ID:j2WgBIQo0
大学の講義でc言語やってるのですが、行き詰まってしまったので質問させていただきます
分割コンパイルしているのですが、全部書いてあります
コメント文で分割コンパイルの区切りを表しています
http://codepad.org/VplJG9tZ
これによって表示されるものを左に90度回転させたいのですが条件としてmain関数しかいじってはいけないというものがあります
2次元配列でいけるのかと思ったのですが、どうしたらいいかわからず手詰まりです
よろしくお願いします
2017/05/16(火) 18:28:00.76ID:7Qb0OzW/0
宿題スレにいけ
2017/05/16(火) 19:46:46.04ID:GFMW00ds0
a = a----a;
ってコンパイルできないのね
a = a-- - -a;
にすればコンパイルはできるが
2017/05/16(火) 20:26:25.96ID:fevd2QwgM
>>69
エラーになるかどうかもわからない
それが未定義動作
2017/05/16(火) 20:48:15.67ID:8VX1hNny0
>>64 >>68
レスもらっておいて何ですが、やっぱりなんか引っ掛かってたので自分でも調べてみました

http://www.soum.co.jp/misc/tom/programmer/4.html#id9
https://mattn.kaoriya.net/software/lang/c/20130426110223.htm

あたりを読んで理解した気になりました
C言語テラコワス
75デフォルトの名無しさん (ワッチョイ 8383-hEfH)
垢版 |
2017/05/16(火) 21:05:08.54ID:j2WgBIQo0
>>71
すみません宿題スレとはどこでしょうか
2017/05/16(火) 21:41:19.00ID:9umlqZ68M
>>74
問題はグローバル変数を使うからじゃないの?
77デフォルトの名無しさん (ペラペラ SD9f-5YWk)
垢版 |
2017/05/16(火) 22:17:40.57ID:Ag35s8j3D
>>68
swiftだとa++は廃止された
分かりやすく書くってこと
2017/05/16(火) 22:33:27.46ID:Slyc8zwMd
http://d.hatena.ne.jp/THE_MIND/touch/20090205/1233845661
これ真似たけどExcel開かない
2017/05/16(火) 22:33:48.78ID:Slyc8zwMd
あ、間違えましたすみません
2017/05/16(火) 23:02:13.38ID:OtKe4ieo0
わからなかったの間違えだろ
正直に言えよ無職無能QZ
2017/05/16(火) 23:06:19.27ID:OtKe4ieo0
QZ怒りの他スレ進出ww
2017/05/16(火) 23:07:01.08ID:OtKe4ieo0
宿題スレはどこでしょうかw
おいQZこのスレまで宿題スレ化しようと企んでるのかよ
2017/05/16(火) 23:09:40.58ID:OtKe4ieo0
最近の宿題スレで質問者演じてるやつと口調が見事に一致
84デフォルトの名無しさん (ワッチョイ c300-yCMP)
垢版 |
2017/05/16(火) 23:17:13.00ID:f+nf4d790
インクリメントが無い言語はクソ
2017/05/16(火) 23:18:04.22ID:OtKe4ieo0
QZ怒りの負け惜しみ発言開始
2017/05/16(火) 23:25:44.32ID:OtKe4ieo0
QZ怒りのC絶賛
2017/05/16(火) 23:56:41.57ID:hxKx6VJm0
QZってなに
2017/05/17(水) 00:12:22.70ID:trROhyaD0
QZ怒りの自己紹介
2017/05/17(水) 00:16:07.98ID:t3IXdrQL0
C言語って、機械に分かりやすい言語なんじゃないかな
2017/05/17(水) 00:34:30.07ID:Y+yL8XVsM
何をいまさら
2017/05/17(水) 06:54:51.29ID:wJf0VzTx0
>>87
エディタじゃね?
2017/05/17(水) 11:14:31.02ID:trROhyaD0
QZ怒りのエディタ自慢
93デフォルトの名無しさん (ガックシ 067f-sbka)
垢版 |
2017/05/17(水) 16:12:39.52ID:IVbqBIIG6
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int i, j, a; //int 整数
FILE *fout; //FILE ファイルの管理用
errno_t error;
if ((error = fopen_s(&fout, "output.txt", "w")) != 0){
printf(" エラー:ファイルの出力ができませんa \n");
exit(1);
}
a = 0;
for (i = 0; i<5; i++){
for (j = 0; j<10; j++){
a = a + 1;
fprintf_s(fout, "%d ", a);
}
fprintf_s(fout, "\n");
}
fclose(fout);
}
これにIf文使って
0 0 0 0 0 0 0 0 0 0
0 0 0 14 15 16 17 0 0 0
0 0 0 24 25 26 27 0 0 0
0 0 0 34 35 36 37 0 0 0
0 0 0 0 0 0 0 0 0 0
にするにはどうすればいいの?おしえてエロい人
2017/05/17(水) 16:18:48.87ID:bdvqA1ry0
>>93
なかなか良い問題だな。大学生?
2017/05/17(水) 16:23:04.39ID:se1pH3p/0
a = a + 1;
if (1 <= i && i <= 3 && 3 <= j && j <= 6) fprintf_s(fout, "%d ", a);
else fprintf_s(fout, "0 ");
96デフォルトの名無しさん (ガックシ 067f-sbka)
垢版 |
2017/05/17(水) 16:24:58.51ID:IVbqBIIG6
>>94
大学生です。
指定場所以外も数字が出てしまいます
2017/05/17(水) 16:32:34.86ID:t3IXdrQL0
if (4 <= (a % 10) && (a % 10) <= 7) printf("%d ", a);
else printf("%d ", 0);
2017/05/17(水) 16:35:45.80ID:smeqz8ba0
>>93
エロい人への質問は板違い
http://phoebe.bbspink.com/hneta/
へ移動しなさい
99デフォルトの名無しさん (ガックシ 067f-sbka)
垢版 |
2017/05/17(水) 16:45:05.44ID:IVbqBIIG6
>>95
ベン図的な考え方ですか......!!
ありがとうございます。
>>97
なぜか0〜50全て表示されてしまってます!
>>98
エロ魔人になるにはまだ早いです!
2017/05/17(水) 16:47:44.21ID:smeqz8ba0
>>99
キミがなるんじゃ無い
キミが質問したがってるエロい人の住処に移れと言っている
2017/05/17(水) 18:12:03.01ID:sXGKWmUcM
>>93
どうでもいいけどコメント酷すぎ
> int i, j, a; //int 整数
> FILE *fout; //FILE ファイルの管理用
102デフォルトの名無しさん (ワントンキン MM1f-QWrk)
垢版 |
2017/05/17(水) 18:52:23.54ID:81y1dPE2M
初心者にありがちな無意味なコメントだね
2017/05/17(水) 19:04:10.40ID:+kjRc1QwH
各行コメントつけろという教育の成果
2017/05/17(水) 22:14:49.58ID:trROhyaD0
QZ怒りのクソコメント
2017/05/18(木) 06:55:44.12ID:Zs9E6Q4t0
俺なら条件部分は↓のように書くかな。
if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) {
「表示する値、表示しない値を条件に判断」という雰囲気。

普段は表組みの行と列の番号(変数i, j)で制御するけど、
この問題だとaの1の桁の値とjの値が一致しないから何やら座りが悪い感じ。
a = 10*i + j + 1;
みたいに「行と列の表示位置から表示すべき値を算出」なら馴染むんだけど。
2017/05/18(木) 09:33:34.39ID:9pl130wuM
if(i==0&&j==9) printf(" 0¥n);
else if(i==1&&j==3) printf(" 14");
else if(i==1&&j==4) printf(" 15");
:
else printf(" 0");
2017/05/18(木) 12:47:56.59ID:Zif2rhHOM
>>105
> if ((a >= 10) && (a < 40) && ((a % 10) >= 4) && ((a % 10) <= 7)) {
なんかちょっとイラッとくる
if ((10 <= a) && (a < 40) && (4 <= (a % 10)) && ((a % 10) <= 7)) {
の方が分かりやすいじゃん
って思うのは俺だけかな

まあそもそも >>95 でいいと思うが
2017/05/18(木) 12:52:54.23ID:Bcm8Uos60
数直線的な並べかたやね
a が10〜40 を 10 <= a <= 40 と思考して
その並びを Cの文法に適合させて 10 <= a && a <= 40
2017/05/18(木) 20:50:09.48ID:V+1hCye70
>>104
森にお帰り
2017/05/18(木) 21:51:10.32ID:pFlTikPN0
int 変数 = 0;
do{
  if(変数 != 0) printf("0〜100違う");
  scanf("%d",&変数);
 } while (変数 < 0 || 変数 > 100);

みたいな感じのやつどういう仕組み?
111デフォルトの名無しさん (ワッチョイ 3e0d-Yh7p)
垢版 |
2017/05/19(金) 08:23:29.86ID:/7Hxktnz0
if (10 <= a && a < 40 && 4 <= a % 10 && a % 10 <= 7) {
ほらすっきり。
2017/05/19(金) 10:32:30.55ID:xPzfUm9BM
if (a/10&3&&a%10&4) { ...
113デフォルトの名無しさん (ワッチョイ 3e0d-Yh7p)
垢版 |
2017/05/19(金) 13:22:27.31ID:/7Hxktnz0
10で剰余したものをビットマスクって、おまえ何屋?
ビット演算子はB言語の名残で変な結合するから気をつけたほうがいいが
その話と>>111のコードは関係ないぞ
2017/05/19(金) 15:12:35.10ID:xPzfUm9BM
悔しかったらもっと短くしてみ。
2017/05/19(金) 15:26:11.54ID:nQP05M7h0
>>110
(1) 入力
(2) 判定
 範囲外の場合、警告表示して (1)に戻る

を並べ替えたもの

(1) 条件付(初回以外)は 警告表示
(2) 入力
(3) 範囲外なら (1)へ戻る
116デフォルトの名無しさん (ワッチョイ 6f79-rE0G)
垢版 |
2017/05/19(金) 15:34:27.30ID:7FyDjLQd0
WannaCryの裏で「駐禁報告書」メール21万件超が大量拡散、添付ファイルは
ウイルス、銀行・カード情報など盗み取る
https://headlines.yahoo.co.jp/hl?a=20170519-00000094-impress-sci
117デフォルトの名無しさん (ブーイモ MM96-JCxV)
垢版 |
2017/05/19(金) 15:36:33.74ID:9d9oZwpEM
>>112
それ14の判定結果からして偽じゃね?
2017/05/19(金) 15:46:59.07ID:nQP05M7h0
きっちり優先順位をケアすれば合ってるんでないの?
10の位 & 3 (. 1 2 3 . 5 6 7 . 9
1の位 & 4 (. . . . 4 5 6 7 . .
2017/05/19(金) 16:12:46.81ID:huxogVYI0
>>114
特定の値域でしか正常に動作しない欠陥コード晒して、何粋がってんの?
2017/05/19(金) 16:37:44.71ID:xPzfUm9BM
え?
i と j が20兆でも動く必要があるの?

で、短くできた?
2017/05/19(金) 16:41:42.81ID:xPzfUm9BM
>>119
if (a/10&3&&a%10&4&&(a<38)) { ...
これでいいか?
2017/05/19(金) 16:48:56.31ID:huxogVYI0
絶望的にセンスが悪い
> a=>10
比較一回を
> a/10&3
除算一回, 論理積一回に改悪
しかも文字数でも1文字増えている
2017/05/19(金) 16:53:29.16ID:nQP05M7h0
i,j で分離すべきなのか a で分離すべきなのか元質問からは読み取れんし・・・
a がたまたま正の整数で良かった (負数の剰余は考えたくないw)
124デフォルトの名無しさん (ワッチョイ 3e0d-Yh7p)
垢版 |
2017/05/19(金) 17:08:03.89ID:/7Hxktnz0
>>122
=は右
これ豆なw
125デフォルトの名無しさん (ブーイモ MM96-JCxV)
垢版 |
2017/05/19(金) 17:10:52.81ID:9d9oZwpEM
>>118
あ、そうか。確かに。
2017/05/19(金) 18:23:28.28ID:fvUmn17Y0
>>122
何言ってんだコイツ
2017/05/19(金) 19:00:41.98ID:rnjvvj6OM
まあまあ。

動作に関係ない仕様を思い込みで追加するのは良くないな。
「今不要なら、今書くな」だっけか。
128デフォルトの名無しさん (ブーイモ MM76-JCxV)
垢版 |
2017/05/19(金) 21:31:34.84ID:91iCt1N+M
yagniかkissかってところ?
2017/05/19(金) 21:48:07.18ID:dqcfAkCR0
C言語ってEclipseの補完が動かないのがデフォなの?
2017/05/19(金) 22:17:08.26ID:ibFM4KQv0
>>128
そうそう。ソフト屋なら知ってるもんかな?

"Keep it simple, stupid" まさに。
131デフォルトの名無しさん (ワッチョイ 636e-F2TF)
垢版 |
2017/05/19(金) 23:37:00.55ID:jsPxGdeJ0
Cは、ライブラリがすくない。おぼえることがすくない
2017/05/20(土) 06:07:10.11ID:ZnY/c9+20
関数にinlineをつけて外部定義を無くせば
インライン展開されなければinline staticと違って
リンカエラーになるとおもってたんですけど、
inline staticを使ったときにはインライン展開される関数が
inlineをつけて外部定義の無くすとリンカエラーになります
なぜですか?
2017/05/20(土) 08:13:36.98ID:Ykf9CvnEa
>>131
野良ライブラリが多いのは多分Cが一番だろうけどな。
何かしらの言語の野良ライブラリの元はCの野良ライブラリが必要で〜とかで、Linuxじゃないと集めてられない。
Win32APIもC前提だけど、多分MSの中の人もいくつあるか把握出来てないんじゃないかな。
134デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/20(土) 18:45:47.54ID:AtO1B5PX0
ISO/IECだってしょせんはブランドの1つでしかなく
別に数学的な公理とかじゃないからな
2017/05/20(土) 19:07:14.30ID:cC3hGZmH0
無矛盾な公理的集合論は自己そのものの無矛盾性を証明する事ができない
2017/05/20(土) 22:15:46.49ID:d/44g1et0
./a.outって入力すると'.'は認識されてないと言われました
何が問題でしょうか?
2017/05/20(土) 22:21:46.82ID:3NdrFBG3d
>>136
コマンドプロンプトはMS-DOSのカルチャーで区切りはバックスラッシュで、MSYSやLinuxはbashのカルチャーで、スラッシュが区切りあるね。
2017/05/20(土) 22:38:50.18ID:feiyOPgg0
>>136
区切りで「/」使いたいなら、パス全体を「"」で括る
「/」以降をオプション「.」をコマンドとして認識するから、全体で一つのコマンドと認識させる必要がある

「/」を区切りに使うのはunix
windowsでも一応使えるけど普通はバックスラッシュ使う
2017/05/20(土) 22:52:55.54ID:d/44g1et0
>>136 >>137
バックスラッシュということは¥ですよね?
2017/05/20(土) 23:02:48.40ID:3NdrFBG3d
bashではセキュリティ上の理由で、現在のディレクトリのプログラムを起動するのに、./が必要だが、Winのプロンプトでは不要。
2017/05/20(土) 23:12:15.43ID:feiyOPgg0
>>139
日本語のwindowsならそう、円記号
コマンドプロンプトとかエクスプローラとかのパス表示には区切り文字に\使われてるでしょ
2017/05/20(土) 23:54:38.45ID:HEZORyL40
昔は.がデフォルトでPATHの先頭に入ってたな
ホームディレクトリにls置いたら面白いことになった
143デフォルトの名無しさん (ワッチョイ b33c-ysFl)
垢版 |
2017/05/21(日) 11:36:43.59ID:p33VUuKu0
#include <stdio.h>
int main(void){

char i[100];

printf("名前を入力してね。\n");
scanf("%s",i);
printf("%sさんですね。\n",i);

return 0;
}

7行目scanf関数で、&iでなくて、iでいけるのはなぜですか?
2017/05/21(日) 11:43:49.79ID:pUWFtSb10
>>143
i の型はポインタ,すなわち char *i だから
2017/05/21(日) 11:44:04.43ID:JHzb8j250
>>142
&はアドレス演算子で、その変数がメモリ上のどのアドレスにあるかを示す
scanf関数で&を使うのは、つまり、「この変数のアドレスに読み取ったものを書き込め」という意味になる。

しかし文字列などの配列は、配列名自身が「配列の一番最初の要素へのアドレス」を示すものになっているので
配列には&が不必要
146デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 12:20:22.06ID:EhbYbiNc0
>>144
printf("%u", sizeof i);
これで4だか8だかになるとでも?
147デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 12:22:40.28ID:EhbYbiNc0
クズの言い方だと
float a = 1.5f;
printf("%f", a);
これが問題なく動作するから、
よって a は double 型だと言っているようなものだ
2017/05/21(日) 12:23:47.67ID:fDsf7qWsa
>>143
配列を関数に渡すと配列の先頭要素へのポインタになるから。
んで、&は参照なんだけど、参照ってざっくり言えば読み込み専用ポインタ。
2017/05/21(日) 12:27:36.21ID:bYtGqajI0
>>146
ならない。
コンパイルエラー
2017/05/21(日) 12:32:18.38ID:wd4rgPA1a
あ、読み込み専用ってのは値が変えられないんじゃなくて、アドレスを変えられないって意味ね。
関数に渡された配列iをi++ってするとi[a++]と同じ意味になる。
(Cでi[a++]なんて書き方許されたかは忘れたが意図は組んでくれ)
2017/05/21(日) 12:33:01.58ID:wd4rgPA1a
ポインタなら上が出来て、参照は出来ないんよ。
2017/05/21(日) 12:41:04.19ID:pUWFtSb10
>>146
そりゃ配列とポインタは振る舞いがまったく同一というわけではなく,はっきりいって別物だから,言い分はわからんでもない.

>>143
訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ


>>147
そのたとえは意味不明,可変長引数の可変部は float->double に格上げされることを隠すなんでひどい物言いだね
2017/05/21(日) 12:51:40.59ID:EZ567Ylh0
最近は初心者を騙すのが流行しているのか
2017/05/21(日) 13:33:41.41ID:LBGUGIAq0
linuxでc言語開発したいんですが、IDE使わないのが一般的なんですか?
2017/05/21(日) 13:45:10.14ID:2TTm6ATPa
はい。
CやJavaならEclipseが一般的かと。
Eclipseにサポートして貰ってないのはviやemacsカスタマイズしてIDEとして使う感じ。
2017/05/21(日) 13:45:35.47ID:2TTm6ATPa
あ、はい。は忘れてw
2017/05/21(日) 15:31:07.21ID:Mj8j7wxe0
>>132もおねがいします
2017/05/21(日) 15:34:52.30ID:kPjNSBDr0
>>157
質問文が酷すぎて、何を聞きたいのか理解されてないだけだぞ
2017/05/21(日) 16:54:32.37ID:bYtGqajI0
>>154
最近は yacc じゃなくて何か新しいのあるんだよね。
2017/05/21(日) 17:27:25.62ID:1Ubd4ETn0
>>159
最近じゃないけど bison とかか?
161デフォルトの名無しさん (ワッチョイ aa18-JCxV)
垢版 |
2017/05/21(日) 17:32:24.58ID:ViqOYprV0
何でいきなり構文解析器の話になった?
2017/05/21(日) 17:53:33.03ID:Qv//Z9+/0
>>152
>訂正する,配列名を示す識別子は配列の先頭を示すポインタになる >>145 が丁寧な説明だ
なんねーよ カス

int a[10];
a++; // お前の主張が正しいならエラーにはならないはずだ
2017/05/21(日) 17:53:37.15ID:/ema5D/U0
c言語作るって言ってるからでしょ
164デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 17:59:27.49ID:EhbYbiNc0
>>149
コンパイルエラーって、どこが?
https://ideone.com/VpAiLB

>>152
147だが、最後ふじこってんじゃん
落ち着いてもっぺん日本語で書いてくれ
2017/05/21(日) 18:06:09.69ID:zNfd0kUpa
>>162
横からと言うか流されてるんで。。。
飛び飛びになってるけど
>>148
>>150
>>151
は、おいらなりに結構正確に書いたつもり。
参照はC++用語だからCだと&はアドレス演算子が正確だけど。
2017/05/21(日) 19:10:04.03ID:pUWFtSb10
はいはい,そりゃ配列とポインタは互換じゃないよ
分かりやすい説明はないものかね‥
2017/05/21(日) 19:10:52.98ID:pUWFtSb10
>>164
>147だが、最後ふじこってんじゃん
ん?
2017/05/21(日) 19:20:07.02ID:lXB+sVuE0
%f は 引数を double 仮定で引き出す
呼び出し側は (可変長引数の可変部なので) doubleに格上げしてから引数に詰んでる

詰んでるものと引き出すものの食い違いはおきてないんじゃないかね
2017/05/21(日) 19:28:27.25ID:pUWFtSb10
>>168
>積んでるものと引き出すものの食い違いはおきていない
そりゃ引数に積むときに float->double しているから,そうなって当然だが,その事実を隠したまま
>>147
を主張されても,そりゃないよ,としかいいようがない.
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況