C言語なら俺たちに聞け パート0001

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2012/07/07(土) 17:15:26.10
なんでも聞きなよ
2013/04/16(火) 20:30:02.08
No.411139 無題 2013/03/10(日) 10:58:22 返信 削除
2ちゃんねるのプログラム板たまに見てるんだけど、
片山とかって投稿者は何でいつも中途半端な投稿してるの?
信用してたらヤバめのバグを組み込むことになりそうなんだけど

No.411142 無題 (※削除※) 2013/03/10(日) 11:14:08 返信 削除
>411139
初心者を騙して楽しんでるらしいよ
必ずどこかに嘘を混ぜてる

No.411144 無題 (※削除※) 2013/03/10(日) 11:32:51 返信 削除
>411139
聞いた話ですが、数年前からそういった書き込みをしているそうです。
年単位で成長していないということも考えにくいので、やはり411142さんの言う通りなのかなと思います。

>411143
strncpyの前にNULL文字で埋めてください。

No.411149 無題 2013/03/10(日) 11:49:52 返信 削除
>411142
必ずではないぞ
正確な内容を書き込んでるのも見たことある
但しそのときは質問者の意図とは関係ない書き込みで
違った方向に議論を誘導しようとしてた

No.411152 無題 2013/03/10(日) 12:01:30 返信 削除
>411148
トリップ付けてる人でしょ?
2チャンネルで質問する際は気を付けろって(※削除※)のMLで流れてたよ。
2013/05/13(月) 20:53:15.85
n
2013/07/05(金) NY:AN:NY.AN
int n = 10;
int a[n];
こういう実行時に長さが決まる配列型って処理系の独自拡張?標準?
標準だとしたらいつから?
2013/07/05(金) NY:AN:NY.AN
C99
308デフォルトの名無しさん
垢版 |
2013/07/05(金) NY:AN:NY.AN
ウォーリーを探せをC言語でやりたいのですができますか?
2013/07/05(金) NY:AN:NY.AN
>>308
やる気と無限の時間と画像を取り込む装置があればできなくもない
2013/07/05(金) NY:AN:NY.AN
特に何も考えてなさそうなので flashを勧める
2013/07/05(金) NY:AN:NY.AN
C言語ってどうすれば上達するの?
書こうと思っても全然発想が出てこない
2013/07/05(金) NY:AN:NY.AN
やることないなら問題でも解いてろ
2013/07/05(金) NY:AN:NY.AN
>>308
http://toro.2ch.net/test/read.cgi/tech/1372676667/65
2013/07/05(金) NY:AN:NY.AN
>>311
ひたすら何か作るしかない
2013/07/05(金) NY:AN:NY.AN
topcoder
codeforces
codechef
pku
日本語が良ければaoj
2013/07/06(土) NY:AN:NY.AN
>311
他の言語、ツールで出来ることもC言語で作ってみる。
2013/07/06(土) NY:AN:NY.AN
C言語にゅうもんのコンソールアプリしか作れない症状と診た
2013/07/06(土) NY:AN:NY.AN
QZ病だね
2013/07/08(月) NY:AN:NY.AN
>>311

C言語プログラミング能力認定試験を受けて資格を取ってみる。
きっとCが嫌いになる
2013/07/08(月) NY:AN:NY.AN
>>319
サンプル問題みたけど一級の問題作ったのコボラーとしか思えない
2013/07/08(月) NY:AN:NY.AN
COBOLは消えてなくなると考えられていたから
C言語プログラマーが代替できるようにそういう問題にしてるとかじゃね?
2013/07/09(火) NY:AN:NY.AN
コボラーは死なず。ただ、消え去るのみ...
2013/08/03(土) NY:AN:NY.ANID:QuQbJ8u+!
10進数で計算してるから銀行からは消えないって聞いたけど
2013/08/06(火) NY:AN:NY.AN
任意精度整数演算できればいいんだから、そんなもん理由にならん
2013/08/19(月) NY:AN:NY.AN
#include <stdio.h>
int main(void)
{
int i, j;
int ar[7];
for (i = 0; i <= 15; i++) {
j = i % 7;
ar[j] = i * i;
printf("%2d ar[%d] = %3d\n", i, j, ar[j]);
}
return (0);
}

剰余でつまずきました
0〜15の数字 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
7で割った余り : 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1
最初の、7で割った余り : 0 1 2 3 4 5 6 がわかりません・・・orz
2013/08/19(月) NY:AN:NY.AN
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1286588867
2013/08/21(水) NY:AN:NY.AN
>>326
うぅむ、4年生がわからないのは理解できるが、親がわからないのはひどいな。
2013/08/21(水) NY:AN:NY.AN
まぁ、計算しなくても生きていけるからね。
2013/08/21(水) NY:AN:NY.AN
でも、計算出来ないと、人生のいろいろな場面で損する事はあるよね。
気づいてないかもしれんが...
2013/08/21(水) NY:AN:NY.AN
C言語、5年くらいやってるけどオレもわからん・・・orz
2013/09/09(月) 00:05:02.95
実際C言語で何が作れんの?ゲームとか?
2013/09/09(月) 00:19:46.71
だいたいのソフトは書けるよ。
2013/09/09(月) 00:52:18.21
Javaと比べてどっちが良いかな?
2013/09/09(月) 02:27:13.74
用途によるのでどちらが良いということはない。

オムライスと剛力彩芽のどっちがいいかなというくらいの無意味さ。
俺はオムライスの方がいいけどな。
2013/09/09(月) 08:34:34.55
C言語がわからないのではなく、C言語によるGUIの作り方や日本語文字列の処理方法がわからないw
2013/09/09(月) 13:47:42.58
そーいうのはWin32APIとかgtk+とかを勉強しないと
2013/09/09(月) 23:23:54.77
俺もCをやり始める前はそうだった
「C言語入門」だとクルマのエンジン部分しかわからない
JavaとかVBだともう少しいろいろついてくるんだけどな
2013/09/10(火) 06:57:48.80
>>334
>剛力彩芽
名曲探偵アマデウス以来‥‥ちがった、あれは黒川芽以
2013/11/10(日) 12:43:45.80
ペイント実行してJPG画像読み込んでBMP画像として保存する
をC言語でそうやってやるんですか?
2013/11/10(日) 12:45:37.72
誤記
C言語でそうやってるんですか?
2013/11/10(日) 12:47:38.32
誤記
C言語でどうやってやるんですか?
2013/11/10(日) 12:49:45.47
ペイントを実行するのにC言語が必要なのか
それはご苦労なコッタ
2013/11/10(日) 12:50:30.94
まずペイントを作ります
2013/11/10(日) 13:15:22.79
やりたいことはJPG画像からbmp画像の変換です。
たくさんのJPGファイルを一括で処理します。
一括変換フリーソフトをいろいろ試したのですが、
ペイントの24ビットマップ形式で保存できるものがありませんでした。
なのでC言語からペイントを実行、保存しようと考えました。
2013/11/10(日) 13:23:06.54
Irfan Viewならできそうだが

ついでに言っとくと
「ぼくはC言語でぷろぐらむできます」とか他で言わないようにな
恥をかくぞ
346sage
垢版 |
2013/11/10(日) 13:32:04.86
Irfan Viewでは一括処理やマクロが出来なかった気がします。
C言語はド初心者レベルと自覚しています。はい。
347sage
垢版 |
2013/11/10(日) 13:39:05.55
ペイントだとbmp保存で24ビットや256色とかいろいろ種類があります。
一方Irfan Viewでのbmp保存は一種類しかなく、この形式が望むものと違います
2013/11/10(日) 13:49:26.44
ImageMagick使えば
2013/11/10(日) 14:10:22.06
ありがとうございます。試してみます。
2013/11/10(日) 14:52:44.35
JTrimじゃあかんのか
2013/11/10(日) 17:10:52.83
ありがとうございます。
JTrimは一括変換できそうでね。あとはbmpがどの形式で保存されてるか。
試してみます。
2013/12/07(土) 00:57:54.98
>>335
必要な処理が書かれてそうなSoftware探してきてfind-grep
よほどバカでなければ2、3個のプロジェクト眺めたら何が必要かぐらい分かる
真面目にフローを追うのは知らない。
動的デバッグで処理をトレースする方法を知りたいけれど、あんまりネット上で情報を見ない。
2014/01/10(金) 10:52:51.16
typedefみたいな型変換ってなんのために必要なの?
結局、中身は int とかじゃないんですか?
2014/01/10(金) 11:53:19.05
>>353
typedefがないとstdio.hのFILEの代わりにコンパイラごとに異なった構造体を使う羽目になるよ。
例えば、FILEはこんな構造体の別名になっているかも知れない。
--
struct __sFILE {
unsigned char *_p; /* current position in (some) buffer */
int _r; /* read space left for getc() */
int _w; /* write space left for putc() */
short _flags; /* flags, below; this FILE is free if 0 */
short _file; /* fileno, if Unix descriptor, else -1 */
struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
int _lbfsize; /* 0 or -_bf._size, for inline putc */

/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */

/* tricks to meet minimum requirements even when malloc() fails */
unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
unsigned char _nbuf[1]; /* guarantee a getc() buffer */

/* separate buffer for fgetline() when line crosses buffer boundary */
struct __sbuf _lb; /* buffer for fgetline() */

};
2014/01/10(金) 14:38:36.47
typedef struct { ...... } T_STRUCT;

T_STRUCT aaa,*ppp;
2014/01/10(金) 15:09:55.39
>>354
よくわかりません・・・orz
2014/01/10(金) 15:33:58.56
主に構造体変数の記述が楽になる機能と思っとけばいい。
2014/01/10(金) 16:19:12.00
楽になるって言うか、環境ごとの差異を吸収してくれると言えるね。
2014/03/15(土) 21:28:11.30ID:9QOnV1hL
>>356
なんにつけても、別名とか読み替え、すげ替え(怖‥)とか、最後の切り札として欲しいという場面があるのかもしれません
2014/04/27(日) 13:35:26.65ID:bd99OFN+
C99のforはfor (int i=0; i<10; i++){}こう書くとエラーになるそうなんですが
clang 3.0で試してみたらエラーになりません
clang 3.0ってC99に対応してますよね
何故エラーが出力されないのですか?
2014/04/27(日) 14:51:02.79ID:xdZ6Vmhj
>>360
> エラーになるそうなんですが

そんなことをどこで聞いた?
2014/04/27(日) 15:11:54.85ID:6kmnG/6w
あ、すいませんclangだと思ってたらgccでした
gccだとc99でコンパイルしないとエラーになるんですよ
2014/04/27(日) 15:14:09.23ID:6kmnG/6w
オンラインでコンパイルできるところはほとんどそういうエラーがでますよ
http://ideone.com/YzhJfBとか
2014/04/27(日) 15:15:48.48ID:6kmnG/6w
いったんclangの話は忘れてください
clangではエラーはでません。
gccでC99としてコンパイルしない場合にエラーがでるんですが
これ元からこういう仕様なんでしょうか?
わざわざ
int i;
for (i=0; i<10;i++)
みたいに書いてるの昔から見た記憶がないんですよ
2014/04/27(日) 17:13:57.90ID:xdZ6Vmhj
>>360 で書いてるのは「C99だとエラーになる」と「clang3.0 ではエラーにならない」で、
>>362 では「gcc では c99 モードでコンパイルすることを明示した場合意外ではエラーになる」と言ってる。

お前、ほんまに説明が下手なやつやな。

>>364 が本当に言いたかったことでいいんだな。

それは仕様。

int i;
for (i=0; i<10;i++)

みたいなのも昔は普通にあったし今でもそういうスタイルを好む人はたくさんいる。
2014/04/27(日) 19:12:34.67ID:Pjc55Uh5
>>365
なるほど、勉強になりました
2014/04/27(日) 21:58:01.52ID:dRMpu4rZ
>>364
エラーメッセージを読むといいとおもう
http://ideone.com/H0qiU7
http://ideone.com/Sk6diU
2014/04/30(水) 22:30:29.65ID:5eizdNbo
リンカスクリプトの話題はこのスレで聞いてもよいものだろうか?
2014/04/30(水) 22:53:56.73ID:Ov1TiWMO
それは的外れに過ぎるね。
2014/04/30(水) 22:57:04.98ID:5eizdNbo
>>369
サンクス 別スレで聞く
371デフォルトの名無しさん
垢版 |
2014/11/06(木) 21:12:20.39ID:iaZsweTc
なんでこんな重複スレみたいな糞スレ立てるんだよ。
2014/11/10(月) 11:39:30.82ID:Gb+bzZuG
すぐ荒れるから。
2014/11/11(火) 09:21:14.54ID:6NYBFoc4
http://pastebin.com/sngpMHR7
printf("%sの%s\n", mark[draw_mark-1], digit[draw_mark-1]);

draw_mark-1 とdraw_mark-1は、どうして-1なんでしょうか?
2014/11/11(火) 11:22:25.45ID:QByfxOoU
>draw_mark = rand() % 4 + 1; //マークを決定する
1から4の乱数を0から始まる配列番号に当てはめるから。
2014/11/11(火) 14:20:44.02ID:fzwLZ9n2
それは、わかるんだが
>draw_mark = rand() % 4 + 1
これって、変数に1〜4 までを適当に決めてるだけで
どうして、配列と関係があるんですか?
2014/11/11(火) 14:36:12.21ID:CXWKhWIS
>>373 中の mark[draw_mark-1] で
なんで -1 してるん? という質問からの派生

配列のインデックスは 0 から開始する(リンク先ソースでは mark[0] 〜 mark[3] まで)
変数 draw_mark は 1 から4まで

この draw_mark を使って 配列の要素を正しくアクセスするのに -1 して帳尻をあわせてる
2014/11/11(火) 17:55:38.32ID:iIdIPRdi
>>376
ありがとうございます
2014/11/12(水) 07:45:05.87ID:/ZcTzOPa
typedef struct
{
int value;
} TEST;

TEST t = {1};
printf("%d\n",t);

環境:VC++2012 express

このコードで1が出力されるのは、C言語の仕様に合ってるんだっけ?
2014/11/12(水) 08:31:23.63ID:Kd9sZNKE
合ってるんじゃないの?
2014/11/12(水) 10:12:31.16ID:6b20czbE
変換指定と実引数があってないから未定義じゃない?
2014/11/12(水) 18:54:50.32ID:8RoZt+WE
ポインタ渡してるのかと誤読した。

まぁ未定義で、常識的にやるべきじゃない記述だな。
2014/11/12(水) 23:00:08.69ID:8UdI52J6
だよな。ありがとう。
2014/11/13(木) 14:12:51.43ID:fbX2c55U
メンバー変数がint型一つしかない構造体をつくる理由が思いつかん。
2014/11/13(木) 18:21:52.27ID:KUU70nma
>>378
その疑問が解消したとして
何かの役に立つのでしょうか?
2014/11/13(木) 23:22:17.48ID:RTKAZJeS
型保証したくてね。
typedefだと間違って引数に渡した時にコンパイルエラーにならないから。

で、普通のプリミティブ型でやってたのを構造体に置き換える作業中に
なぜかprintfで正しく出力されたんで、面倒臭いアクセス関数使わなくてもいいのかも
と思って聞いてみた。

Cで擬似オブジェクト指向やってると面倒臭すぎる。演算子のオーバーロードが欲しい。
改めてC++の偉大さ(謎)が分かったかもww
2014/11/13(木) 23:42:19.83ID:NUKISzLu
printfで型保証とな?
2014/11/14(金) 02:23:00.78ID:ZKHgRmzB
printfは可変長引数の関数だから第2引数以降の型を確認しないのでエラーが出ないでしょ。
sprintf、fprintf、scanf、、、など。
その引数をどう扱うかは関数によって様々
2014/11/14(金) 07:03:46.18ID:TIi0CXWz
固定長引数での関数の話。
printfとかは、もちろん値を取り出して渡すつもりだったんで、あれ?と思っただけ。
2014/11/14(金) 09:55:14.56ID:LHxJpsmN
引数のスタックへの積まれる方向と構造体のメンバーの並ぶ順番は一致するのかと考え…ることも無く「やるな!」の一択。
2014/11/14(金) 10:15:46.48ID:NoejJarl
printfの本体(vprintfだったかな)のソース眺めてみれば、答えが
2014/11/14(金) 11:51:06.29ID:ZKHgRmzB
#include <stdio.h>
typedef struct { int value; } TEST;
void pr(int data) { printf("%d\n", data); }
int main()
{
TEST t = {1};
pr(t); // ← コンパイルエラーになる
return 0;
}
をコンパイルすれば分かると思うけど型が指定されている関数だとエラーになる。
>>378は構造体TESTのデータ(つまりvalue==1のみ)がprintfに渡されたまたま表示されているだけ。

以下のコードが "111, 333" ではなく "111, 222" と表示される理由を考えると分かるかな?
#include <stdio.h>
typedef struct { int v1; int v2; } TEST;
int main()
{
TEST t = {111, 222}; int d = 333;
printf("%d, %d\n", t, d);
return 0;
}
2014/11/14(金) 12:01:18.41ID:ZKHgRmzB
そして、111, 222 と表示されるとしても
「たまたま」そう表示されているだけで
環境によっては変な表示になるかエラー
2014/11/14(金) 12:58:22.70ID:qPlOgKHi
それは未定義で終わり。ぐだぐだ書く必要はない
2014/11/15(土) 12:45:04.51ID:TpdAhqvC
>>393
賛成。
395デフォルトの名無しさん
垢版 |
2015/02/07(土) 03:31:09.68ID:ldaWMMkn
初めまして、
8〜12個のxy座標で囲まれた地域(歪な多角形)があり、調査対象の座標がその中にあるか、を判定する関数を作りたいのですが
どうすれば良いかが見当もつかず困っています。
判る方がおりましたらご教授下さい。
OSはLinuxです。
宜しくお願いします。
2015/02/07(土) 03:47:05.12ID:Y8QeCJm/
>>395
思いつきだけど
1. 囲まれた地域(歪な多角形)を囲み多角形に接しない(余白を大きめに取った)四角形をまず求める
2. 調査対象の座標から色を塗りつぶす
3. 囲まれた地域の外である、1.で求めた四角形のところを塗ろうとするなら、調査対象の座標は多角形の外側である
4. 1.で求めた四角形のところを塗らずに処理完了したら、調査対象の座標は多角形の内側である
でいかがでしょう。
2015/02/07(土) 04:38:10.19ID:G4SX7WFX
調査点と 範囲を決める頂点列 P(Xi, Yi) とのなす角(符号付)の総和が
360度ならば内包点 そうでないならば外の点
398デフォルトの名無しさん
垢版 |
2015/02/08(日) 00:12:37.99ID:jDoVco3x
ダブルポインタが理解できない。
int **pp;
int *p;
int n[] = {0, 1, 2};
pp = &amp;p;
p = n;
p++;
printf("**pp : %d", **pp);
これでなんで0じゃなくて1が出るの。だれかわかりやすく解説してくれ。
もしくは参考書教えて。たのむます。
2015/02/08(日) 01:36:05.41ID:HJEgExkV
始めにpは0のアドレスを指している。
p++でpは1のアドレスを指す。
*ppはpのアドレス、**ppはpの指す値。
2015/02/08(日) 01:56:25.70ID:EWNvntIT
BASICならPOKE/PEEK()/VARPTR()で分かる筈だけど、Cは変数とメモリを混ぜてるから分かりにくいよなw
BASICでプログラムを書いてると分かるけど、メモリを直接いじるプログラムは通常書かないから、Cの異常性が分かりやすいw
2015/02/08(日) 02:02:24.66ID:LUl61OMZ
>>398
> pp = &p;
> p = n;

順序逆だ
2015/02/08(日) 02:03:14.00ID:LUl61OMZ
と思ったら、問題ありませんね。失礼しました
2015/02/08(日) 02:08:51.18ID:EWNvntIT
だいたいBASICよりアトに出てるのに、どうして構文解析がBASIC未満なんだろうな?w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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