C言語の質問スレッド<42>
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してくれ。
というより、聞く前に一応 Web で検索しろ。
コンパイラを探してるなら >>2 を見ろ。
過去ログ(DAT落ちあり)なら>>3-100あたりにあるかも。
GUIとか、C標準でできない事の質問は使ってる開発環境のスレに逝ってくれ。
ソース丸投げ、宿題、書籍 は専門の別スレがあるからそこへ逝ってくれ。
未定義・処理系依存ネタはご遠慮ください。
誰かが(故意にではなく)それらの書き込みをしても、いちいち突っ込まないでください。
規格オタクはこのスレッドには必要ありません。論争したかったら独自にスレッドを立ててそこでやってください。
C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
前スレ <41>
http://pc3.2ch.net/test/read.cgi/tech/1036876790/
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGreturn(x);
みたいに書くやつ。
関数と文の区別がついてないんじゃないか?
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG024832
NGNG>>32
int main( void ) {
int i;
puts ( "好きな所で止めろ" );
getchar();
for ( i = 1; ; i++ ) printf ( "%d\n", i );
return 0;
}
0249デフォルトの名無しさん
NGNGもう黙れよJPS
0250デフォルトの名無しさん
NGNGお前、>>1が気に入らないからこのスレをつぶそうとしているだけだろ?
0251デフォルトの名無しさん
NGNGif(isalpha(c)){
} else if (isdigit(c)){
}
あるものの否定を考えるよりも何かに合致してるかどうかを考える方が安易。
!をやたら使いたがる奴はDQN。
0252デフォルトの名無しさん
NGNGなんか読みにくかったから、手を入れてみた。
int m = 3;
int n = 4;
int **str;
int i, j;
if ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
printf("メモリー確保の失敗:1");
exit(1);
}
for (i = 0; i < m; i++) {
if((str[i] = (int*)malloc(sizeof(int) * n)) == NULL) {
printf("メモリー確保の失敗:2");
exit(1);
}
}
for(i = 0; i < m; i++){
putchar('\n');
for(j = 0; j < n; j++){
str[i][j] = 'A' + i * n + j;
printf("%c", str[i][j]);
}
}
putchar('\n');
for(i = 0; i < m; i++){
putchar('\n');
for(j = 0; j < n; j++) {
printf("%3d",str[i][j]);
}
}
0253252
NGNGABCD
EFGH
IJKL
65 66 67 68
69 70 71 72
73 74 75 76
0254デフォルトの名無しさん
NGNG025532
NGNGi2=3;
j2=4;
ij=i2*j2;
if((str1=(int**)malloc(sizeof(int*)*i2))==NULL){
printf("メモリー確保の失敗:1");
exit(1);
}
for(i1=0;i1<i2;i1++)
if((str1[i1]=(int*)malloc(sizeof(int)*j2))==NULL){
printf("メモリー確保の失敗:2");
exit(1);
}
for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
printf("%c",str1[i1/j2][(len++)%i2]=('A'+i1+j1));
}
}
putchar('\n');
for(i1=0;i1<i2;i1++){
putchar('\n');
for(j1=0;j1<j2;j1++)
printf("%3c",str1[i1][j1]);
}
return 0;
}
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGif ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
じゃなくて
if (!(str = (int**)malloc(sizeof(int*) * m))) {
にしろって。話聞いてなかったのか?
0259デフォルトの名無しさん
NGNGpow(x, -2/3)*pow(1-x, -1/3) ← この書き方で合ってますか?
0260デフォルトの名無しさん
NGNGへえ。じゃあ「アルファベット以外」ってどう書くのさ。
「アルファベットでも数字でもない」ってのは?
0261252
NGNG聞いてなかった。
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG合ってません。整数/整数は切り捨てて整数になります。
0265デフォルトの名無しさん
NGNGされないけど、powに渡せば結果がdoubleになるだろ?
0266デフォルトの名無しさん
NGNGあの、>259のような場合どういう書き方をしたら良いですか?
0267デフォルトの名無しさん
NGNG渡す前に切り捨てられちゃうって…
0268デフォルトの名無しさん
NGNGif (!str) {
0269265
NGNG.0をつければOKだよね
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG分母の前にでも (double) 入れろ
0272デフォルトの名無しさん
NGNG人に聞く前にコード書いてみたらどうかな、お馬鹿さん。
0273デフォルトの名無しさん
NGNGpow(x, -2.0 / 3.0) * pow(1.0 - x, -1.0 / 3.0)
0274デフォルトの名無しさん
NGNGなんでわざわざ二つに分けるんだ? 一行でいいだろ。
0276デフォルトの名無しさん
NGNGそんな簡単に釣られるなよ(w
0277デフォルトの名無しさん
NGNGif(isalnum(c)){
/* なにもしない */
}
else{
/* ここでなにかする */
}
これくらいしか思いつかない・・・・
0278デフォルトの名無しさん
NGNGんなことするやつぁ超DQNの馬鹿
0279デフォルトの名無しさん
NGNGだって!を使ってはならないって言うし!
0280デフォルトの名無しさん
NGNGなんて書く奴はDQN
0281デフォルトの名無しさん
NGNG何でもかんでも一行で書かないとダメな人?
0282デフォルトの名無しさん
NGNGん? おれは「!マンセー」派だもの。
読みやす〜く
if (!isalpha(c))
if (!isalnum(c))
と書くわさ。
あんたは!使わずにどう書くんだい?
0283デフォルトの名無しさん
NGNG禿同!!
0284デフォルトの名無しさん
NGNGの方が見やすいと思うが。
0285デフォルトの名無しさん
NGNG!を使わないやつはDQN
真似するとDQNが移る。
0286デフォルトの名無しさん
NGNGおまいの感覚を疑う
0287268
NGNGwhile では一行でかくこともある。
でも if では必要ない。
0288デフォルトの名無しさん
NGNG世の中の教科書もFAQも規格も全部こうだゴラァ
疑うなら自分の感覚だろ。
0289デフォルトの名無しさん
NGNGstr = (int**)malloc(sizeof(int*) * m)
if (str == NULL) {
の方が一番イイ!
0290デフォルトの名無しさん
NGNG>>世の中の教科書もFAQも規格も全部こうだゴラァ
知障か?
0291デフォルトの名無しさん
NGNGelse ifだとどうなるんだ?
0292デフォルトの名無しさん
NGNGウソツキ。
0293デフォルトの名無しさん
NGNGfp=fopen("32.aho","r");
if(fp==NULL){
}
こう書くかな。
if(!(fp=fopen("32.aho","r"))){ } とかくこともあるけど。
0294デフォルトの名無しさん
NGNGwhileならいいのにifはダメかよ。
なんちゅー一貫性のなさだ。
0295デフォルトの名無しさん
NGNGstr = ...
if (str)...
}
0297252
NGNGvoid count(int **str, int m, int n, int base)
{
int i, j;
for(i = 0; i < m; i++){
for(j = 0; j < n; j++){
str[i][j] = base + i * n + j;
}
}
}
使い方
count(str, m, n, 'A');
0298デフォルトの名無しさん
NGNGあふぉか?
while はどうしても2行にわけられないときがある
if は必ずわけれる
0299デフォルトの名無しさん
NGNGelse if の中だとどうするんだ?
0301一番叩かれる意見
NGNG0302デフォルトの名無しさん
NGNG>>295
0303デフォルトの名無しさん
NGNGfor (;;) {
str = ...
if (str) break;
}
0304デフォルトの名無しさん
NGNGどういうときですか?
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGmallocが失敗するような状態で、そのあとどうするの?
テヌキアプリならセグフォルで落しちゃった方がよくない?
というのは、ありえるかも。
0307デフォルトの名無しさん
NGNG慣れの問題。
0308デフォルトの名無しさん
NGNG必死に反論考えて
辿り着いた答えがそれですか?(W
0309デフォルトの名無しさん
NGNGwhileでやってよい書き方が、
なぜifではダメなんだ?
whileでも、同じコードを2回書けば
必ず分けられるじゃないか。
条件の中で (変数=値)== 値
が汚いというなら、徹底しろよ。
まったく不統一な頭したやつだな。
0310デフォルトの名無しさん
NGNG素直に「降参」って言えば良いのに。
0312デフォルトの名無しさん
NGNG同じコードを2回書くのは悪いプログラミングの例だが?
0313デフォルトの名無しさん
NGNG必死に反論考えて
辿り着いた答えがそれですか(W
0314デフォルトの名無しさん
NGNG変数 == 値
でいいだろが。
0315デフォルトの名無しさん
NGNGelse {
if ...
else {
if ...
とネストを深くしていくのかよ。
変わってるねー。
0316デフォルトの名無しさん
NGNGチェックしてても落ちる。
0317デフォルトの名無しさん
NGNGmallocが失敗してもすぐ落ちるわけじゃないし、ある程度不正な状態で
コードが進んで何か悪さをするより自分で落としたほうがいい。
0318デフォルトの名無しさん
NGNGてかそんな状況ないし
0319デフォルトの名無しさん
NGNGmallocしたらすぐにその領域を使わない?
NULLにアクセスしたら落ちることが多いと思うけど
0320デフォルトの名無しさん
NGNG(g_malloc()だっけ?)
は malloc に失敗したら abort するようになってるよね。確か。
0321デフォルトの名無しさん
NGNGargc>2ならエラー
==2なら、argv[1]をファイル名としてファイルを開く。
開けなければ"default.txt"を開く。
開けなければエラー。
って、あんたのやり方だとどんどんネストが深くなるが?
0322デフォルトの名無しさん
NGNGたまーに、仮想アドレス0x0周辺を書き換えておいてノホホーンと
さきにいくような処理系とOSが…あるのかな?
0323デフォルトの名無しさん
NGNGmallocがそんなことしちゃったら規格はずれになっちゃうよ。
g_mallocだと思う。そんな関数しらないけど。
0324デフォルトの名無しさん
NGNGDOSとか。
0325デフォルトの名無しさん
NGNGglibc じゃないよ。glib ね。Gtk+ に使われてるやつ
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNGじゃあ多分g_mallocだと思うよ。
標準のmallocとかぶっちゃうし。
0328デフォルトの名無しさん
NGNGAIXとか。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNGたかだかネスト2つだと思うんだけど、どういうやり方してんの?
0331デフォルトの名無しさん
NGNG脳内ネストの事だろ、きっと。
0332319
NGNGまあ自分専用のプログラムでもないかぎりは、mallocの戻り値チェックは鉄則だと思うけどね。
0333デフォルトの名無しさん
NGNGよく「mallocできないと落ちる」ラッパー作るよね。
「mallocできないとエラーハンドラ呼び出す。
ハンドラは変えられる。デフォルトはabort。」
としてくれると良いかも。
0334デフォルトの名無しさん
NGNGんで、そもそもなんで2つに分けたいか聞きたいんだけど。
単に「わかりにくい」とかいう主観的なのは却下ね。
033532
NGNG0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNG#include <stdlib.h>
void *g_malloc(size_t size)
{
void *p;
p=malloc(size);
if(!p) abort();
return p;
}
こんな感じ?
0338デフォルトの名無しさん
NGNGたいした対処できないって言ってもメモリがありませんぐらいは言えるだろうから、
だまって落ちるよりはいいと思うぞ。
0339デフォルトの名無しさん
NGNGネタですか?主観以外の何物でも無いと思うが。
0340デフォルトの名無しさん
NGNG分かりにくくてもいいなら全部一行で書けよ。
0341337
NGNG0342デフォルトの名無しさん
NGNG大多数の人間の主観=客観
■ このスレッドは過去ログ倉庫に格納されています