facebook twitter hatena line google mixi email
★お気に入り追加


■ このスレッドは過去ログ倉庫に格納されています

  • 1
  •  
  • 2014/02/16(日) 01:49:14.42
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 124
http://toro.2ch.net/test/read.cgi/tech/1389096769/
★過去スレ
ttp://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています

ここまで見た
  • 417
  •  
  • 2014/03/11(火) 15:41:44.49
旧人類の文化を調査した結果、
1500日に1度現れるウルードシというモンスターを鎮めるため
全世界で祭りを行っていたと思われる数多くの証拠が見つかりました

ここまで見た
  • 418
  •  
  • 2014/03/11(火) 17:45:26.72
1500日ってことは4年ちょっとに1度の頻度か
めんどくさいな

ここまで見た
  • 419
  •  
  • 2014/03/11(火) 19:13:49.60
その8年はどの暦の8年かにもよるな

ここまで見た
  • 420
  •  
  • 2014/03/11(火) 20:00:05.05
火星暦だったりして

ここまで見た
  • 421
  •  
  • 2014/03/11(火) 20:46:23.00
宇宙って素敵よね

ここまで見た
  • 422
  •  
  • 2014/03/11(火) 20:48:44.50
それより女体が素敵だな

まんこぉ、いょまんこぉ
熊もびっくり

ここまで見た
  • 423
  •  
  • 2014/03/11(火) 23:54:07.65
ID開通だってよ

ここまで見た
  • 424
  •  
  • 2014/03/12(水) 00:05:46.07
あいでぃーマンコに入れて感じてろカス

ここまで見た
  • 425
  •  
  • 2014/03/12(水) 05:00:15.14
藤村新一
森口尚史
佐村河内守
小保方晴子
産経新聞
片山祐輔 ← New!

ここまで見た
  • 426
  •  
  • 2014/03/12(水) 12:33:49.75
片山は白でも黒でもいいから、よくやったと言ってやりたい。
IDスキル皆無なくせに糞みたいな取り調べだけは必死でやるゴミ警察に一矢報いてくれた。

ここまで見た
  • 427
  •  
  • 2014/03/12(水) 13:16:51.13
民間から登用して大分レベルアップしてる
おそらくお前よりは上

ここまで見た
  • 428
  •  
  • 2014/03/12(水) 15:08:57.08
>>427
熊本や福岡はレベル低い?

ここまで見た
  • 429
  •  
  • 2014/03/12(水) 16:33:10.67
>>427
民営化すると最強な予感

ここまで見た
  • 430
  •  
  • 2014/03/12(水) 17:22:15.07
大分が民営化?
最強は熊本のくまもんだと思うんだけど、大分ってなんかいたっけ・・・?

ここまで見た
  • 431
  •  
  • 2014/03/12(水) 17:35:02.01
#include <stdio.h>

void fun(int **npp){
int i;
for(i=0;i<10;i++){
*(npp[i]) = i;
}
}

main(){
int *nump[10] = {};
fun( nump);
int j;
for(j=0;j<10;j++){
printf("%d\n",*(nump[j]) );
}
return;
}

これwindowsのgccでコンパイルして実行するとエラーになるんですがどこがおかしいのでしょうか
なんか基本的なことがわかってなさそうな予感がします。

ここまで見た
  • 432
  •  
  • 2014/03/12(水) 17:43:02.73
ぬるぽに書き込んでいる。
次元を1つ落とすと↓こう書いているのと同じ

void fun(int *p) {
 int i = 1;
 *p = i;
}

main() {
 int *num = NULL;
 fun(num);
}

ここまで見た
  • 433
  •  
  • 2014/03/12(水) 17:54:06.97
>>432
もしかして、はじめのint **numpの宣言では 実際のintの数字を格納するメモリが確保されていないので
数字を代入できないということでしょうか
だとしたらmallocなりでメモリは別に確保しないといけない!ということであってますか?

ここまで見た
  • 434
  •  
  • 2014/03/12(水) 17:54:13.41
char *ptr = "123"
printf("%s",*ptr)

とすると123
と表示されるのはなぜですか
*ptrは文字列リテラルの先頭文字へのポインタとなるので
printf("%s",*ptr) だと先頭文字の1だけが表示されるはずではないのですか

ここまで見た
  • 435
  •  
  • 2014/03/12(水) 17:57:38.86
>>434
ttp://codepad.org/DLkBceMs
表示されないけど
そもそもそのプログラムはバグってるから環境依存だよ

ここまで見た
  • 436
  •  
  • 2014/03/12(水) 17:59:06.33
char *ptr = "123"
printf("%s",ptr);

ここまで見た
  • 437
  •  
  • 2014/03/12(水) 18:04:14.91
>>434
考え方はあってる
多分コンパイルし忘れとかでソースと違う動きをしている

ここまで見た
  • 438
  •  
  • 2014/03/12(水) 18:06:36.34
>>435
省略してごめんなさい
具体的には
#include<stdio.h>
int main(void)
{
char *ptr ="123";
printf("%s",ptr);
return 0;
}
です

ここまで見た
  • 439
  •  
  • 2014/03/12(水) 18:33:26.52
おいいいい

ここまで見た
  • 440
  •  
  • 2014/03/12(水) 18:34:28.59
>>438
さっきのprintf("%s",*ptr)は書き間違いですかね
そもそも%s(と言うか文字列)は \0 がくるまで文字を読み込んでいくものだからそれであってますよ
例: char str[10] = { 'a', 'b', 'd' , ' \0' } を先頭から printf("%s",str);すると
abd が出力される

ここまで見た
  • 441
  •  
  • 2014/03/12(水) 18:37:45.81
#include <stdio.h>
#include <stdlib.h>

fun(int *ia){
int j = 0;
for(j= 0;j<10;j++){
ia[j] = j;
}
}

main(){

int *intary;
intary = (int *)malloc( sizeof(int)*10 );
fun( intary);
int i;
for(i=0;i<10;i++){
printf("%d\n",intary[i]);
return;
}
}


さっきのmallocを使って書いてみたんですが 0 とだけ出力されてしまいやっぱりうまく行きません
今度は intaryは nullpointer ではないじゃずですよね・・・?
何がいけないのでしょうか

ここまで見た
  • 442
  •  
  • 2014/03/12(水) 18:41:30.31
>>440
はい、最初のは書き間違えでした
%s(と言うか文字列)は \0 がくるまで文字を読み込んでいくものだという説明で納得しました
ありがとうございます

ここまで見た
  • 443
  •  
  • 2014/03/12(水) 18:49:35.98
>>441
returnの位置

ここまで見た
  • 444
  •  
  • 2014/03/12(水) 18:51:54.84
釣りかこれーw
さっきから巧妙すぎるぞw

ここまで見た
  • 445
  •  
  • 2014/03/12(水) 18:52:12.88
>>443
・・・ありがとうございます。ちょっと休んできます

ここまで見た
  • 446
  •  
  • 2014/03/13(木) 12:50:27.78
失礼します
フォーム上にPDFを表示させたいと思い、COMのaxAcroPDFコントロールを使ってみたのですが
配置して実行してみると、以下のようなエラーが出てきます

COMException はハンドルされませんでした
クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))

すこしぐぐってみたところ、製品がインストールされてなかったりしてdllが足りないと出るエラー?のようですが
インストールも、AcroPDF.dllの存在も確認しています
どなたか解決法をご存知の方がいればお願いします

ここまで見た
  • 447
  •  
  • 2014/03/13(木) 13:14:35.11
>>446
スレ違いです。ここは主にC言語の環境に依存しない辺りを初心者が突っ込みあいをするスレです。

ここまで見た
  • 448
  •  
  • 2014/03/13(木) 13:21:10.86
>>447
一応C#上だったんですがスレ違いですか
よくわからないので立てるまでもないスレに行ってきます

ここまで見た
  • 449
  •  
  • 2014/03/13(木) 13:32:47.52
C# は C言語じゃないから
字面がにてるけど、全く別の言語体系

ここまで見た
  • 450
  •  
  • 2014/03/13(木) 16:44:34.38
JAVAパクっただけだし
それだったら、すべてのOSで使えるようにすればいいのに
だったら、JAVAでいいじゃん

ここまで見た
  • 451
  •  
  • 2014/03/13(木) 16:47:31.62
この間、逆ポーランド記法に変換するプログラムを書いた者です。
このプログラムが、コメントのところから止まってしまうのは何故でしょうか。
https://ideone.com/3oSVvJ

ここまで見た
  • 452
  •  
  • 2014/03/13(木) 17:33:25.21
>>451
流し読みで 47行目 if (*in == '(' && *in == ')') {
中断条件まちがってない? && ではなく || の気配

ここまで見た
  • 453
  •  
  • 2014/03/13(木) 17:47:54.58
なんで疑問形なんだよ

ここまで見た
  • 454
  •  
  • 2014/03/13(木) 17:48:07.00
>>452
printfデバッグしていると、どうやらループにすら入っていないようなのです。
ちなみにコンパイラはgcc、バージョンは4.6.3、OSはUbuntu12.04LTSです

ここまで見た
  • 455
  •  
  • 2014/03/13(木) 17:48:59.46
>>452
曖昧な答えなんかいらねんだよ
お前が実験して成功してからもの言えクズ

ここまで見た
  • 456
  •  
  • 2014/03/13(木) 17:49:29.16
あと、スタックの実装で
*top++ や *top-- はポインタを動かしてる
(*top)++ (*top)-- で指し先を増減しないといかんよ
>>452 の修正+↑の修正で infix_to_postfix() から戻ってくる

が、stack_empty() で無限ループしてる 内容追うのつかれたので あとはまかせた

ここまで見た
  • 457
  •  
  • 2014/03/13(木) 17:52:44.75
>>455
んなもん知るかー
絶対に成立しない条件の記述を見ると、間違いだと思うべ?
(マルチスレッド環境で volatile な変数だと怪しいけど、そういう話ではないからな)

ここまで見た
  • 458
  •  
  • 2014/03/13(木) 17:57:13.14
もとになったプログラムはこちらです
前も貼ったのですが、すみません
https://ideone.com/hPvnFT
push_p(),push_s(),pop_p(),pop_s()をpush(),pop()にまとめただけなのですが、動かなくなってしまいました
ポインタのインクリメント、カッコでくくってもダメでした…

ここまで見た
  • 459
  •  
  • 2014/03/13(木) 18:23:12.89
https://ideone.com/QBPqKE
スタックの実装ミス ( >>456 ) と
push_p push_s pop_p pop_s → push, pop の置き換えが間違ってる

ここまで見た
  • 460
  •  
  • 2014/03/13(木) 18:38:15.55
皆さんありがとうございました。
push()、pop()内のポインタのインクリメント、デクリメントと、stack_empty()の引数にtop_pを渡し、その関数内のpush()を変更することで実行することができました。
ありがとうございました。

ここまで見た
  • 461
  •  
  • 2014/03/13(木) 21:05:50.39
プログラミング?をやってみたいんだけど初心者にオススメの無料ソフト教えて

ここまで見た
  • 462
  •  
  • 2014/03/13(木) 21:49:07.81
>>461
Visual Studio 2008 Express

ここまで見た
  • 463
  •  
  • 2014/03/13(木) 21:50:54.76
なんで古いバージョンだよ

ここまで見た
  • 464
  •  
  • 2014/03/13(木) 21:58:25.23
普通にくらん

ここまで見た
  • 465
  •  
  • 2014/03/13(木) 22:42:46.43
確かにこれからはclangかもしれませんね
最新のFreeBSのCコンパイラはclangらしいですね

ここまで見た
  • 466
  •  
  • 2014/03/14(金) 00:05:55.19
BSDはGNUがきらいだからだよ

ここまで見た
  • 467
  •  
  • 2014/03/14(金) 00:53:55.02
嫌いというか、さすがにGNUは無いだろ。
あの思想は解らなくもないが、最近の活動はキチガイとしか思えん。

ここまで見た
  • 468
  •  
  • 2014/03/14(金) 04:33:36.56
>>467
最近の基地外ぶりはいかほどか?なにかやらかしたの?

フリック回転寿司
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード