トップページ⇒tech
1001コメント251KB

C言語なら俺に聞け! Part 〈58〉

■ このスレッドは過去ログ倉庫に格納されています
0001前スレ995NGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

コンパイラを探しているなら >>2-13 を。
C machineはCに非ず

上記を逸した場合の結果は激しく未定義だゴルァ!!

C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

前スレ C言語なら俺に聞け! Part 〈57〉
http://pc2.2ch.net/test/read.cgi/tech/1053725121/
0159デフォルトの名無しさんNGNG
変数名は ans とかのほうがわかりやすいな。
それと、ans[5]にして1問めから順にans[0], ans[1]…といれていったほうがいいかな。
0160デフォルトの名無しさんNGNG
で、ズレのはなんでだろう。漏れもわからん。
ちなみにifとelseの間は普通は1行空けたりしないぞ。

あと、みなさんへ。
ソースを晒すときは、めんどうでなければインデントは全角スペースで。
unixならviで:%s/ /  /g
秀丸ならタブとかスペース4個を全角スペース2個にすればよろし。

めんどいけど。
0161デフォルトの名無しさんNGNG
char *str = "HelloWorld";
と
char str[] = "HelloWorld";
の違いがわかりません。

どうなんですか?
0162YUISNGNG
ONLINE DVDSHOP YUIS
http://www.dvd-yuis.com/
豊富な品揃え!新品アダルトDVDが800円〜!
http://www.dvd-yuis.com/
最速発送!!すぐ届く!!
http://www.dvd-yuis.com/
よろしくね!!!
0163デフォルトの名無しさんNGNG
>>161
FAQだ。これを読め。
http://www.catnet.ne.jp/kouno/c_faq/c6.html#2
0164デフォルトの名無しさんNGNG
>>158
俺には分かるぞ!
喪前のキーボードのQから右に読んでみそ。







( ´A`)

0165デフォルトの名無しさんNGNG
Q J K X B M W V Z
0166デフォルトの名無しさんNGNG
>>163
ありがとうございます。

sizeof()でサイズをとりたかったんですけど
んじゃあ、ムリなんですか?

sizeof(str)だと4(ポインタのサイズ?)が返ってくるんで。。
0167無料動画直リンNGNG
http://homepage.mac.com/norika27/
0168デフォルトの名無しさんNGNG

あなたが探してるのってこれだよね?この中にあったよ♪
http://alink3.uic.to/user/angeler.html
http://angelers.free-city.net/page002.html
0169デフォルトの名無しさんNGNG
>>166
上ならポインタのサイズ、下なら配列のサイズ
0170デフォルトの名無しさんNGNG
>>164
俺のマシンのrootのパスワードだ ( ´A`)
最後にyがつくけど
0171デフォルトの名無しさんNGNG
>>154
こういうんじゃダメなの?

#include <stdio.h>
main()
{
  char *mondai[5] = {
    "第一問:10+10=? A",
    "第二問:10×10=? A",
    "第三問:10÷10=? A",
    "第四問:10−10=? A",
    "第五問:10×10×10=? A"
    };
  int kotae[5] = {10+10,10*10,10/10,10-10,10*10*10};
  int i,in,count=0;

  printf("問題を5問出題します。\n");
  for(i=0;i<5;i++){
    printf("%s",mondai[i]);
    scanf("%d",&in);
    if(in==kotae[i]){
      count++;
      printf("正解です\n");
    }else{
      printf("不正解です\n");
    }
  }

  if(count==5) printf("全問正解です!\n");
  else printf("%d問正解です。\n",count);
}
0172デフォルトの名無しさんNGNG
>>171
 だらけでみにくいぞ
0173172NGNG
あら・・・・
>>171
&nbspだらけでみにくいぞ
0174デフォルトの名無しさんNGNG
>>172
何が?
0175デフォルトの名無しさんNGNG
>>174
>>171が。charの前とかA"の前とか。ほかにもいろいろ。
0176デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
 char *mondai[5] = {
"第一問:10+10=? A",
"第二問:10×10=? A",
"第三問:10÷10=? A",
"第四問:10−10=? A",
"第五問:10×10×10=? A"
};
 int kotae[5] = {10+10,10*10,10/10,10-10,10*10*10};
 int i,in,count=0;

 printf("問題を5問出題します。\n");
 for(i=0;i<5;i++){
 printf("%s",mondai[i]);
 scanf("%d",&in);
 if(in==kotae[i]){
 count++;
 printf("正解です\n");
}else{
 printf("不正解です\n");
}
}

 if(count==5) printf("全問正解です!\n");
 else printf("%d問正解です。\n",count);
}
0177デフォルトの名無しさんNGNG
nbspのあとにセミコロンがないから。
0178デフォルトの名無しさんNGNG
>153で教本?の最初の方までしか覚えてないっぽいからcharとか知らないんじゃない?
漏れダイテル本持ってないから解らんけど
0179デフォルトの名無しさんNGNG
>>164
それか!(w
そんな命名方法考え付くのに感心する。
0180デフォルトの名無しさんNGNG
今まで一人でプログラムを組んでた時は、統一性のない汚いソースでも別に良かったんですが
複数でプログラムを組むことになったので、読みやすい綺麗な書き方を見本にしたいので
参考になるサンプルソースないですか?
0181デフォルトの名無しさんNGNG
ないです。
0182デフォルトの名無しさんNGNG
>>180
*BSD をハックする。
0183デフォルトの名無しさんNGNG
>>180
2項演算子の左右は空白を空けろ
forやifにぶら下がる処理は必ず{}でブロック化しろ
{}をif()の横から始めたり下から始めたり場所によって違うのはやめろ
コンマやセミコロンでデータや式を列挙する場合は空白を空けろ
変数の命名法はある程度の指針を決めておけ
コメントはちゃんと書け
めしは上手く作れいつもきれいでいろ
0184デフォルトの名無しさんNGNG
>>180
設計をきちんとしる。コーディング規約つくれ。クロスレビューしる。
0185デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765/
Cの初心者ならここに来るしかない!
質問、雑談何でもOK!
初歩的なことでももちろんOK!
もちろん、上級者の皆様にも来ていただきたいです。





0186デフォルトの名無しさんNGNG
http://member.nifty.ne.jp/yamazaki/doc/code_design/vol01.html

メンバー全員で読め。っていうか印刷して配っておけ。
0187デフォルトの名無しさんNGNG
>186
ノイズが多いし。ハンガリアンは嫌いだ
0188デフォルトの名無しさんNGNG
>>186
ファイルローカルだってさ(藁
内部リンケージだろ(藁
0189デフォルトの名無しさんNGNG
>>188
そんくらい目くじら立てるなよ。
どうせお前も他人が聞いたら変な言葉の使い方してるんだから。
0190デフォルトの名無しさんNGNG
Cならなんでもいいんですよね。
さっきVBに技能検定があることを知り、つい笑ってしまいました。
それは置いといて・・
Cにも検定はあるんですか?
0191デフォルトの名無しさんNGNG
>>190
ある。糞の役にも立たないのが。

それはそれとしてなぜ「C言語 検定」でぐぐるくらいしないのか。
0192デフォルトの名無しさんNGNG
>>189
スマソ

>>190
C言語検定とやらがあったと思う。名前が違うかもしれないけど。
0193デフォルトの名無しさんNGNG
http://www.sikaku.gr.jp/main.html

ここにあるやつかな?VBもあるね。
0194デフォルトの名無しさんNGNG
>>190
持ってるけど
履歴書埋めるくらいの役にしかたたない
ド素人ではありませんと証明するくらいか…
0195デフォルトの名無しさんNGNG
Cっていきなり3級なんですね。
がんばろ
0196デフォルトの名無しさんNGNG
>>194
見せる相手によっては「こんなもので実力の証明にしようとしやがって」
とかバカにされるので注意な。ど素人以下の扱いを受けることあります。
0197デフォルトの名無しさんNGNG
>>195
だから、3級も2級も使えないって。
1級は見たことないが、こんな資格の1級まで目指すやつキモい。
>>196
そのとおりです。
0198デフォルトの名無しさんNGNG
マジっすか、まぁもし検定受かったら
履歴書に書くときは気をつけよう。
0199デフォルトの名無しさんNGNG
自慢げにしなければ書いてもいいと思うけど・・・・
0200デフォルトの名無しさんNGNG
すかさず200げと。
履歴書に200げと!って書いていい?
0201デフォルトの名無しさんNGNG
個人的にはどんな資格でもないよりはマシだと思うけど、
過剰なくらい資格をバカにする技術者もいるんで、注意が必要だな。
0202デフォルトの名無しさんNGNG
C言語の試験ってCの歴史まで出題されるあれか?
0203デフォルトの名無しさんNGNG
>>202
マジ?確かに必要ないかもな・・・
0204デフォルトの名無しさんNGNG
Cmachineってどうなのよ?
0205デフォルトの名無しさんNGNG
>>204
何が?
0206デフォルトの名無しさんNGNG
>>187
いや、とりあえず使う人間全員で統一した見解を持つのは必要だろ?
このリンク先が気に食わないなら、自分で統一ルールを作って晒してくれ。

>>204
誰も使いたがらない、不燃ゴミだな。
0207204NGNG
なんかうちの高校ではみんなが自由つかえるようにフリーのソフト
を使っていますとか言っているんですが、もうこの高校に入学した
時点で終わりですか?
0208デフォルトの名無しさんNGNG
せめて、完全じゃなくてもANSI C準拠を目指したコンパイラを使った方がいいって。
0209デフォルトの名無しさんNGNG
>>207
その程度で高校が終わってるかどうか判断しようとする
お前が終わってるよ。確実にな。
0210204NGNG
>>209
いやフリーならhttp://pc2.2ch.net/test/read.cgi/tech/1035882599/1
があると思った。
0211デフォルトの名無しさんNGNG
マジレスするならば。
C machineは標準Cと挙動が違いすぎるのでCの学習には全く適さない。
では、プログラミング一般の学習にはどうかというと、Cは抽象度が低すぎて
これまた適さないと思うんだな。何がいいかは意見が分かれるだろうけど、
おれだったらSchemeかOcamlかRubyかPythonあたりだと思う。

結論としてCの習得にもプログラミング一般の習得にも適さないので、
C machineは使わんほうがいい、と思う。その高校が終わってるかどうかはしらんw
0212デフォルトの名無しさんNGNG
C Machineのctype.hを見てみたら引数を複数回評価するようになっていたけどいいのかな?
普通はisalphaなどはテーブル参照で実装すると思うけど。
0213デフォルトの名無しさんNGNG
>>212
別にマクロであることさえ分かってればいいんじゃない?
0214デフォルトの名無しさんNGNG
>>212
「普通は」は使わないほうがいい
0215デフォルトの名無しさんNGNG
でもあまり#ifを使っていないからみやすいぞ(笑)
0216デフォルトの名無しさんNGNG
C machine を実際にDLしてみた。

実装していない関数が多いことも問題点として挙げられる。
mallocはあるが、callocやreallocが無かったり、
atoi/atofはあるが、strtolとかが無い。

ただ、学校で「アルゴリズムの学習」程度ならまあ使える。
BCCやらGCCをインストールするのに比べて、設定が楽だ。
標準Cにはないグラフィック関係を、簡単に使えるのもいい。

でもC言語の勉強にはならないな。
0217デフォルトの名無しさんNGNG
qsortはあるのにbsearchがない・・・abortもないよぉ。
0218デフォルトの名無しさんNGNG
>>217
作り甲斐があるねw
0219デフォルトの名無しさんNGNG
よくわからんが、UNIX系のマシン1台あれば勉強できるような気もするが。
telnetしてvi(なんでもいいけど)してcc(gcc)で十分だろ。
0220デフォルトの名無しさんNGNG
>>183
できる範囲で構わないんだな
0221デフォルトの名無しさんNGNG
char *argv[]とchar **argvを違うものとするのか・・・・
0222183NGNG
>>220
ああ、忘れてくれるな。
0223デフォルトの名無しさんNGNG
>>222
ま、ちょっと覚悟はしておけ。
0224335NGNG
http://proxy.ymdb.yahoofs.jp/users/502c27bd/bc/%bf%b7%b5%ac%a5%c6%a5%ad%a5%b9%a5%c8
+%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8+(3).txt?bcWN4M_ACg9D8MEz

今度こそコーディングは終わったのですがデバックが・・・。
エラーログが微妙。
0225183NGNG
>>224
main関数が閉じてないんだが…
0226デフォルトの名無しさんNGNG
独り言?
質問じゃないならいちいちageなくても。
0227デフォルトの名無しさんNGNG
>>224
スレ間違えていないか?
「スレ立てるまでも・・・」じゃなかったか?
0228デフォルトの名無しさんNGNG
>>224
scanf("%d",&atai2");
とかなってるとこあるぞ。
0229デフォルトの名無しさんNGNG
>>228 ボウヤだからさ ♥
0230335NGNG
見事にスレ間違えました。
関数呼び出しに ) がない(関数 main )
文字列または文字定数が閉じていない(関数 main )
メイン関数閉じてないのはアップする時のミスです。
コンパイラではちゃんと閉じてコンパイルしてます。
0231デフォルトの名無しさんNGNG
>>230
なかなかうざい方ですね。
0232335NGNG
いえいえ、それほどでも♥
0233デフォルトの名無しさんNGNG
激しく質問。
メイトリックスみたいに流れるコード(数字のみ)を作りたいんだけど、、、。
0234183NGNG
#include <stdio.h>
#include <stdlib.h>

main()
{
  line10:printf("%d\n", rand() % 10);
  line20:goto line10;
  return 0;
}
0235デフォルトの名無しさんNGNG
>234
せめてforかwhileで回してよ…
0236デフォルトの名無しさんNGNG
店頭のMSXマッスィーンを思い出す…goto
0237183NGNG
>>235
わかるやつにはわかるんだよ。>>236とかな(w
0238デフォルトの名無しさんNGNG
>>237
ええとしですなw
0239デフォルトの名無しさんNGNG
文字列の中の例えば!〜〜!の間の文字を抜き出すには
どの関数使えばいいですか?
0240デフォルトの名無しさんNGNG
>>239
strtok
0241デフォルトの名無しさんNGNG
文字列の中の例えば!〜〜!の間の文字を抜き出すには
どの関数使えばいいですか?
0242デフォルトの名無しさんNGNG
>>241
strtok
0243デフォルトの名無しさんNGNG
forかなんかで自分で書け
javaでもそんなメソッドないぞ!
0244デフォルトの名無しさんNGNG
>>241
strtok
0245デフォルトの名無しさんNGNG
ありがとうございます。
簡単な記述例をおねがいできないでしょうか?
0246デフォルトの名無しさんNGNG
>>239
strtok
0247デフォルトの名無しさんNGNG
>237
わからんにゃー。MSXに触ったことにゃーし
0248デフォルトの名無しさんNGNG
べつに分かったからって何の意味もない。
そんなもんで威張っている奴が居たらバカ。
0249デフォルトの名無しさんNGNG
>>245
#include <stdio.h>
#include <string.h>

int main()
{
char str[]="I!have no!money"; /* ←必ず書き換え可能なものにすること */
char *delim="!",*p;

printf("%s\n",strtok(str,delim));
while(p=strtok(NULL,delim))
printf("%s\n",p);

return 0;
}

出力結果
I
have no
money
0250デフォルトの名無しさんNGNG
ありがとうございます。
参考にさせていただきます。
0251デフォルトの名無しさんNGNG
CでXMLのデータを取り出す作業に詳しい人
教えてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055071590
どうすれば 表示できるようになりますか?
0252デフォルトの名無しさんNGNG
>>250
ちなみに二文字以上の文字列で区切ろうとする場合にはstrtokは勧められないので注意を。
第二引数のそれぞれの文字で区切ろうとするからね。
0253デフォルトの名無しさんNGNG
こんなのできたっち
#include <stdio.h>
#include <math.h>

int main(int argc, char* argv[])
{
const double PI = 3.1415926535;
const int pix= 40;

for (double i=0.0; i < 360.0; i++) {
double ans = sin(i/PI/2);
int loop = ans * pix;

if (loop >= 0) {
for (int sp=0; sp < pix; sp++) {
printf(" ");
}
for (int j=0; j < loop; j++) {
printf("+");
}
}else {
for (int sp=0; sp < pix+loop; sp++) {
printf(" ");
}
for (int j=0; j > loop; j--) {
printf("-");
}
}
printf("\n");
}
return 0;
}
0254名無し@沢村NGNG
sprintf("ある晩、二人の男が風呂に入った。
一人がもう一人のちんぽを見た。
そいつのちんぽはドス黒かった。使い古した後がうかがえた。
「おまえ、ずいぶん女を泣かせただろ?」
「いや、おれはまだ童貞だ」
そいつのちんぽはせんずりで使い古したのだった。 ");
0255デフォルトの名無しさんNGNG
>>253
ここはCスレだYO
0256デフォルトの名無しさんNGNG
CStringの文字をchar型に代入したいんですがうまくいかないです
char a;
CString b;
a = (LPCTSTR)b;
どこが悪いっすか?
0257デフォルトの名無しさんNGNG
スレ違い・・・・
Stringなのにcharに代入できるの?
0258デフォルトの名無しさんNGNG
間違えた
char a[200];
CString b = "aiueo";
a = (LPCTSTR)b;

すれ違いスマソ。
え、てかできないんすか?
■ このスレッドは過去ログ倉庫に格納されています