C言語なら俺に聞け(入門編)Part 90
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/09/29(木) 07:31:00.93★前スレ
C言語なら俺に聞け(入門編)Part 89
http://hibari.2ch.net/test/read.cgi/tech/1314783907/
★過去スレ
http://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++の宿題片付けます 152代目
http://hibari.2ch.net/test/read.cgi/tech/1312201995/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
★ぬるぽ。
長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/
0002デフォルトの名無しさん
2011/09/29(木) 13:44:08.21難しくってついて行けないオッサンです
0003デフォルトの名無しさん
2011/09/29(木) 14:20:15.07なんでも聞けよ
0004デフォルトの名無しさん
2011/09/29(木) 16:01:06.660005デフォルトの名無しさん
2011/09/29(木) 16:15:45.92「void *」は型ではないが、「void* 」は型だと言っているのか?
0006デフォルトの名無しさん
2011/09/29(木) 16:37:48.17そう勘違いしてしまうことで
jもポインタだと誤解してしまう場合があるから
推奨してない。って事でしょう。
0007デフォルトの名無しさん
2011/09/29(木) 16:42:42.83(入力値が正しくてもprintfが実行されてしまします)
#include <stdio.h>
int main (void){
int grade;
int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;
printf("試験結果の成績(A,B,C,D,F)を入力してください。\n");
printf("入力終了は1\n");
while ((grade = getchar()) != '1'){
if (grade == 'a' || grade == 'A')
++aCount;
if (grade == 'b' || grade == 'B')
++bCount;
if (grade == 'c' || grade == 'C')
++cCount;
if (grade == 'd' || grade == 'D')
++dCount;
if (grade == 'f' || grade == 'F')
++fCount;
if(!((grade == 'a' || grade == 'A') || (grade == 'b' || grade == 'B') || (grade == 'c' || grade == 'C') || (grade == 'd' || grade == 'D') || (grade == 'f' || grade == 'F')))
printf("入力値が異常です、再入力\n"); }
printf("\n成績結果\n");
printf("A: %d\n",aCount);
printf("B: %d\n",bCount);
printf("C: %d\n",cCount);
printf("D: %d\n",dCount);
printf("F: %d\n",fCount);
return (0);}
よろしくお願いします
0008デフォルトの名無しさん
2011/09/29(木) 16:46:17.460009デフォルトの名無しさん
2011/09/29(木) 16:47:43.61処理
}else if 条件{
処理
}else{
処理
}
0010デフォルトの名無しさん
2011/09/29(木) 16:50:28.04getchar で改行文字を読むからだよ
0011デフォルトの名無しさん
2011/09/29(木) 16:52:23.91>>9さん
さっそく、ありがとうございます、試してみました。
9さんの形にしても、必ず最後のif文が実行されてしまいます。
たとえば、Aと入力すれば実行されないつもりで書いているのですが・・・。
0012デフォルトの名無しさん
2011/09/29(木) 16:57:07.86getchにすればすこしわかりやすくなるんじゃね?
0013デフォルトの名無しさん
2011/09/29(木) 16:58:43.21おっしゃる通りでした。
if(!((grade == 'a' || grade == 'A') || (grade == 'b' || grade == 'B') || (grade == 'c' || grade == 'C') || (grade == 'd' || grade == 'D') || (grade == 'f' || grade == 'F') || (grade == ' ' || grade == '\n')))
printf("入力値が異常です、再入力\n");
と、空白と改行も条件に追加した所思うようにいきました。
みなさん、ありがとうございました。
0014デフォルトの名無しさん
2011/09/29(木) 17:05:50.15getch関数、初めて知りました。
試してみたところ、確かにこれなら改行を条件に追加しなくても思うように動きました。
勉強になります。
ありがとうございます。
0015デフォルトの名無しさん
2011/09/29(木) 17:08:04.000016デフォルトの名無しさん
2011/09/29(木) 17:35:20.280017デフォルトの名無しさん
2011/09/29(木) 17:39:13.23諮問内容を確認しろと言いたくなるな
0018デフォルトの名無しさん
2011/09/29(木) 17:50:31.51switch(0)default:{
if (grade == 'a' || grade == 'A'){++aCount;break;}
if (grade == 'b' || grade == 'B'){++bCount;break;}
/*default*/ }
0019デフォルトの名無しさん
2011/09/29(木) 18:12:50.750020デフォルトの名無しさん
2011/09/29(木) 18:14:41.21> int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;
配列にした方が……
0021デフォルトの名無しさん
2011/09/29(木) 18:15:43.99goto とか
if for while switch break continue とか
0022デフォルトの名無しさん
2011/09/29(木) 18:21:17.870023デフォルトの名無しさん
2011/09/29(木) 19:52:34.67goto使うと怒られるお;;
0024デフォルトの名無しさん
2011/09/29(木) 20:10:46.24char s2[128][16];
s1は128文字まで入る文字配列が16個で
s2は16文字まで入る文字配列が128個という
イメージでおk?
0025デフォルトの名無しさん
2011/09/29(木) 20:19:48.420026デフォルトの名無しさん
2011/09/29(木) 20:23:57.07履歴書に書くのも恥ずかしいレベル
0027デフォルトの名無しさん
2011/09/29(木) 20:28:35.260028デフォルトの名無しさん
2011/09/29(木) 20:36:08.36ヌル文字を入れないか
ヌル文字も文字に含めるならそう
0029デフォルトの名無しさん
2011/09/29(木) 20:36:59.180030デフォルトの名無しさん
2011/09/29(木) 20:50:13.650031デフォルトの名無しさん
2011/09/29(木) 23:32:44.20>入力を閉じている(CtrlD)のに再度入力できるのが不自然だと思う。
>標準入力をリダイレクトしてファイルから読んでいたら、そんな振る舞いはしないと思う。
例えば、lessでパイプからの入力を受け、その後端末からlessをコントロール、
まあちょっと違う話なんですけどねw
前スレの>>989さん
>現象から推測してreadが0を返したときに、 (以下略)
気になっているのはUbuntuとMac OS X、どちらの挙動が正しいのか、
あるいは未定義(?)なのか、なんですが....
以前もちょっとした議論になりましたが、MS-C や Borland C では、getchar()等がいったん EOF を返したら入力できない仕様でした。
まあ DOS 流では Ctrl-Z + enter でやっと EOF が入力できる変な端末ではありますが。
それにしても、Linux や FreeBSD が異端で、Mac OS X が正統‥‥ん?おっかしーなー。MAC OS X って確か BSD 界隈育ちだったはず。
http://hibari.2ch.net/test/read.cgi/tech/1314783907/954
宿題スレで議論になったのをお忘れですか?それとも理解できませんでしたか?
0033デフォルトの名無しさん
2011/09/30(金) 00:18:20.24いいからPCのCPU-Zのスクリーンショットをうpしてみろや
0034デフォルトの名無しさん
2011/09/30(金) 00:39:58.14「ジャンプ命令」文法上は無い。
ジャンプ文なら以下の4つ。
goto 識別子;
break;
continue;
return 式opt;
>>21
for, whileは繰り返し文、
if, switchは選択文
>>22
setjmp, longjmpは標準関数で、ジャンプ文では無い。
0035デフォルトの名無しさん
2011/09/30(金) 00:41:42.70へえ
あなたの中ではそうなんだね
0036デフォルトの名無しさん
2011/09/30(金) 00:45:04.47過去ログを参照してみたけど議論になった場所が分かりませんねえ
俺は●を持ってるから具体的なURLで示してみ
0037デフォルトの名無しさん
2011/09/30(金) 00:46:51.10まぁいいと思うけど
s1は charの配列(要素数128)の配列(要素数16)
s1は charの配列(要素数16)の配列(要素数128)
>>28
イミフ。charの配列とNUL文字は直接は関係ないぞ。
charの配列にはC文字列を格納することが多いとは思うけどね。
0039デフォルトの名無しさん
2011/09/30(金) 01:05:59.47004034
2011/09/30(金) 01:18:41.32そしてC言語には「ジャンプ命令」という言葉は無い。
※念のため、K&R2ndで確認している。C99とかは知らない。
ジャンプ文なら>>34で挙げた4つ
setjmp, longjmpは標準関数であり、「ジャンプ命令」ではない。
もちろんジャンプ文、longjmpはコンパイラによって、
「ターゲットCPUのジャンプ命令」に変換されるはず。
したがってアセンブラの範囲になれば、「ジャンプ命令」は存在する。
0041デフォルトの名無しさん
2011/09/30(金) 01:24:10.27意味不明
0042デフォルトの名無しさん
2011/09/30(金) 01:37:48.240043デフォルトの名無しさん
2011/09/30(金) 01:42:04.62お前がCore2DuoやPhenom�UX6を買ったと嘘を付くから証拠を見せろと前から言ってるだろ
まあそれも今となってはすっかり型遅れになったがな
スクショうpできないならPen�V850MHzノート一台という事で
0044デフォルトの名無しさん
2011/09/30(金) 01:42:44.650045デフォルトの名無しさん
2011/09/30(金) 01:43:24.290046デフォルトの名無しさん
2011/09/30(金) 01:52:26.67すぐバレる嘘
0047デフォルトの名無しさん
2011/09/30(金) 01:58:45.00嘘書くな。
setjmpなんていう標準関数はない。
setjmpはマクロだ。
0048デフォルトの名無しさん
2011/09/30(金) 02:04:09.38ここはすごいのばっか出てくるなw
0049デフォルトの名無しさん
2011/09/30(金) 02:05:08.18やっぱ「命令」ったら機械語だけっしょ。
それ以上のはやっぱりどこまで行っても文どまりじゃん
0050デフォルトの名無しさん
2011/09/30(金) 02:05:36.980051デフォルトの名無しさん
2011/09/30(金) 02:15:03.42「文字列」ではなくて「文字配列」だからいいんじゃないか
0052デフォルトの名無しさん
2011/09/30(金) 02:34:27.47キチガイ乙
0053デフォルトの名無しさん
2011/09/30(金) 02:36:44.56おまえQZ情報すごいな
どんだけ大ファンなんだよw
0054デフォルトの名無しさん
2011/09/30(金) 02:37:42.410055デフォルトの名無しさん
2011/09/30(金) 03:09:19.410056デフォルトの名無しさん
2011/09/30(金) 05:31:06.700057デフォルトの名無しさん
2011/09/30(金) 06:29:31.54setjmpはマクロ、jmp_bufは型、longjmpは関数、と規格に書かれてる
0058デフォルトの名無しさん
2011/09/30(金) 06:31:10.86directiveは命令とも訳せるので
preprocessor directiveは命令と言えるね
0059デフォルトの名無しさん
2011/09/30(金) 09:50:17.330060デフォルトの名無しさん
2011/09/30(金) 09:53:55.56ttp://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%BD%E3%83%B3%E3%81%AE%E5%87%A1%E4%BF%97%E6%B3%95%E5%89%87
0061デフォルトの名無しさん
2011/09/30(金) 15:44:49.80解けないから
Pentium3じゃあさすがにSSE2は使えないわなあ
0062デフォルトの名無しさん
2011/09/30(金) 16:09:08.280063デフォルトの名無しさん
2011/09/30(金) 18:49:05.72チン マチクタビレタ〜 チン ♪
♪
♪ ☆チン .☆ ジャーン! マチクタビレタ〜!
☆ チン 〃 ∧_∧ ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(・∀・ #) /\_/ < >>32の具体的なURLマダ〜
チン \_/⊂ つ ‖ \__________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/| ‖ マチクタビレタ〜!
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| /|\
| |/
0064デフォルトの名無しさん
2011/09/30(金) 18:55:14.23Cの範疇の話じゃないっしょ
0065デフォルトの名無しさん
2011/09/30(金) 21:21:43.72QZが在日でも、中年でも、ニートでも、ヒキコモリでも、PenIIIでも、てめえには関係ねえだろ!!!!1111!!!111!!!!!!
0066デフォルトの名無しさん
2011/09/30(金) 21:23:29.160067デフォルトの名無しさん
2011/09/30(金) 21:37:55.990068デフォルトの名無しさん
2011/10/01(土) 20:12:51.82getchar()で入力された文字数を表示させるコードを書きたいのですが、
whileループ以降のprintfがうまく動いてくれません
どのようにすれば上記ができるようになるでしょうか?
コードは以下です。よろしくお願いします
http://codepad.org/gqGT7tLo
0069デフォルトの名無しさん
2011/10/01(土) 20:16:26.070070デフォルトの名無しさん
2011/10/01(土) 20:20:50.17EOFの入力はCtrl+z
0071デフォルトの名無しさん
2011/10/01(土) 20:25:25.30レスありがとうございます
Ctrl+zでEOFの入力、というのはどういうことでしょうか?EOFというのは特殊文字ということなのですか?
Mac+vimでコードを書いているのですが、Ctrl+zを入力するとsuspendしてしまいます…
0072デフォルトの名無しさん
2011/10/01(土) 20:25:53.28n++は関係ないか
0073デフォルトの名無しさん
2011/10/01(土) 20:33:11.41というのはどううまく動かないのか
whileからぬけられないということか?
想定と違う数になるのか?
何も表示せずに終了するとか?
0074デフォルトの名無しさん
2011/10/01(土) 20:36:30.76Winだとそう
macはCtrl+d(多分
0075デフォルトの名無しさん
2011/10/01(土) 20:48:52.86やりたいことは掟破りのgetch使うのでは
0076デフォルトの名無しさん
2011/10/01(土) 20:49:55.690077デフォルトの名無しさん
2011/10/01(土) 20:50:04.62なので、Unxi系の端末では入力を閉じるにはCtrl+Dだということさえ判ればいいだろう。
で、コードはこう書いた方がいい。
--
#include <stdio.h>
int main()
{
// 中略
return 0;
}
--
007868
2011/10/01(土) 20:53:37.20Ctrl+dがなぜ2回入力されなければ動いてくれなかったのか不明ですが…
ありがとうございました!
0080デフォルトの名無しさん
2011/10/01(土) 20:59:05.93慣習
0081デフォルトの名無しさん
2011/10/01(土) 20:59:27.40一応それが正規の書法だし。
Macでおそらくコマンドインタプリタ(シェル)から起動していると思うのだけど、
そのコマンドインタプリタに対してプログラムが成城に終了したことを通知するために、0を返す。
実際、codepadに貼ったコードを見てみると、Outputに「ExitFailure」と書かれているのは判るかい?
0082デフォルトの名無しさん
2011/10/01(土) 21:00:22.35あんたにとって意味はないかもしれんが、世の中には真に無意味なことなどそうそう無いものだよ。
0083デフォルトの名無しさん
2011/10/01(土) 21:01:01.160085デフォルトの名無しさん
2011/10/01(土) 21:09:08.94書かなくてもExitFailureって出るんだけど
0086デフォルトの名無しさん
2011/10/01(土) 21:14:32.07あんた馬鹿? 0を返さないから出るんだって言ってるでしょ。
C++なら、省略した場合に0を返すことになっているけど。
>>83
何も入力せずに入力を閉じた扱いになる。
空のファイルからのリダイレクトと似た振る舞いだね。
0087デフォルトの名無しさん
2011/10/01(土) 21:36:52.78ちゃんと和訳してみるといいよ
0088デフォルトの名無しさん
2011/10/01(土) 21:50:02.34scanf("%100s %100s",&a,&b);
として複数の入力をスペースで開け受け付けて次の処理に移るようにしてるんですが、
一つの入力だけでも次へ進めることってできますでしょうか
0089デフォルトの名無しさん
2011/10/01(土) 21:52:52.45あとからスペースで区切ればいい
スペースで区切れなかったら「次の処理」に行けばいい
fgets() + sscanf()
0091デフォルトの名無しさん
2011/10/01(土) 23:14:42.18ありがとう御座います。できました。
0092デフォルトの名無しさん
2011/10/02(日) 18:23:19.48C99でも省略したときは0返すことになってるよ
0093デフォルトの名無しさん
2011/10/02(日) 19:02:44.95当然違うが、int main() 内に置く return と exit() については一緒。
0095デフォルトの名無しさん
2011/10/02(日) 19:23:20.410096デフォルトの名無しさん
2011/10/02(日) 19:35:34.81リターンキーとエンターキーくらい違う
0097デフォルトの名無しさん
2011/10/03(月) 09:37:52.24顔を近づけてよく見させたいから
0098デフォルトの名無しさん
2011/10/03(月) 09:57:51.53素材をつくっる様な人は、えてして大きなモニターを使っている。
大きなモニターに表示した場合、小さい字でも気にならない。
(意外な真実かもしれないぞ)
0099デフォルトの名無しさん
2011/10/03(月) 10:08:40.93サイト自体が無駄に凝ってて
メインのコンテンツがどこなのか分からないのとかあるな
0100デフォルトの名無しさん
2011/10/03(月) 12:15:24.440101デフォルトの名無しさん
2011/10/03(月) 12:48:04.89countをcnt
flagをflg
こういう命名方法ってなんていうんだっけ?
0102デフォルトの名無しさん
2011/10/03(月) 12:50:08.35素人じゃないんだから、グリグリはないだろ。
0104デフォルトの名無しさん
2011/10/03(月) 13:35:11.353文字に省略するのがカッコいいとか思ってるんだろうけど
zgrとか書かれてても所見じゃ分からんよ
0105デフォルトの名無しさん
2011/10/03(月) 13:36:38.843文字じゃなくて母音抜きじゃね
一緒だけど
0106デフォルトの名無しさん
2011/10/03(月) 14:36:35.54#include<pic.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
int a;
a=rand();
TRISA=0x00;
TRISB=0xFF;
PORTA=0x00;
PORTB=0xFF;
for(a=0; < a=0; a<6; a++)
while(){
a=a%6+1;
PORTA=a;
PORTB=a;
}
}
こちらはc言語をはじめたばかりなので自信がないです。よろしくお願いします。
0107デフォルトの名無しさん
2011/10/03(月) 14:41:16.490108デフォルトの名無しさん
2011/10/03(月) 14:43:39.120109デフォルトの名無しさん
2011/10/03(月) 15:47:41.86この辺りが頭からクソが漏れそうだ
0110デフォルトの名無しさん
2011/10/03(月) 16:10:00.870111デフォルトの名無しさん
2011/10/03(月) 16:51:46.020112デフォルトの名無しさん
2011/10/03(月) 16:56:39.75別に覚えておく。
0113デフォルトの名無しさん
2011/10/03(月) 20:05:41.52int main(){
int sum, n, num;
sum=0;
num=-1;
while(num <= sum){
printf("正の整数の上限値を入力してください:");
scanf("%d", &num);
for(n=1; sum<=num; n++){
sum=sum+n;
printf("n = %d sum = %d\n", n, sum);
}
}
return 0;
}
まで出来たけど、sumがはじめてnum以上になるまで繰り返すプログラムの表示を
num=21として入力した場合
n = 1 sum = 1
n = 2 sum = 3
n = 3 sum = 6
n = 4 sum = 10
n = 5 sum = 15
n = 6 sum = 21
n = 7 sum = 28
正の整数の上限値を入力してください:
になってしまいます。
0114デフォルトの名無しさん
2011/10/03(月) 20:08:08.77n = 7 sum = 28
正の整数の上限値を入力してください: の部分をなくすのにどのコードを直せばいいのか
ヒントをください。
0115デフォルトの名無しさん
2011/10/03(月) 20:11:05.84for(n=1; sum<=num; n++){
0116デフォルトの名無しさん
2011/10/03(月) 21:03:22.26出来ました!
ありがとうございます
0117デフォルトの名無しさん
2011/10/04(火) 10:12:10.69せっかくなのでw
「一緒」って具体的にはどういうことですか?
0118デフォルトの名無しさん
2011/10/04(火) 15:50:07.340119デフォルトの名無しさん
2011/10/04(火) 17:40:34.21初期化が正常に完了しなくて困っています。
どの部分がおかしいのでしょうか?
int X=2;Y=2;
float **a;
setup(a,X,Y);
void setup(float **in,int x,int y)
{
in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
in[i] = (float*)malloc(sizeof(float) * y);
}
}
0120デフォルトの名無しさん
2011/10/04(火) 17:48:50.35そりゃあそうだろ
ポインタのポインタだけじゃ関数setup()内での代入は関数を抜けたら無効になる
int X=2;Y=2;
float **a;
setup(&a,X,Y);
void setup(float ***in,int x,int y)
{
*in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
*in[i] = (float*)malloc(sizeof(float) * y);
}
}
こう書かなきゃな
0121デフォルトの名無しさん
2011/10/04(火) 17:49:01.60aのコピーをsetupに渡してるだけでaの値は何も書き換わってないぞ、と
0122デフォルトの名無しさん
2011/10/04(火) 17:53:01.99あとよくあるのがFILE *構造体を他の関数でopenして戻ったらおかしくなるやつ
これも
FILE *p;
setup(&p);
void setup(FILE **p)
{
*p = fopen("filename", "r");
}
と書かなければ正常に動かない
それと同じ
C++なら参照を使えばこの問題は起きない
0123デフォルトの名無しさん
2011/10/04(火) 17:55:34.27無理にポインタ渡ししなくても戻り値使えばいいんじゃね?
int X=2;Y=2;
float **a;
a=setup(X,Y);
float** setup(int x,int y)
{
float** in;
in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
in[i] = (float*)malloc(sizeof(float) * y);
}
return in;
}
0124デフォルトの名無しさん
2011/10/04(火) 17:58:18.13代入するのが一つならそれでもいいが複数戻したい時は困るだろ
今回はいいけど
0125デフォルトの名無しさん
2011/10/04(火) 18:04:23.19別にポインタ渡しを使うなとは言ってないよw
0126デフォルトの名無しさん
2011/10/04(火) 18:16:41.29struct array2d {
int numX, numY;
float** body;
};
void setup(struct array2d* dst, int x, int y)
{
dst->numX = x; dst->numY = y;
dst->body = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++) dst->body[i] = (float*)malloc(sizeof(float) * y);
}
0127デフォルトの名無しさん
2011/10/04(火) 18:16:53.45arry2d_float*const setup(size_t b, size_t c){return (arry2d_float*)malloc(sizeof(arry2d_flpat)+sizeof(float)*(a+b);}
float const set(arry2d_float*const a, size_t b,size_t c,float d){float *r=(float*)((char*)a+sizeof(arry2d_flpat)+sizeof(float)*(a+b));return *r=d;}
0128x127
2011/10/04(火) 18:19:08.170129デフォルトの名無しさん
2011/10/04(火) 18:28:00.67その用途で参照を使うのはちょっとなぁ。
0130119
2011/10/04(火) 19:10:05.09ネットで調べたら、main関数に戻ったときに保持されなくなると、書いてあったので戻り値方式でいきます。
色々アドバイスありがとうございました。
0131デフォルトの名無しさん
2011/10/04(火) 19:27:40.08悪い
バグってた
void setup(float ***in, int x, int y);
void unsetup(float **in, int x);
int main(void)
{
int X = 2, Y = 2;
float **a;
setup(&a, X, Y);
unsetup(a, X);
return 0;
}
void setup(float ***in, int x, int y)
{
int i;
*in = (float**)malloc(sizeof(float*) * x);
for (i = 0; i < x; i++)
(*in)[i] = (float*)malloc(sizeof(float) * y); // ここ
}
void unsetup(float **in, int x)
{
int i;
for (i = 0; i < x; i++)
free(in[i]);
free(in);
}
0132デフォルトの名無しさん
2011/10/04(火) 21:25:36.88何かもっといいかげんで簡単な方法は無いですか?
動作環境はUnix汎用(BSD,Linux他)です。
0133デフォルトの名無しさん
2011/10/04(火) 21:48:40.97蛇足だけど、そのaは二次元配列にはなっていない。
要するにsizeof(float)*X*Yの連続した領域が確保されるわけじゃない。
2次元配列に見えればいい(a[i][j]でアクセスできればいい)のだろうから、
構わないのだろうけどね。
0134デフォルトの名無しさん
2011/10/04(火) 21:54:59.67ラッピングされたライブラリかなんかが欲しいってことなんだろうけど、これ以上どこを楽にしようか
0135デフォルトの名無しさん
2011/10/04(火) 22:00:21.240136デフォルトの名無しさん
2011/10/04(火) 22:02:23.20あれ、二次元配列の大きさってsizeof(float)*X*Yになるって保証されてたっけ?
0137デフォルトの名無しさん
2011/10/04(火) 22:02:51.570138デフォルトの名無しさん
2011/10/04(火) 22:27:22.49サイズじゃなくて連続領域かどうかの話かと。
>>137
それでもいいし、各次元の先頭アドレスを詰めていくのでもいいよね
0139デフォルトの名無しさん
2011/10/04(火) 22:33:27.90それは分かってるよ
もし二次元配列にしたいなら (*)[Y]みたいに書かないとな
(実際はYは定数でなくてはいけないのでエラーになる)
0140デフォルトの名無しさん
2011/10/04(火) 22:35:09.68パディングが挟まったりとかは無いんだっけ?
連続してる保証があったのかなぁと
0141138
2011/10/04(火) 22:39:08.35それはまた別の話だけど、正しいことだね。
二次元配列を動的に生成したい→>>139(無理)
添え字演算子を使用した場合のみにおいて、二次元配列と同等のアクセスが可能なポインタを作成したい→>>119
ポインタ演算を含め、二次元配列と同等のアクセスが可能なポインタを作成したい→>>133
デリケートな話だけれど。
0143デフォルトの名無しさん
2011/10/04(火) 22:49:30.63これは出来が悪かったstd::valarrayの代替用だが、結局パフォーマンスを
出そうとするとtemplateしかない
0144デフォルトの名無しさん
2011/10/04(火) 22:52:36.20多次元配列でもポインタで走査できるのって保証されてたんだ?
それは知らなかった
0145デフォルトの名無しさん
2011/10/04(火) 22:52:55.79ポインタで繋いだ場合は別のデータ構造だと思うの
0146138
2011/10/04(火) 22:58:14.22スレ違いにならない範囲でいくなら、C99で char[m][n];
>>144
もしそこに不安を抱いていたなら、p + i*N + j; のような演算をしてこなかったということ?
0147デフォルトの名無しさん
2011/10/04(火) 23:03:18.66多次元配列でその計算が必要になることがないし
規格を読んでも日本語が難解でよくわからないなw
今度勉強しよう
0148デフォルトの名無しさん
2011/10/04(火) 23:31:44.67C99のはalloca()の糖衣構文らしいな
便利でいいんだけど下位の次元が可変という事はいちいちメモリにアクセスしたり
レジスタを食うわけで1次元配列で代用したくなる
0149デフォルトの名無しさん
2011/10/04(火) 23:44:51.71というのはさておき、1次元配列で代用ってどういうことだろ。同じことになりそうな…?
C99だとallocaを複数回つかって配列のポインタ配列が生み出されているということ?(つまり連続領域じゃない)
0150デフォルトの名無しさん
2011/10/04(火) 23:54:45.84[2]□→□□□□□□□□□
[3]□→□□□□□□□□□
[4]□→□□□□□□□□□
[5]□→□□□□□□□□□
[6]□→□□□□□□□□□
[7]□→□□□□□□□□□
[8]□→□□□□□□□□□
[9]□→□□□□□□□□□
0151デフォルトの名無しさん
2011/10/05(水) 04:00:14.04Int ** a2d = (int **)malloc(sizeof(int*)* h);
for(i =0; i != h; ++I)
a2d[i] = data + w;
a2d[x][y] = 100;
free(a2d);
free(data);
0152デフォルトの名無しさん
2011/10/05(水) 04:03:05.23これだからiPhoneは困る
0153デフォルトの名無しさん
2011/10/05(水) 10:47:56.50これってどこの処理系に行っても通用するの?
0154デフォルトの名無しさん
2011/10/05(水) 10:56:26.03いろいろおかしいだろ
0155デフォルトの名無しさん
2011/10/05(水) 22:23:02.96ここまでは出来たんだが、
学生別平均 学生1:0.0 学生2:0.0 学生3:0.0 学生4:0.0
科目別平均 科目1:0.0 科目2:0.0 科目3:0.0
とこんなふうに出力表示を出すにはどうすればいいのでしょうか?
0156デフォルトの名無しさん
2011/10/05(水) 23:01:53.54numが学生ごとの合計だと思うけど、それを元に学生別平均を出そうとしていることはわかる。
なので、科目ごとの合計を入れる配列を用意すればいけるのではないか。
そのあとで、あちらこちらの計算間違いを直せばいいと思う。
0157デフォルトの名無しさん
2011/10/06(木) 03:58:11.32マルチか。
0158デフォルトの名無しさん
2011/10/06(木) 20:54:16.04char **argv
char *argv[]
上はポインタのポインタで下はポインタの配列。
全く違うものだよね。
ていうかポインタのポインタって何なんだ。
何の意味があるんだ。
0159デフォルトの名無しさん
2011/10/06(木) 21:06:29.76同じじゃね?
>ていうかポインタのポインタって何なんだ。
>何の意味があるんだ。
データのソートの時にデータ自体の入れ替えが要らないから速いよ。
テキストエディタとかでもポインタ配列使うと、一行消した時に前に詰めるデータ転送が少量ですむ。
0160デフォルトの名無しさん
2011/10/06(木) 21:22:44.030161デフォルトの名無しさん
2011/10/06(木) 21:53:49.430162デフォルトの名無しさん
2011/10/06(木) 22:21:05.59struct a2{char a[2][4];}; 8バイト
違う。全くといってイイほど違う。
0163デフォルトの名無しさん
2011/10/06(木) 22:41:01.920164デフォルトの名無しさん
2011/10/06(木) 22:41:40.59このコードは規格上安全ですか?
0165デフォルトの名無しさん
2011/10/06(木) 22:47:46.67みなし配列化はパディング入る可能性があるから規格以前の問題じゃないかな
0166デフォルトの名無しさん
2011/10/06(木) 22:51:47.580167デフォルトの名無しさん
2011/10/06(木) 22:59:38.90使えるけどbcc自体の評価が微妙。
0168デフォルトの名無しさん
2011/10/06(木) 23:02:24.310169デフォルトの名無しさん
2011/10/06(木) 23:41:02.44なんの意味があるかと言われても、実際あるんだからcharと同じくらいの意味はあるでしょ。
>>159
ポインタを指すポインタと、ポインタの配列は別物だよ。
ただし、関数のプロトタイプ宣言中の仮引数並びでは、配列がポインタに成り下がるので
同じになるけどね。
char *a[] = {"foo", "bar", "boo"};
func(a);
とした時のfuncに渡る仮引数の型がchar **
0170デフォルトの名無しさん
2011/10/06(木) 23:49:33.70ポインタの配列ならコンパイル時に要素数の情報が参照できる
ポインタのポインタではできない
この違いのほうが重要
0171デフォルトの名無しさん
2011/10/07(金) 00:44:50.80int main(int argc, char** argv) 派
0172デフォルトの名無しさん
2011/10/07(金) 02:08:28.734.9 char *argv[]の正しい意味
...
argvを使用する立場からは、char *argv[]という書き方のほうが意味がはっきりする
が、構造的な意味合いからはchar **argvの方がより明示的であろう。
...
4.10 char a[]とchar *aの違い
...
char a[10];
func(a);
func(char b[])
{
...
}
において、char b[]の代わりにchar *bとしても全く同じである。
...
ところが
char a[]="hello";
と
char *a="hello";
は異なる。
0173デフォルトの名無しさん
2011/10/07(金) 10:24:39.17Tabで移動できるようにするにはどうしたらいいの?
0174デフォルトの名無しさん
2011/10/07(金) 11:37:45.040175デフォルトの名無しさん
2011/10/07(金) 15:21:56.47どうしたらいいですかね!
0176デフォルトの名無しさん
2011/10/07(金) 15:23:54.280177175
2011/10/07(金) 15:27:04.680178デフォルトの名無しさん
2011/10/07(金) 17:07:07.880179デフォルトの名無しさん
2011/10/07(金) 17:09:13.790180デフォルトの名無しさん
2011/10/07(金) 19:02:28.52linuxのC言語でシステムCALLを使っています。
ret=system("ls > hoge.txt")
上記でlsの一覧をテキストに貼り付けそそテキストをopenしたいのですが、
systemでcallされた命令が終了するまで待機するにはどうすればよいのでしょうか?
ret = system("ls > hoge.txt");
while(WIFEXITED(ret) == FALSE); //システムコールが終了するまで待機の予定
ではダメみたいでした・・・
0181デフォルトの名無しさん
2011/10/07(金) 19:04:36.700182デフォルトの名無しさん
2011/10/07(金) 19:30:39.25調べましたけど、チンプンカンプンです。
土日の宿題ができました^^;
0183デフォルトの名無しさん
2011/10/07(金) 19:49:31.03lsの結果を欲しいということなら、popen使っても良いんじゃないかな?
0184デフォルトの名無しさん
2011/10/07(金) 19:50:00.75system()は同期関数だから返ってきた時点でls > hoge.txtは終了している。
0185デフォルトの名無しさん
2011/10/07(金) 19:50:19.35その臭いがとれなくなるまで嗅げ
0186デフォルトの名無しさん
2011/10/07(金) 20:01:45.310187デフォルトの名無しさん
2011/10/07(金) 21:54:40.49これこそ、プログラミングの神髄
0188デフォルトの名無しさん
2011/10/07(金) 22:00:20.090189デフォルトの名無しさん
2011/10/07(金) 22:35:30.28>>183のいうpopenを使うのが正統派だと思う。
$ ls | hoge
ってしている感じになる。
0190デフォルトの名無しさん
2011/10/07(金) 23:22:19.080191デフォルトの名無しさん
2011/10/08(土) 03:08:53.44これって何をしてるんですか?
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
vip:
.ascii "Hello World!!¥0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
call ___main
movl $vip, (%esp)
call _puts
leave
ret
.def _puts; .scl 2; .type 32; .endef
0192デフォルトの名無しさん
2011/10/08(土) 03:17:49.62してるだけちゃうか。
0193デフォルトの名無しさん
2011/10/08(土) 05:08:07.100194デフォルトの名無しさん
2011/10/08(土) 15:49:31.49エラーが起こらない時もあるのですが、その時はfclose後に数秒経ってからアクセスしていました。
fcloseが完了するのって数秒経たないといけない仕様なのでしょうか?
0195デフォルトの名無しさん
2011/10/08(土) 15:55:12.260196194
2011/10/08(土) 16:02:21.31OSはWindowsXPでVC++2008EEです。
0197デフォルトの名無しさん
2011/10/08(土) 16:03:40.68普通そんなことはない、バグか環境の問題。
0198デフォルトの名無しさん
2011/10/08(土) 16:22:49.56コードみせて
0199デフォルトの名無しさん
2011/10/08(土) 16:25:45.610200838
2011/10/08(土) 16:46:40.510202デフォルトの名無しさん
2011/10/08(土) 21:02:57.360203デフォルトの名無しさん
2011/10/09(日) 02:19:49.96書籍でもよいです。
0204デフォルトの名無しさん
2011/10/09(日) 02:53:41.15http://codepad.org/JcSveevb
floatとdoubleで、速度差が全く無いだと!?
0205デフォルトの名無しさん
2011/10/09(日) 02:58:01.30そういう結果もありえる
0206デフォルトの名無しさん
2011/10/09(日) 03:01:52.980207デフォルトの名無しさん
2011/10/09(日) 03:04:22.79情強はdoubleオンリー
0208デフォルトの名無しさん
2011/10/09(日) 03:07:22.060209デフォルトの名無しさん
2011/10/09(日) 03:20:31.91メモリを使いすぎるばかりか、キャッシュ効率も悪くなる
0210デフォルトの名無しさん
2011/10/09(日) 03:27:56.92CPUによる。x86ならfloatもdoubleも80bitで演算されるから基本そう変わらん。
もちろんサイズや型変換やコンパイラ/オプションにもある程度よるが。
0211デフォルトの名無しさん
2011/10/09(日) 08:02:07.16精度をおとすわけにはいかない
最近の64bitのwin7だと、doubleは何バイトっていえるの?
0212デフォルトの名無しさん
2011/10/09(日) 09:28:22.580213デフォルトの名無しさん
2011/10/09(日) 11:56:41.220214デフォルトの名無しさん
2011/10/09(日) 12:13:57.970217デフォルトの名無しさん
2011/10/09(日) 12:20:06.710218デフォルトの名無しさん
2011/10/09(日) 12:28:48.32そんなレベル低いんならお前はコテ外せよ。
よく恥ずかしくないな。
0219デフォルトの名無しさん
2011/10/09(日) 13:31:42.17ゴミみたいなクソ遅いコードしか書けないんだから
0220デフォルトの名無しさん
2011/10/09(日) 14:08:04.88doubleよりfloatの方が2倍速いだろ
0221デフォルトの名無しさん
2011/10/09(日) 15:51:50.75お前はスレタイも読めんのか。
0222デフォルトの名無しさん
2011/10/09(日) 15:55:11.23実は両方ともdoubleで実行してたりして
0223デフォルトの名無しさん
2011/10/09(日) 15:55:19.150224デフォルトの名無しさん
2011/10/09(日) 16:07:10.210225デフォルトの名無しさん
2011/10/09(日) 16:10:20.630226デフォルトの名無しさん
2011/10/09(日) 16:28:11.34だからx86なら内部80bit演算だと言っとろうが。
0227デフォルトの名無しさん
2011/10/09(日) 16:50:50.45質問来てないだろ><
0228デフォルトの名無しさん
2011/10/09(日) 17:07:39.82010101
101010
...
という風に、一行ごとに1と0の順が変わるようにしたいのですが上手くいきません
どなたか教えていただけないでしょうか
http://codepad.org/I1zOpg0r
0229デフォルトの名無しさん
2011/10/09(日) 17:16:49.07行列の指数計算(eの行列乗というか)をC言語で行いたいのですが、利用できる関数などはあるのでしょうか。
0230デフォルトの名無しさん
2011/10/09(日) 17:22:08.300231デフォルトの名無しさん
2011/10/09(日) 17:26:57.34if((x+y)%2==0)
0232デフォルトの名無しさん
2011/10/09(日) 17:48:37.48printf("%c",'1'-(x+y)%2);
0233デフォルトの名無しさん
2011/10/09(日) 22:28:26.400234デフォルトの名無しさん
2011/10/10(月) 01:00:29.040235デフォルトの名無しさん
2011/10/10(月) 03:15:22.41数値的にやるなら... 行列の乗算でテーラー展開だっけ? まずは対角化とか... とか?
こういう一般的なプログラムのスレより数値計算に詳しそうな人がいるスレで
聞いた方がいいかもね。あとどれだけ数学的知識があっての質問かにもよりそう。
0236デフォルトの名無しさん
2011/10/10(月) 06:11:48.53これが-1になるのは処理系依存でしょうか?
0237デフォルトの名無しさん
2011/10/10(月) 08:39:47.150238デフォルトの名無しさん
2011/10/10(月) 09:24:33.970239デフォルトの名無しさん
2011/10/10(月) 10:27:52.54Cには全然ない。
計算だけしたいならC++使って、まず行列関連のクラス作ってからやった方が速い。
0240デフォルトの名無しさん
2011/10/10(月) 10:35:27.29�d
0241デフォルトの名無しさん
2011/10/10(月) 12:44:25.82コンパイルに時間がかかって大変じゃないですか?
0242デフォルトの名無しさん
2011/10/10(月) 12:50:57.530243デフォルトの名無しさん
2011/10/10(月) 12:57:33.950244デフォルトの名無しさん
2011/10/10(月) 13:31:35.600246デフォルトの名無しさん
2011/10/10(月) 15:10:17.910247デフォルトの名無しさん
2011/10/10(月) 15:23:33.760248デフォルトの名無しさん
2011/10/10(月) 15:29:33.260249デフォルトの名無しさん
2011/10/10(月) 15:31:18.800250デフォルトの名無しさん
2011/10/10(月) 15:32:55.620251デフォルトの名無しさん
2011/10/10(月) 15:33:04.020252デフォルトの名無しさん
2011/10/10(月) 15:34:04.851.0/3*1
0253デフォルトの名無しさん
2011/10/10(月) 15:41:43.39できました、迅速な回答ありがとうございました
0254デフォルトの名無しさん
2011/10/10(月) 15:42:45.500255デフォルトの名無しさん
2011/10/10(月) 16:59:36.59ありがとうございます。C++で頑張ってみます。
0256デフォルトの名無しさん
2011/10/11(火) 04:56:08.05main(argc, argv)
int argc;
char **argv;
{
}
な感じの定義があったんだけど
引数の定義を丸括弧の外側に出すってどこのC言語の入門書にも書いてなくて
これってどういうことなの?
0257デフォルトの名無しさん
2011/10/11(火) 05:03:18.410258デフォルトの名無しさん
2011/10/11(火) 08:19:51.800259デフォルトの名無しさん
2011/10/11(火) 08:23:35.470260デフォルトの名無しさん
2011/10/11(火) 17:20:39.590261デフォルトの名無しさん
2011/10/11(火) 20:37:29.440262デフォルトの名無しさん
2011/10/11(火) 21:51:53.610263デフォルトの名無しさん
2011/10/11(火) 21:58:55.08int argc、
char **argv
)
こうすれば書けるよ
0264デフォルトの名無しさん
2011/10/11(火) 22:05:31.36こういう時に型を一回書くだけでいいから楽ちん
0265デフォルトの名無しさん
2011/10/11(火) 22:06:24.35すごい納得いった
0266デフォルトの名無しさん
2011/10/11(火) 22:15:53.070267デフォルトの名無しさん
2011/10/11(火) 22:16:31.870268デフォルトの名無しさん
2011/10/11(火) 23:26:29.370269デフォルトの名無しさん
2011/10/12(水) 12:48:19.92printf("%d\n", a)
こういう風にa前にスペースが入ってるのはなんのためですか?
スペース入れない
printf("%d\n",a)
でも同じように表示されるのですが…
0270デフォルトの名無しさん
2011/10/12(水) 12:55:48.460271デフォルトの名無しさん
2011/10/12(水) 12:57:28.49これは世界の常識。
0272デフォルトの名無しさん
2011/10/12(水) 13:34:49.90二項演算子の前後は1スペースが普通だろ
カンマでも同じ
0273デフォルトの名無しさん
2011/10/12(水) 13:40:22.470274デフォルトの名無しさん
2011/10/12(水) 13:41:05.850275デフォルトの名無しさん
2011/10/12(水) 13:44:12.82,は二項演算子ではない。
0276デフォルトの名無しさん
2011/10/12(水) 13:47:18.15心にゆとりを持つため
0277デフォルトの名無しさん
2011/10/12(水) 14:50:41.97試しにaの前にタブやら改行やら入れてみては?
0278デフォルトの名無しさん
2011/10/12(水) 17:24:19.32ようするに一行空けと同じような感じで , の後は見易くするためスペース空けるものという程度の理解で先に進んでみます
0279デフォルトの名無しさん
2011/10/12(水) 18:26:16.85うん。
その辺がコーディングスタイルというものになって、論争のタネになる。
0280デフォルトの名無しさん
2011/10/12(水) 21:18:06.90プログラムコード以前に、英文とかアルファベットの文章の場合、カンマの後に
スペースを入れる習慣があるでしょ。もちろん見やすさのためにね。
英語のサイトとか見てごらん。
0281デフォルトの名無しさん
2011/10/13(木) 02:07:14.83txtファイルからfscanfでwhileループなどを使って何行もデータを取り出していくときに、
なにも書きこまれていない行が出てきたら、そこは取り出さずに取り出し作業を終了する
にはどうすればよいのでしょうか?
0282デフォルトの名無しさん
2011/10/13(木) 02:21:50.470283デフォルトの名無しさん
2011/10/13(木) 08:10:47.16取り合えず取り出してからチェックして捨てるといいよ
そのほうがプログラムも簡単になるし、マシンへの負荷も小さい
0284デフォルトの名無しさん
2011/10/13(木) 09:26:00.17なるほど、それで文字列の個数を読み取って、0のとき終了すればいいんですね。
ありがとうございます><
>>283
そうなんですか。
ちなみに何も書きこまれていないデータを読み取った後、
どのようにしてそれだけを捨てれば良いのでしょうか?
0285デフォルトの名無しさん
2011/10/13(木) 10:31:18.07空白文字だけの行をスキップするとか
そりゃもういろいろできる
perlはテキストを行ごとに処理すんのに特化してるから
餅は餅屋
0286デフォルトの名無しさん
2011/10/13(木) 11:11:42.620287デフォルトの名無しさん
2011/10/13(木) 13:27:25.170288デフォルトの名無しさん
2011/10/13(木) 13:36:49.950289デフォルトの名無しさん
2011/10/13(木) 13:45:54.97Dennis Ritchie (1941-2011).
His pointer has been cast to void *;
his process has terminated with exit code 0.
0290デフォルトの名無しさん
2011/10/13(木) 15:34:32.77http://toki.2ch.net/test/read.cgi/bizplus/1318487508/
0291デフォルトの名無しさん
2011/10/13(木) 16:59:45.98CAN通信のライブラリ探してコーネル大学のソースにブチあたったんですが
サブルーチンの開始が { ではなく
BEGIN
で
終了が } ではなく
END
とかになっててPascal風味で気持ち悪いんですが
こういうの流行ったんですかね?
0292デフォルトの名無しさん
2011/10/13(木) 17:09:23.960293デフォルトの名無しさん
2011/10/13(木) 18:50:22.75昔はね。
我慢して読もう。
0294デフォルトの名無しさん
2011/10/13(木) 21:52:33.920295デフォルトの名無しさん
2011/10/13(木) 23:52:06.17どうしてもCでやらなければいけないんです><
pearもそのうち学びたいですね。
0296デフォルトの名無しさん
2011/10/14(金) 00:04:19.16すいません、今更ですが、文字だけでなく、数字データがあるかどうかも知りたいんです
0297デフォルトの名無しさん
2011/10/14(金) 00:14:54.18#include <stdio.h>
#include <ctype.h>
int is_contain_digit(char *p)
{
while (*p) {
if (isdigit(*p++)) return 1;
}
return 0;
}
int main()
{
puts(is_contain_digit("foo1") ? "digit found." : "digit not found.");
puts(is_contain_digit("foo") ? "digit found." : "digit not found.");
puts(is_contain_digit("1bar") ? "digit found." : "digit not found.");
}
0298デフォルトの名無しさん
2011/10/14(金) 00:17:01.15「空白」とか「数字」というのはisalpha()とかisdigit()とかそういうので一文字ずつ判定して
いったりするようなコードを想定しているんじゃ?
0299デフォルトの名無しさん
2011/10/14(金) 00:21:10.280300デフォルトの名無しさん
2011/10/14(金) 02:00:30.12いろいろ試しましたがうまくいきません。
例えば、point.txtの中が
458
769
483
だった場合、どうにかして3行数字があるなとわからせて
fscanfを3回実行するというようなプログラムにしたいんです。
0301デフォルトの名無しさん
2011/10/14(金) 02:42:20.800302デフォルトの名無しさん
2011/10/14(金) 02:59:27.04int hoge[n] = {1, 2};
のように可変長配列を初期化しようとするとコンパイラに怒られるんですけど何でですか?
0303デフォルトの名無しさん
2011/10/14(金) 03:01:25.26C99を使えばいいと思います
0304デフォルトの名無しさん
2011/10/14(金) 03:02:27.87早速どうもです
C99使ってるんですけど警告が出ます
0305デフォルトの名無しさん
2011/10/14(金) 03:26:00.610306デフォルトの名無しさん
2011/10/14(金) 03:30:25.430307デフォルトの名無しさん
2011/10/14(金) 03:36:53.86そういうエラーとか出てないの?
初期化子よりも要素が少ないとき、あふれた分は無視されるという挙動を期待しているのかな。
0308デフォルトの名無しさん
2011/10/14(金) 03:47:06.69そのデータなら単に毎回 fscanf(fp, "%d", &i) みたいのを呼べばいいんじゃないの?
もっと具体的にどう駄目なんだ?
一般的な話としてfscanf()/scanf()は入力のフォーマットがしっかり決まってるときに
しか普通使わない/使えない。
で普通はfgets() + sscanf()にしたりする。どうしてもfscanf()でいくなら、毎回戻り値を
チェックして0だったら入力を捨てるとか、そういう処理が必要になってくるが大丈夫?
0309デフォルトの名無しさん
2011/10/14(金) 06:04:29.530310デフォルトの名無しさん
2011/10/14(金) 06:25:20.98Variable-sized object may not be initialized.
です。
0311デフォルトの名無しさん
2011/10/14(金) 07:32:18.050312デフォルトの名無しさん
2011/10/14(金) 11:16:17.54そもそも可変長なのに初期化子使いたいって…
0313デフォルトの名無しさん
2011/10/14(金) 14:02:43.83※ただしC++0x以降に限る。
0314デフォルトの名無しさん
2011/10/14(金) 14:45:42.66>何でですか?
コンパイルの時点で「この関数はローカル変数にこれだけメモリを消費する。」
って決めうちしてるからじゃね?
malloc()使え。
0315デフォルトの名無しさん
2011/10/14(金) 15:09:36.54int [] = {1,2};
0316デフォルトの名無しさん
2011/10/14(金) 15:10:21.900317デフォルトの名無しさん
2011/10/14(金) 15:27:07.13ああやっぱ無理なんだね。
で、無理を通そうとしてるの?
0318デフォルトの名無しさん
2011/10/14(金) 15:27:08.52なんだ>>302が望んでたのはこれか。
可変長配列なんかいらなかったんだ。
0319デフォルトの名無しさん
2011/10/14(金) 18:11:08.22いい方法を教えてください
0320デフォルトの名無しさん
2011/10/14(金) 18:20:30.260321デフォルトの名無しさん
2011/10/14(金) 19:06:31.66共有ロックです
0322デフォルトの名無しさん
2011/10/14(金) 19:17:52.57標準的な環境(POSIXとか)で用意されてますか?
0323デフォルトの名無しさん
2011/10/14(金) 19:40:32.12offsetof というマクロがあるから、それをヒントに作って見れば?
0324デフォルトの名無しさん
2011/10/14(金) 19:41:22.20pthread_rwlock
0325デフォルトの名無しさん
2011/10/14(金) 19:41:45.19サイズならsizeof
0326デフォルトの名無しさん
2011/10/14(金) 20:26:05.99車輪の再開発して、友達に噂とかされると、恥ずかしいし・・・。
0327デフォルトの名無しさん
2011/10/14(金) 20:31:17.38struct X {
int a;
char b[3];
int c;
};
#define Sizeof(s,m) sizeof(((s *)0)->m)
printf("[%d]\n",Sizeof(struct X, b));
0328デフォルトの名無しさん
2011/10/14(金) 20:41:14.550329デフォルトの名無しさん
2011/10/14(金) 20:49:19.63例えば下の「とまと」と「だいすき」の間に「も」を入れて
「とまともだいすき」にしたりとかです。
/**********test.txt***********
はんばーぐおいしい
とまとだいすき
****************************/
0330デフォルトの名無しさん
2011/10/14(金) 20:54:57.410331デフォルトの名無しさん
2011/10/14(金) 21:13:30.13ありがとうございます。
このプラグラムで実行したら警告が出たのですがどうすればよいのでしょうか?
/*******************q.c**************************************************
#include <stdio.h>
#include <stdlib.h>
int main(void){
sytem("sed s/とまと/とまとも/ test.txt");
return 0;
}
************************************************************************/
/******************cmd***************************************************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
q.c:
警告 W8065 q.c 5: プロトタイプ宣言のない関数 'sytem' の呼び出し(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_sytem' が未解決(D:\C_PROGRAMMING\Q.OBJ が参照)
**************************************************************************
0332デフォルトの名無しさん
2011/10/14(金) 21:15:23.460333デフォルトの名無しさん
2011/10/14(金) 21:26:22.88脱字でしたかwすいません。
次はコンパイルは通ったのですが、実行ができません。
何が原因なのでしょう?
/**********************cmd**********************************
D:\C_programming>bcc32 q.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
q.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
D:\C_programming>q
'sed' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
*************************************************************/
0334デフォルトの名無しさん
2011/10/14(金) 21:27:04.07それが恥ずかしいって話でしょ
0335デフォルトの名無しさん
2011/10/14(金) 21:27:28.440337デフォルトの名無しさん
2011/10/14(金) 21:30:37.81Sizeof という名前は紛らわしいしダサいので、
公式または準公式、デファクトスタンダード的な名称があれば
おしえてください
0338デフォルトの名無しさん
2011/10/14(金) 21:30:53.65実用的じゃないですか?
コマンドライン上で数字を打ち込んでそれを引数にするのは現実的ですが
exeファイルを引数にするってどういうときでしょうか?
0339デフォルトの名無しさん
2011/10/14(金) 21:31:42.50デファクトスタンダードは sizeof だろw
0340デフォルトの名無しさん
2011/10/14(金) 21:36:17.64ランチャーとかモニターとかデバッグとか解析とか、色々ある
0341デフォルトの名無しさん
2011/10/14(金) 21:38:00.47自分の名前で挙動を変えるとかな。
0342デフォルトの名無しさん
2011/10/14(金) 21:39:00.82こういうの無理ですかね?
Hello.cはGoodBye.cをコンパイルし実行するプログラムとか。
GoodBye.cを実行したらいいって言ったら身も蓋もないんですが
ソースファイルでそういうプログラム作れるのかなと。
0343デフォルトの名無しさん
2011/10/14(金) 21:45:14.390344デフォルトの名無しさん
2011/10/14(金) 21:45:55.78int main(void)
{
system("cc GoodBye.c; ./a.exe");
return 0;
}
0345デフォルトの名無しさん
2011/10/14(金) 21:48:09.080346デフォルトの名無しさん
2011/10/14(金) 21:48:53.58すごいですね、systemとか初めて知った・・
じゃぁGoodBye.cの実行結果を引数にするプログラムは作れますか?
0347デフォルトの名無しさん
2011/10/14(金) 21:51:22.97しかし、広い分野で一般化できた(成功した)話しは聞かない。
0348デフォルトの名無しさん
2011/10/14(金) 21:52:03.65作れる
0349デフォルトの名無しさん
2011/10/14(金) 21:52:20.510350デフォルトの名無しさん
2011/10/14(金) 21:56:06.180351デフォルトの名無しさん
2011/10/14(金) 21:57:24.67そうなんですか?
テキストファイルをmain引数にすることはできるけど、Cファイルの出力を引数
にする方法がわかりません。
Hello.cはGoodBye.cを引数にして、GoodBye.cの出力結果である文字goodbye
の文字数を数えるプログラムみたいなの無理でしょうか?
0352デフォルトの名無しさん
2011/10/14(金) 21:57:37.09簡単に作れるなら今がチャンス。大もうけできるぞw
0353デフォルトの名無しさん
2011/10/14(金) 21:58:36.18だから、できるって
0354350
2011/10/14(金) 21:58:43.060355デフォルトの名無しさん
2011/10/14(金) 22:00:48.43いえいえ、systemとかいう関数知りませんでした。ありがとうございます。
0356デフォルトの名無しさん
2011/10/14(金) 22:08:43.01これを使うとエクゼファイルの出力を入力にすることができるのは知っているのですが、
こういうコマンドを使わずに、エクゼファイルを引数にする場合はsystem使うしかないのですか?
0357350
2011/10/14(金) 22:14:55.68system("cc GoodBye.c; ./program `./a.exe`");
0358デフォルトの名無しさん
2011/10/14(金) 22:20:12.87いやコマンドライン上でGoodBye.cを入力したいんですが。
0359デフォルトの名無しさん
2011/10/14(金) 22:23:50.63そう言うシェル作れ、簡単だから。
0360350
2011/10/14(金) 22:25:22.21int main(int argc, char* argv[])
{
char cmd[100];
sprintf(cmd, "cc %s; ./program `./a.exe`", argv[1]);
system(cmd);
return 0;
}
0361デフォルトの名無しさん
2011/10/14(金) 22:27:31.89cygwinあるのでそこらへんダイジョーベです。
>>360
やっぱり初心者には難しいプログラムになるんですね・・
|使うと簡単なソースプログラムでいいんですが・・
0362デフォルトの名無しさん
2011/10/14(金) 22:39:53.98その仕様書は四則演算レベルまで正確に規格通りに仕様を記述しないとうまくいきません
0363デフォルトの名無しさん
2011/10/14(金) 22:48:32.780364デフォルトの名無しさん
2011/10/14(金) 22:58:58.46あるよ
0365デフォルトの名無しさん
2011/10/14(金) 22:59:50.23sizeofはもうすでにあるから使えないよ。
0366デフォルトの名無しさん
2011/10/14(金) 23:03:03.08http://gnuwin32.sourceforge.net/
\(^o^)/
0367デフォルトの名無しさん
2011/10/14(金) 23:15:06.000368デフォルトの名無しさん
2011/10/14(金) 23:16:13.280369デフォルトの名無しさん
2011/10/14(金) 23:21:27.89そんなこといってもこの記述自体が車輪であるから、回答としては、マクロは用意されていないが有名なidiomならある、だろう。
0370デフォルトの名無しさん
2011/10/14(金) 23:54:05.21#include <string.h>
int main(void) {
char buffer[128], c[128], to[128];
char *p;
const char head[] = "とまと";
const char body[] = "も";
const char tail[] = "だいすき";
int length;
strcpy(c, head);
length = strlen(c);
strcat(c, tail);/* とまとだいすき */
strcpy(to, head);
strcat(to, body);/* とまとも */
for(;;) {
p = fgets(buffer, sizeof(buffer), stdin);
if(p == NULL) break;
p = strstr(buffer, c);
if(p != NULL) {
*p = '\0';
fputs(buffer, stdout);
fputs(to, stdout);
p = p + length;
fputs(p, stdout);
} else {
fputs(buffer, stdout);
}
}
return 0;
}
0371370
2011/10/14(金) 23:56:20.50between < text.txt
0372デフォルトの名無しさん
2011/10/15(土) 00:02:47.21strcpy(c, head);
この時点でアウト
0373350
2011/10/15(土) 00:07:48.760374370
2011/10/15(土) 00:09:37.670375デフォルトの名無しさん
2011/10/15(土) 00:13:50.740376333
2011/10/15(土) 00:55:02.06ありがとうございます。
ちなみにそのプログラムのどこに何を追加すれば
test.txtを>>329のように修正できるのでしょうか?
0377デフォルトの名無しさん
2011/10/15(土) 02:09:02.19バグを直したとして、
./a.out < test.txt > /tmp/test.txt && mv /tmp/test.txt .
ってやればできる
0378333
2011/10/15(土) 02:53:02.100379デフォルトの名無しさん
2011/10/15(土) 02:57:47.040381デフォルトの名無しさん
2011/10/15(土) 03:05:03.460382デフォルトの名無しさん
2011/10/15(土) 08:43:32.34こんなのでいいのか
http://codepad.org/kRotkDew
0383デフォルトの名無しさん
2011/10/15(土) 10:24:15.36sizeofはデファクトスタンダードじゃなくて、ただのスタンダードだろ。
0384382
2011/10/15(土) 11:22:24.86http://codepad.org/fZ9LeXKt
0385333
2011/10/15(土) 11:38:39.83Pathの部分に、自分が読み込みたいファイルの"te.txt"を入れて
コンパイルしたら以下の警告が出てきてしまいました・・・
警告 W8057 test.c 26: パラメータ 'path' は一度も使用されない(関数 read_file_print )
0386デフォルトの名無しさん
2011/10/15(土) 12:34:21.14じゃあ デファクトになりそうなレベルのかっこういい名称を
考えてみませんか?
0387デフォルトの名無しさん
2011/10/15(土) 12:43:14.580388333
2011/10/15(土) 12:47:14.64うざいです
0389382
2011/10/15(土) 13:01:15.63http://codepad.org/XtcxEhR2
0390333
2011/10/15(土) 14:15:22.83もっとわかりやすいものをください
0391デフォルトの名無しさん
2011/10/15(土) 15:27:14.540392デフォルトの名無しさん
2011/10/15(土) 15:31:50.340393デフォルトの名無しさん
2011/10/15(土) 16:03:02.880395デフォルトの名無しさん
2011/10/15(土) 16:32:21.240396デフォルトの名無しさん
2011/10/15(土) 16:33:42.69こんな事書く時点で嘘だろ
0398333
2011/10/15(土) 16:54:53.74>>389を試してみたところ、コンパイルできましたが、起動すると
動作が停止しました・・・
0399デフォルトの名無しさん
2011/10/15(土) 17:29:53.300400デフォルトの名無しさん
2011/10/15(土) 17:30:26.59× if ((fp = fopen(path, "r")) < 0) return;
○ if ((fp = fopen(path, "r")) == NULL) return;
0402デフォルトの名無しさん
2011/10/15(土) 18:16:37.060404デフォルトの名無しさん
2011/10/16(日) 17:29:43.54JavaでのarrayListなどのように
プログラムの途中で要素を追加したり、逆に削除したり
ということはCではできないのでしょうか?
0405デフォルトの名無しさん
2011/10/16(日) 17:31:51.30誰かに作ってもらうか、自分で作るしかない。
0406デフォルトの名無しさん
2011/10/16(日) 17:34:17.16ありがとうございます
要素の追加削除や配列の要素数の変更など
色々なところでJavaに比べて難しいですね・・・
どうするかちょっと考えたいと想います
0407デフォルトの名無しさん
2011/10/16(日) 17:36:44.630408デフォルトの名無しさん
2011/10/16(日) 17:36:58.35やるならC++だろ。
0409デフォルトの名無しさん
2011/10/16(日) 17:41:45.44そのへん自由にしたければ、C#やれ。 普通に使えるぞ
0410デフォルトの名無しさん
2011/10/16(日) 17:49:04.87DBを利用するという手もある
0411デフォルトの名無しさん
2011/10/16(日) 17:49:37.63CとC++とC#の違いも正直よく分かっていないので
それなら一番基本そうなCで作っています・・・
自己参照構造体は聞いたこともありませんでしたので、今ぐぐって読んで何とかやってみます
0412デフォルトの名無しさん
2011/10/16(日) 17:58:38.310413デフォルトの名無しさん
2011/10/16(日) 18:01:43.11C++は、低級も高級も仮想化もメタもOOPも何でもできるが、複雑な子。メモリー管理必衰。
Java、C#は殆どのメモリー管理は言語任せ。だから、管理しなくても書ける。
0414デフォルトの名無しさん
2011/10/16(日) 18:25:47.72鼻水フイタw
0415デフォルトの名無しさん
2011/10/16(日) 18:27:48.490416デフォルトの名無しさん
2011/10/16(日) 19:07:06.820417デフォルトの名無しさん
2011/10/16(日) 19:39:02.970418デフォルトの名無しさん
2011/10/16(日) 19:53:38.650419デフォルトの名無しさん
2011/10/16(日) 20:01:41.810420デフォルトの名無しさん
2011/10/16(日) 20:08:41.970421デフォルトの名無しさん
2011/10/16(日) 20:13:33.26組み込みっても大きいのはみんなgccベースだろうしな。
0422デフォルトの名無しさん
2011/10/16(日) 20:56:03.89もしかして:必須
0423デフォルトの名無しさん
2011/10/16(日) 20:59:23.310424デフォルトの名無しさん
2011/10/16(日) 21:01:18.620425デフォルトの名無しさん
2011/10/16(日) 21:03:55.440426デフォルトの名無しさん
2011/10/16(日) 21:04:17.97なんかごめん好きなだけ馬鹿にして
0427デフォルトの名無しさん
2011/10/16(日) 21:47:47.120428デフォルトの名無しさん
2011/10/16(日) 21:54:07.850429デフォルトの名無しさん
2011/10/16(日) 22:25:45.400430デフォルトの名無しさん
2011/10/16(日) 23:35:23.51そこを含めてだったのに何でわかってもらえなかったかが不思議
必衰してる行を見てほしい
0431デフォルトの名無しさん
2011/10/16(日) 23:41:27.260432 忍法帖【Lv=21,xxxPT】
2011/10/17(月) 11:40:04.330433デフォルトの名無しさん
2011/10/17(月) 11:47:37.530434デフォルトの名無しさん
2011/10/17(月) 15:23:55.51エディタのマクロでできないことがCでできるのだ。
マクロがないエディタ(メモ帳など)で、マクロがほしいなぁとおもったらCでプログラミングする。
0435デフォルトの名無しさん
2011/10/17(月) 15:39:25.880436デフォルトの名無しさん
2011/10/17(月) 16:15:00.570437デフォルトの名無しさん
2011/10/17(月) 16:33:34.71変数a+b=xの計算をやるプログラムを作ったのですが
xの値をかえた時に式が正しくなる方法を教えてください。
0438デフォルトの名無しさん
2011/10/17(月) 16:35:17.370439デフォルトの名無しさん
2011/10/17(月) 19:00:05.03,、 '";ィ'
________ /::::::/l:l
─- 、::::;;;;;;;;;`゙゙''‐ 、 __,,,,......,,,,_/:::::::::/: !|
. : : : : : : `゙'ヽ、:::゙ヾ´::::::::::::::::::::::`゙゙゙'''‐'、. l| またまた ご冗談を
、、 . : : : : : : : : r'":::::::::::::::::::::::::,r':ぃ::::ヽ::::::::ヽ! ,、- 、
.ヽ:゙ヽ; : : : : : :ノ:::::::::::::::::::::;;、-、、゙::: rー-:'、 / }¬、
. \::゙、: : : :./::::::::::::::;、-''":::::::::: ,...,:::,::., :::':、 _,,/,, ,、.,/ }
ヽ:ヽ、 /::::::::::::::::::::::::: _ `゙''‐''" __,,',,,,___ /~ ヾ::::ツ,、-/
`ヽ、:::::::::;;;、、--‐‐'''''',,iニ- _| 、-l、,},,  ̄""'''¬-, ' ''‐-、 .,ノ'゙,i';;;;ツ
_,,,、-‐l'''"´:::::::' ,、-'" ,.X,_,,、-v'"''゙''yr-ヽ / ゙゙'ヽ、, ,.' j゙,,, ´ 7
,、-''" .l:::::::::::;、-''" ,.-' ゙、""ヾ'r-;;:l 冫、 ヽ、 / __,,.ノ:::::ヽ. /
l;、-'゙: ,/ ゞ=‐'"~゙゙') ./. \ / '''"/::::;:::;r-''‐ヽ
,、‐゙ ヽ:::::..,.r'゙ ,,. ,r/ ./ ヽ. ,' '、ノ''" ノ
,、‐'゙ ン;"::::::. "´ '゙ ´ / ゙、 ,' /
' //::::::::: {. V /
/ ./::::::::::::: ', / /
. / /:::::::::::::::::. ',. / ,.、 /
0440デフォルトの名無しさん
2011/10/17(月) 19:02:18.63/;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、 / ヽ
/ヽヽ: ://: :!:,X~::|: /;,,;,/: :/ リ!: ::/ノ l`ヽl !: : |: : : :l: :l: リ / そ そ お \
/: : ヽヾ/: : l/::l |/|||llllヾ,、 / |: :/ , -==、 l\:::|: : : :|i: | / う う 前 |
. /: : : //ヾ ; :|!: イ、||ll|||||::|| ノノ イ|||||||ヾ、 |: ::|!: : イ: ::|/ な 思 が
/: : ://: : :ヽソ::ヽl |{ i||ll"ン ´ i| l|||l"l `|: /|: : /'!/l ん う
∠: : : ~: : : : : : : :丶ゝ-―- , ー=z_ソ |/ ハメ;, :: ::|. だ ん
i|::ハ: : : : : : : : : : : 、ヘヘヘヘ 、 ヘヘヘヘヘ /: : : : : \,|. ろ な
|!l |: : : : : : : : :、: ::\ 、-―-, / : : :丶;,,;,:ミヽ う ら
丶: :ハ、lヽ: :ヽ: : ::\__ `~ " /: : ト; lヽ) ゝ
レ `| `、l`、>=ニ´ , _´ : :} ` /
,,、r"^~´"''''"t-`r、 _ -、 ´ヽノ \ノ / お ・
,;'~ _r-- 、__ ~f、_>'、_ | で 前 ・
f~ ,;" ~"t___ ミ、 ^'t | は ん ・
," ,~ ヾ~'-、__ ミ_ξ丶 | な 中 ・
;' ,イ .. ヽ_ ヾ、0ヽ丶 l /
( ;":: |: :: .. .`, ヾ 丶 ! \____/
;;;; :: 入:: :: :: l`ー-、 )l ヾ 丶
"~、ソ:: :い:: : \_ ノ , ヾ 丶
0441デフォルトの名無しさん
2011/10/17(月) 21:03:14.420442デフォルトの名無しさん
2011/10/17(月) 21:06:23.74/___ \ / ___ ヽ
/ |´・ω・`| \ / |´・ω・`| \ みんな〜
/  ̄ ̄ ̄ \ / _,  ̄⊂二二)
| i ヽ、_ヽl | |
└二二⊃ l ∪ | |
| ,、___, ノ | ,、 |
ヽ_二コ/ / ヽ / \ /
_____/__/´ __ヽノ____`´
0443デフォルトの名無しさん
2011/10/17(月) 21:10:21.49これ誰?
ミンキーモモ?
0444デフォルトの名無しさん
2011/10/17(月) 22:13:14.77産地ごとの標準的なワインの特徴量と未知のワインの特徴量を比較して
未知のワインがどの産地かを当てよ。
ヒント:パターン認識、最短距離法、ノルム(ユークリッドノルム)
<実行結果例>
産地ごとの標準的なワインの特徴量
酸味 渋味 甘味
産地A: 0.70 0.50 0.60
産地B: 0.60 0.70 0.50
産地C: 0.50 0.60 0.70
未知のワインの特徴量
酸味 渋味 甘味
1番目: 0.63 0.67 0.51 →このワインは産地Bです
2番目: 0.46 0.61 0.65 →このワインは産地Cです
3番目: 0.73 0.48 0.59 →このワインは産地Aです
4番目: 0.48 0.57 0.69 →このワインは産地Cです
5番目: 0.63 0.69 0.48 →このワインは産地Bです
6番目: 0.73 0.52 0.58 →このワインは産地Aです
7番目: 0.54 0.61 0.66 →このワインは産地Cです
8番目: 0.57 0.74 0.51 →このワインは産地Bです
9番目: 0.72 0.48 0.55 →このワインは産地Aです
scanf はしなくていいんでこれをC言語でお願いします
0445デフォルトの名無しさん
2011/10/17(月) 22:37:42.86#include <stdio.h>
typedef struct{ double params[3]; }wine_t;
int main(void){
wine_t base[]={
{{0.70, 0.50, 0.60}}, {{0.60, 0.70, 0.50}}, {{0.50, 0.60, 0.70}}
};
wine_t target[]={
{{0.63, 0.67, 0.51}}, {{0.46, 0.61, 0.65}}, {{0.73, 0.48, 0.59}},
{{0.48, 0.57, 0.69}}, {{0.63, 0.69, 0.48}}, {{0.73, 0.52, 0.58}},
{{0.54, 0.61, 0.66}}, {{0.57, 0.74, 0.51}}, {{0.72, 0.48, 0.55}}
};
int i, j, k;
char *result=NULL, *place_name[]={"産地A","産地B","産地C"};
double min_distance=0.0, distance, diff;
for(i=0;i<9;i++){
for(j=0;j<3;j++){
distance=0.0;
for(k=0;k<3;k++){
diff=(target[i].params[k]-base[j].params[k]);
distance+=diff*diff;
}
if(j==0 || min_distance>distance){
result=place_name[j];
min_distance=distance;
}
}
printf("%d番目: %.2f %.2f %.2f →このワインは%sです\n", i+1, target[i].params[0], target[i].params[1], target[i].params[2], result);
}
return 0;
}
0446デフォルトの名無しさん
2011/10/17(月) 23:46:35.17超絶美少女ゆのさまです
0447デフォルトの名無しさん
2011/10/18(火) 01:30:43.74違う
0448デフォルトの名無しさん
2011/10/18(火) 01:33:38.59何が違うのか説明してみて
0449デフォルトの名無しさん
2011/10/18(火) 02:52:30.64mainでのreturnを、コンパイラがexitと同様になるようにしてたり、してない場合もある。
0450デフォルトの名無しさん
2011/10/18(火) 10:40:58.94生成されたコードをデバッガに掛けてみればすぐに分かることだが、return 0;では
そのままeaxやraxに0を持って終了するのに対し(x86やx64の場合)、exit(0)では
ご丁寧にexit()をcallしている場合が多い
これだけでもはっきりと生成コードに違いがある場合があるのだから、>>94みたいに
「int main() 内に置く return と exit() については一緒。」と言い切るのは馬鹿の
所業としか言いようがない
0451デフォルトの名無しさん
2011/10/18(火) 10:43:50.07returnとは違うんですよ
0452デフォルトの名無しさん
2011/10/18(火) 10:45:42.12プログラムの終了時にも開いているストリームは閉じられて一時ファイルは削除されるんですけど
0453デフォルトの名無しさん
2011/10/18(火) 11:00:29.10#include <stdio.h>
int main(void)
{
int r,s;
printf("円の半径入力=");
scanf("%d",&r);
s = r*r*3.14;
printf("円の面積= %d",s);
return 0;
}
Ubuntu gcc環境だと日本語部が化けます。どうにかなりませんでしょうか?
0454デフォルトの名無しさん
2011/10/18(火) 11:01:08.89それは気をきかせてるだけ
C言語はreturnの場合はべつに閉じなくてもいい
0455デフォルトの名無しさん
2011/10/18(火) 11:08:15.11>プログラムの終了時
0456デフォルトの名無しさん
2011/10/18(火) 11:43:33.90どうやらうちの環境では表示できないようだ。
Acrobat 8では見られたんだが、最新のXでは表示できない…
みんなはどう?
0457デフォルトの名無しさん
2011/10/18(火) 11:59:09.820458デフォルトの名無しさん
2011/10/18(火) 12:08:38.97{
cout << "適当に入力してEnterで終了" << endl ;
char c ;
cin >> c ;
}
int main(void)
{
Pause() ; return 0 ;
}
0459デフォルトの名無しさん
2011/10/18(火) 12:36:22.11素早いご回答ありがとうございます。
私は初心者なのでtypedef structというのがわかりません。
どのような意味なのでしょうか?
0460デフォルトの名無しさん
2011/10/18(火) 12:46:58.770461デフォルトの名無しさん
2011/10/18(火) 12:56:27.010462デフォルトの名無しさん
2011/10/18(火) 13:39:48.790463デフォルトの名無しさん
2011/10/18(火) 14:50:21.06スレタイも読めんのか?
>>459
条件つけるなら先に書け。意味が判らないなら調べろ。
0464デフォルトの名無しさん
2011/10/18(火) 14:50:34.91これでpauseと同じことができそうです。
0465デフォルトの名無しさん
2011/10/18(火) 15:05:34.83うざいwww
0466デフォルトの名無しさん
2011/10/18(火) 15:39:11.66おまえがな。
0467デフォルトの名無しさん
2011/10/18(火) 15:43:58.19ポインタ無しでお願いします。
0468デフォルトの名無しさん
2011/10/18(火) 15:49:50.87>444をポインタなしでということなら、ほぼ無理です。諦めましょう。
0469デフォルトの名無しさん
2011/10/18(火) 17:18:31.04融通聞かない頭カチカチの老害乙
0470デフォルトの名無しさん
2011/10/18(火) 17:28:11.32ということでしょうか?良くわからないので教えてください。
C言語の勉強=とりあえずC言語でプログラムを書くってのが勉強の手法ですよね。
0471デフォルトの名無しさん
2011/10/18(火) 17:29:09.95コンパイラとアセンブリは似たようなものですか?いずれもコンピュータの
根幹の機能だと思うのですが・・
0472デフォルトの名無しさん
2011/10/18(火) 17:30:58.41本を読め。
0473デフォルトの名無しさん
2011/10/18(火) 17:32:42.93推薦図書スレでオススメの本を聞いて
それで勉強すればおk
0474デフォルトの名無しさん
2011/10/18(火) 17:33:54.45何をしたらいいかわからない・・
C言語の場合、とりあえず組むんだなと思って専門書を読み始めるのですが
コンパイラ、アセンブリの場合何をするのかわからない、理論を学ぶのか、
それとも何か組んだりするのか、入門者の場合何したらいいですか?
0475デフォルトの名無しさん
2011/10/18(火) 17:39:55.730476665
2011/10/18(火) 17:43:51.17コンパイラ勉強したら何できます?個人で。
大学なんですが光や通信なんてのは大規模な設備必要っぽいから
個人でできないってわかるんですが。
0477デフォルトの名無しさん
2011/10/18(火) 17:44:55.83コンパイラの勉強をしたらコンパイラを作るのが普通。
0478デフォルトの名無しさん
2011/10/18(火) 17:45:17.770479デフォルトの名無しさん
2011/10/18(火) 17:49:21.69なるほどコンパイラは作るもんなんですか・・
そのコンパイラってのは集積回路のことですか?
それともソフトウェアのこと?
>>478
ノーベル賞とった偉人は人に良く質問するという、あるあるがあるんで。
0480デフォルトの名無しさん
2011/10/18(火) 17:50:17.32残念だが、お前には何もできない。
0481デフォルトの名無しさん
2011/10/18(火) 17:50:55.96ノーベル賞とうような人がする質問とお前の質問は全く別物だから勘違いしないように
0482デフォルトの名無しさん
2011/10/18(火) 17:51:38.51阪大生ですが何か?
0483デフォルトの名無しさん
2011/10/18(火) 17:52:18.390484デフォルトの名無しさん
2011/10/18(火) 17:55:06.20そもそも高校生から全く成長して無くても阪大生名乗れるしなw
0485デフォルトの名無しさん
2011/10/18(火) 17:55:59.582行目日本語でオーケー牧場
0486デフォルトの名無しさん
2011/10/18(火) 17:57:36.37大学入ったあと何もしてないぼんくらでも一生懸命勉強した奴でも肩書きは同じ大学の学生ってことだろ
文字読むときは脳みそ動かして読めよまじで
0487デフォルトの名無しさん
2011/10/18(火) 17:59:56.51受験時にボーダー超えてるかどうかにしかすぎないってこと
0488デフォルトの名無しさん
2011/10/18(火) 18:00:11.610489デフォルトの名無しさん
2011/10/18(火) 18:00:25.30コンパイラの勉強をする前に、コンパイラとは何かくらい調べたら?
国語辞典くらい持ってるでしょ?
0490デフォルトの名無しさん
2011/10/18(火) 18:01:00.45阪大生か?
ここにいる奴らでコンパイラとか勉強してる人はやっぱ大卒?
0491デフォルトの名無しさん
2011/10/18(火) 18:02:31.15あいつらよりプログラミングの能力においては俺のほうが上な自信あるww
化学とか物理とかだろ?情報学で俺に勝てる奴いない
0492デフォルトの名無しさん
2011/10/18(火) 18:06:07.93実験で使うためにプログラム組んだりしてるかもよ?
実際どうなのか知らないけど
0493デフォルトの名無しさん
2011/10/18(火) 18:07:12.16ゲーム作るならjava以外ありえないよな・・
0494デフォルトの名無しさん
2011/10/18(火) 18:07:47.60標準ライブラリがすべてではないだろ
0495デフォルトの名無しさん
2011/10/18(火) 18:10:51.920496デフォルトの名無しさん
2011/10/18(火) 18:11:20.47環境次第。
0497デフォルトの名無しさん
2011/10/18(火) 18:12:20.10いやいやw
標準ライブラリ以外ですごいんじゃない?
パッケージやボクシング、オーバードライブなど全ては
クラス指向向きのための魔法だけど、そういうのCにあるの?
0498デフォルトの名無しさん
2011/10/18(火) 18:12:53.95調べて200字で説明せよって言われて説明できるやつはいないよ。
難しすぎる。
0499デフォルトの名無しさん
2011/10/18(火) 18:14:50.460500デフォルトの名無しさん
2011/10/18(火) 18:14:56.050501デフォルトの名無しさん
2011/10/18(火) 18:16:11.28今時Cはないって。
普通C++。ゲーム機ならC++だろ。
0502デフォルトの名無しさん
2011/10/18(火) 18:22:39.25日本語でOK
Cコンパイラでファミコンの機能を作れってことか?
パソコンにコントローラー繋いでゲームしたらマシンパワーがすごくて
動作が快適すぎたりしないの?
0503デフォルトの名無しさん
2011/10/18(火) 18:24:05.040504デフォルトの名無しさん
2011/10/18(火) 18:25:52.100505デフォルトの名無しさん
2011/10/18(火) 18:27:54.86それだとコンパイラだけじゃなく開発環境そのものが必要になっちまうだろ。
0506デフォルトの名無しさん
2011/10/18(火) 18:29:03.21ファミコンの内部集積ベースにあうようなコンパイラプログラムを作れということでしょ?
ファミコンでも快適に動くコンパイラプログラムなのにそれをそのまま作ってWindowsとかで動かした快適すぎて逆にバグじゃね?
マリオ時速何キロ出るんだろう。
マシンパワーに見合ったコンパイラを作らないと意味ないんじゃないですか?
0507デフォルトの名無しさん
2011/10/18(火) 18:30:13.70速度調整できるエミュレータでおk
0508デフォルトの名無しさん
2011/10/18(火) 18:30:38.79>>502はまだ日本に来て日が浅いんだ。許してやってくれ。
0509デフォルトの名無しさん
2011/10/18(火) 18:31:15.740510デフォルトの名無しさん
2011/10/18(火) 18:31:25.57そんなのバグを認めてるみたいじゃん
0511デフォルトの名無しさん
2011/10/18(火) 18:33:22.48実機速度で動かせるってことだよ
0512デフォルトの名無しさん
2011/10/18(火) 18:34:04.89C言語の環境があればプログラムを組むことさえできたら処理内部の情事なんて
どうでもよくないですか?
0513デフォルトの名無しさん
2011/10/18(火) 18:35:38.62動かすつもりはないの?
0514デフォルトの名無しさん
2011/10/18(火) 18:35:44.35学者とか専門の人は必要なんじゃね?
0515デフォルトの名無しさん
2011/10/18(火) 18:35:45.790516デフォルトの名無しさん
2011/10/18(火) 18:36:33.83英文なら持ってるよ。
一応、俺流の訳を付けておいた。
5.1.2.2.3 Program termination
1 If the return type of the main function is a type compatible with int, a return from the
initial call to the main function is equivalent to calling the exit function with the value
returned by the main function as its argument; reaching the } that terminates the
main function returns a value of 0. If the return type is not compatible with int, the
termination status returned to the host environment is unspecified.
main関数の戻り値の型がintと互換性のあるものなら、main関数の最初の呼出しからの復帰は、
main関数の戻り値を引数とするexit関数の呼出しと同等です。main関数を終了する } に到達
すると、0という値を返します。
戻り値の型がintと互換性がないならば、ホスト環境へ返される終了状態は特定されない。
0517デフォルトの名無しさん
2011/10/18(火) 18:38:56.020518デフォルトの名無しさん
2011/10/18(火) 18:40:30.350519デフォルトの名無しさん
2011/10/18(火) 18:42:05.180520デフォルトの名無しさん
2011/10/18(火) 18:44:37.140521デフォルトの名無しさん
2011/10/18(火) 18:45:41.630522デフォルトの名無しさん
2011/10/18(火) 18:46:30.31未だに出ないのが不思議で仕方ない。
0523デフォルトの名無しさん
2011/10/18(火) 18:51:29.78作りたいから作るんだよ。
お前の作るプログラムこそどうでもいいわ。
0524デフォルトの名無しさん
2011/10/18(火) 18:52:41.47俺はゲームなど高次なものを作りたいんだよ。
0525デフォルトの名無しさん
2011/10/18(火) 18:57:33.720526デフォルトの名無しさん
2011/10/18(火) 18:57:37.170527デフォルトの名無しさん
2011/10/18(火) 19:01:59.15__,, , , , _ 、 ,,, ... ,, _ ..,_
ー=、 、ー-、`ヽ、、ヽ`!i' , ,i",r'",-'"=ミ
`ヽ`ヾ`、 ! ヽ ! l! i! !_i_/_<'"``
`,ゝ、iliー'" "、,"、', i, リ
!/!,li ,;;-=o=-,ッィ=。ゥィ
__ i、`!', '; `ー /;;!i、''; ,!
ー''`ヽ`,ーi'`''"!、ヽ , `一'、 / __
`il `i ! ヽ、  ̄ ̄ / iヽ、/ ,.ヽ_
i! !` `ーァ、-ー' ! ノ!トi,!'",ノ-、
,..=、i! iヽ-、 rィ',;'!ヽー-、! `/_,i' _,.!'、
ーニー-、._ `ヽゞニ-、.;' i! ! , `ト_ノ`x-'" ノ
=ニヽ、 , `, /ヾ=ソ ノ !/ !、`ー`''イ、
-ー-、 `i, / / ヽ `イ_, i -'" ̄`! ! ヽ
ゝノ /-'" ` ' ! ヽ !
朝鮮に かえるんだな
おまえにも 同胞がいるだろう・・・
0528デフォルトの名無しさん
2011/10/18(火) 19:13:05.970529デフォルトの名無しさん
2011/10/18(火) 19:13:20.92>>468
ほぼ、か。じゃあできるね。
0530デフォルトの名無しさん
2011/10/18(火) 19:16:17.12大学の授業でコンパイラってのがあったよ。
情報系なら大抵あるのかな
0531デフォルトの名無しさん
2011/10/18(火) 19:23:40.50まず、服を脱ぎます。
0532デフォルトの名無しさん
2011/10/18(火) 19:33:04.71次はどうすればいいの?
0533デフォルトの名無しさん
2011/10/18(火) 19:36:06.70常識レベルの行列計算テクニックをまとめただけみたいな卒論らしきもの.pdfをネットで見かけたことがあるがよく見ると早稲田大学だった
一流の大学でこんなんだから学部でコンパイラなんて作らないのが普通なんじゃね?
0534デフォルトの名無しさん
2011/10/18(火) 19:49:46.13自分のテクニックや知識を披露するだけで相手の事何も考えてない。
0535デフォルトの名無しさん
2011/10/18(火) 19:50:45.29引っかかる。本当にこのスレで質問して無駄に過ごした時間を返してほしい。
0536デフォルトの名無しさん
2011/10/18(火) 19:53:06.47つ時間 ほらよ
0537デフォルトの名無しさん
2011/10/18(火) 19:59:44.690538デフォルトの名無しさん
2011/10/18(火) 20:02:07.460539デフォルトの名無しさん
2011/10/18(火) 20:02:56.03ほらよ。
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
>>537
お前、頭おかしいってよく言われるだろ。
0540デフォルトの名無しさん
2011/10/18(火) 20:03:46.29優しい方ありがとう…
0541デフォルトの名無しさん
2011/10/18(火) 20:12:54.280542デフォルトの名無しさん
2011/10/18(火) 20:13:33.26基本的に教える側ってのは余裕があるんだから、腰低くして当然じゃないか?
教えられる側は混乱してるんだから多少イライラしてても仕方ないだろ。
0543デフォルトの名無しさん
2011/10/18(火) 20:14:27.020544デフォルトの名無しさん
2011/10/18(火) 20:15:05.44むずかしいんだな
0545デフォルトの名無しさん
2011/10/18(火) 20:15:42.72なんか短くてそこそこ性能のいい方法を教えてください。
0546デフォルトの名無しさん
2011/10/18(火) 20:16:54.410547デフォルトの名無しさん
2011/10/18(火) 20:20:11.56↑
これは典型的なブーメラン。IQ20のくせに人に物を教えようとするとこうなる。
0548デフォルトの名無しさん
2011/10/18(火) 20:20:40.850549デフォルトの名無しさん
2011/10/18(火) 20:21:52.19読んだ人もいるであろう、ジョブズ29歳のインタビュー:
>教育におけるコンピューターは、批判なしで無限に対話してくれる存在としては
>書籍以来初めてのものになるでしょう。
http://www.gizmodo.jp/2011/07/29woplayboy.html
言い換えると、書籍とコンピュータ以外は
批判有りで有限にしか対話してくれない。
引きこもり以外はみんな身にしみて知ってる。
だから安易に人には聞かない。
0550デフォルトの名無しさん
2011/10/18(火) 20:22:14.14どういうハッシュ値が欲しいんだ。
適当でよければ+/*するなりXORするなりすればいいだろう。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
0551デフォルトの名無しさん
2011/10/18(火) 20:24:44.24IQ10が何言ってんだ。
0552デフォルトの名無しさん
2011/10/18(火) 20:25:08.910553デフォルトの名無しさん
2011/10/18(火) 20:26:43.64月5万円くれ
週に90分×2教えるから
0554545
2011/10/18(火) 20:26:51.99ずらしたりひっくり返したりした程度では同一判定されないレベル
な適当な感じでいいです。
標準関数に使えそうなのがあるならそれでいいや って感じ
0555デフォルトの名無しさん
2011/10/18(火) 20:27:32.390556デフォルトの名無しさん
2011/10/18(火) 20:28:49.400558デフォルトの名無しさん
2011/10/18(火) 20:29:19.17C言語のことがです
0559デフォルトの名無しさん
2011/10/18(火) 20:30:47.89最終的には本に頼るしかないんかな・・
何か果てしないね。
>>555
説明する能力のある奴は、その場所だけ調べればいいだけだから質問なんてしないだろwwww
いるんだよな、わかっている事なのに確認のため質問する奴。
0560デフォルトの名無しさん
2011/10/18(火) 20:33:56.370561デフォルトの名無しさん
2011/10/18(火) 20:40:21.79間違った答えで自信満々で自己レスする
こうするとこう確率でちげーよバカつって答え教えてくれる本当の馬鹿が釣れる
0562デフォルトの名無しさん
2011/10/18(火) 20:42:26.01安いプライド守るために必死だなw
0563デフォルトの名無しさん
2011/10/18(火) 20:42:48.17wwww
その手法は良く使ってたww
0564デフォルトの名無しさん
2011/10/18(火) 20:43:09.850565デフォルトの名無しさん
2011/10/18(火) 20:44:14.31いやいや、教える側はつけあがるからね。
"こんな事も分からないの!?!?"こんな事言う奴はぶん殴られてOK。
0566デフォルトの名無しさん
2011/10/18(火) 20:46:45.86高校出ても小学校の問題解けなかったりするから難しい話だな
えてしてそういう奴ほど>>565っぽい
0567デフォルトの名無しさん
2011/10/18(火) 20:49:04.80質問が低レベルなときに限るけどね
0568デフォルトの名無しさん
2011/10/18(火) 20:49:05.73VC++でも拡張子を.cにすればCでコンパイルしてくれるはず
一番楽なのはcodepad使う。これならiPadだってプログラミングできる。
0569デフォルトの名無しさん
2011/10/18(火) 20:56:23.47すくねーwwww
毎日はいれよww
0570デフォルトの名無しさん
2011/10/18(火) 21:16:56.98男『あらら?バッテリーかな?ライトは点く?』
女『昨日まではちゃんと動いてたのに。なんでいきなり動かなくなっちゃうんだろう。』
男『トラブルって怖いよね。で、バッテリーかどうか知りたいんだけどライトは点く?』
女『今日は○○まで行かなきゃならないから車使えないと困るのに』
男『それは困ったね。どう?ライトは点く?』
女『前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。』
男『…ライトは点く?点かない?』
女『○時に約束だからまだ時間あるけどこのままじゃ困る。』
男『そうだね。で、ライトはどうかな?点くかな?』
女『え?ごめんよく聞こえなかった』
男『あ、えーと、、ライトは点くかな?』
女『何で?』
0571デフォルトの名無しさん
2011/10/18(火) 21:18:59.61女『何の?』
男『え?』
女『ん?』
男『車のバッテリーがあがってるかどうか知りたいから、ライト点けてみてくれないかな?』
女『別にいいけど。でもバッテリーあがってたらライト点かないよね?』
男『いや、だから。それを知りたいからライト点けてみて欲しいんだけど。』
女『もしかしてちょっと怒ってる?』
男『いや別に怒ってはないけど?』
女『怒ってるじゃん。何で怒ってるの?』
男『だから怒ってないです』
女『何か悪いこと言いました?言ってくれれば謝りますけど?』
男『大丈夫だから。怒ってないから。大丈夫、大丈夫だから』
女『何が大丈夫なの?』
男『バッテリーの話だったよね?』
女『車でしょ?』
男『ああそう車の話だった』
女『もう、男って人の話聞かないんだから』
男『ごめん、ごめん。で、ライト点く?』
女『やっぱ怒ってんじゃん』
男『怒ってないってば』
女『絶対怒ってる。何カリカリしてるの? 人が大変な時に!』
男『いや、俺はただライトが付くかどうかを…』
女『話を逸らさないで! ライトがどうこうじゃなくて今あなたの話をしてるの!』
0572デフォルトの名無しさん
2011/10/18(火) 21:50:28.21本を読んで自習「できる」ってのも一つの能力なんだよな。
俺みたいにCの本を30冊以上買って読んでも
書けるのはハローワールドだけというとんでもないのもいる。
0573デフォルトの名無しさん
2011/10/18(火) 21:52:30.53ハローワールドだけで済まされるのは2〜3冊までだろう
なんで30冊も買っちゃったの?
0574デフォルトの名無しさん
2011/10/18(火) 21:59:01.200575デフォルトの名無しさん
2011/10/18(火) 22:04:45.07何ができるのかもわからん
0576デフォルトの名無しさん
2011/10/18(火) 22:08:30.040577デフォルトの名無しさん
2011/10/18(火) 22:13:53.200578デフォルトの名無しさん
2011/10/18(火) 22:16:11.68チンパンジーに反復練習させて仕込んだらできるんじゃないかwww?
そんな俺も未だにゲーム作れないがw
0579デフォルトの名無しさん
2011/10/18(火) 22:19:54.90自作ゲームでnsf鳴らしたいんだ
0580デフォルトの名無しさん
2011/10/18(火) 22:20:37.410581デフォルトの名無しさん
2011/10/18(火) 22:21:24.260582デフォルトの名無しさん
2011/10/18(火) 22:37:51.090583デフォルトの名無しさん
2011/10/18(火) 22:40:57.360584デフォルトの名無しさん
2011/10/18(火) 22:52:30.26捲き餌さ(まきえさ)
よし、大丈夫だ、うちのFEP(死語)
0585デフォルトの名無しさん
2011/10/18(火) 22:54:45.54買った本がわからなかったから別の本を買った。
それを繰り返したらこうなった。
K&Rの緑と白から始まって足かけ何十年だろ。
今年も2冊くらい買ったがモノにならん。
Cのセンスがないんだろうなあ。
0586デフォルトの名無しさん
2011/10/18(火) 23:07:24.50この順に学べばOK!
0587デフォルトの名無しさん
2011/10/18(火) 23:08:30.64たしかに、ぐぐったらそんなに当たり前の授業ではないようだった。
三流なんだけどな…
卒論、卒研は玉石混交なんであまり。
インデントスタイルについて研究しました。でも卒業できるんじゃないかね。
0588デフォルトの名無しさん
2011/10/18(火) 23:16:20.87ありがちな住所録(コンソール)でもつくったら
0589デフォルトの名無しさん
2011/10/18(火) 23:39:32.15エディタ、ワープロのキーボードマクロ → エディタのマクロ → AWK → C
アセンブラは、NEC PC-98でリセットボタンのある機種でやったことがあるよ
暴走したらリセットをおしました
0590デフォルトの名無しさん
2011/10/18(火) 23:44:07.65プログラミング書いて提出何てありえないだろうしww
怖いなぁ・・
0591デフォルトの名無しさん
2011/10/18(火) 23:45:40.620592デフォルトの名無しさん
2011/10/18(火) 23:45:56.970593デフォルトの名無しさん
2011/10/18(火) 23:56:49.02プログラミングは道具にすぎない・・
0594デフォルトの名無しさん
2011/10/19(水) 00:35:50.17Cが覚えられなくて改造コードを作る毎日orz
0595デフォルトの名無しさん
2011/10/19(水) 00:39:39.11クライイング・ザ・C言語って本おすすめしない
0596デフォルトの名無しさん
2011/10/19(水) 00:41:04.85「改造コード」か
悪いことしてる自覚持てよ
0597デフォルトの名無しさん
2011/10/19(水) 01:00:46.20| | | | | | | | | | || | |
| | | レ | | | | | J || | |
| | | J | | | し || | |
| レ | | レ| || J |
J し | | || J
| し J|
J レ
/V\
/◎;;;,;,,,,ヽ
_ ム::::(l|l゚Д゚)| …うわぁ
ヽツ.(ノ::::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
昔々、MS-DOS の時代ならば、OS の勉強をすることが、即アセンブリ言語を習得することだったんですけれども、今の時代はどうやってアセンブリ言語を勉強すればいいんでしょうかね。
>>447
ISO/IEC を調べていますのでしばしお待ちを。
おっと thnks.
>言い換えると、書籍とコンピュータ以外は
>批判有りで有限にしか対話してくれない。
残念ながら、対偶になっていません。論理学の勉強をお勧めします。
0601デフォルトの名無しさん
2011/10/19(水) 01:43:39.91バグだらけのプログラムしか書けないQが何を偉そうに「論理学」だあ?
千年早ええっつーの
即席で書いてるせいもあり多少のバグが混入して残念な想いではありますが、「バグだらけのコードしか書けない」とはあんまりですねえ。
それにしても最近は宿題スレもご無沙汰だ。瞬速で回答がつくので、手をつける隙もありません。すばらしい‥‥‥。
0603デフォルトの名無しさん
2011/10/19(水) 07:20:29.55>>>474
今の時代はどうやってアセンブリ言語を勉強すればいいんでしょうかね。
取っ掛かりとしては、「Cでコンパイル時にアセンブリソースを出して読む」など。
0604デフォルトの名無しさん
2011/10/19(水) 07:52:34.48そのサイトにアクセス
タイトルを出力
っていうCUI作りたいんだが、サイトにアクセスってどうすりゃいいんだ?
0605デフォルトの名無しさん
2011/10/19(水) 07:55:41.680606デフォルトの名無しさん
2011/10/19(水) 08:10:45.93環境による。
0607デフォルトの名無しさん
2011/10/19(水) 08:25:31.15今Mac OS Xで main(){puts("Hello World!");} のアセンブリを出してみたら以下のように
なった。ちょっとだけトリッキーw
(インデントとか壊れるかもしれんが単純にコピペ)
.cstring
LC0:
.ascii "Hellow World!!¥0"
.text
.globl _main
_main:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call L3
"L00000000001$pb":
L3:
popl %ebx
leal LC0-"L00000000001$pb"(%ebx), %eax
movl %eax, (%esp)
call _puts
addl $20, %esp
popl %ebx
leave
ret
0608デフォルトの名無しさん
2011/10/19(水) 08:29:45.32wget
0609デフォルトの名無しさん
2011/10/19(水) 08:59:48.94現状のまま乏しいリソースを割り振ろうとするか、相乗効果で両方アップを狙うか、にもよるな。
0610デフォルトの名無しさん
2011/10/19(水) 09:15:36.83まともにアセンブリやったことあれば、あんな無駄だらけのコードは普通は書けない
0611デフォルトの名無しさん
2011/10/19(水) 11:25:20.090612デフォルトの名無しさん
2011/10/19(水) 13:08:45.66だからQは自分を大きく見せようと平気で嘘をつく自己愛性人格障害なんだってば
0613デフォルトの名無しさん
2011/10/19(水) 15:38:26.46/dev/ttyAM0というデバイスファイルがあります。
このファイルはデバイスがあってなくても存在します。
C言語でこのデバイスに関連付けされている、機器が存在するか否かを判断するには、
どうすればよいのでしょうか?
0614デフォルトの名無しさん
2011/10/19(水) 15:53:15.95普通にOPENすれば良いだけでした。
0615デフォルトの名無しさん
2011/10/19(水) 17:12:16.07closeはファイルディスクリプタでの参照を閉じるだけで仮想メモリ空間での参照は
munmapするまで残っているから。
とか適当に答えてみるw
http://toki.2ch.net/i4004/kako/1295/12954/1295492625.html の >>324
たしかに、トイ――お遊びとしてしか書いたことないし(せいぜい500ステップくらいね)、そもそも 32bit のアセンブラはやったことないです。
いまから、またやりたいな、と思っていますが gcc の吐くモトローラにはいまいちなじめなくって。
>>612
ん?自己愛性人格障害ってなんですか?
0617デフォルトの名無しさん
2011/10/19(水) 21:35:51.560618デフォルトの名無しさん
2011/10/19(水) 21:37:43.300619デフォルトの名無しさん
2011/10/19(水) 22:22:00.950620デフォルトの名無しさん
2011/10/19(水) 22:31:56.61唯一ありがたいことはちゃんと名乗ることだな。
NGワードで簡単にあぼんできる。
0621デフォルトの名無しさん
2011/10/19(水) 22:58:18.160622デフォルトの名無しさん
2011/10/19(水) 23:01:48.030623デフォルトの名無しさん
2011/10/19(水) 23:16:25.76理解しなきゃいけないもんなのかすらわからない
いつも形式的にreturn 0;って全部に書いちゃってるけどやはり理解したい
どの本やサイト見てもなんかフワフワしてるから誰かわかりやすく教えてください‥‥
0624デフォルトの名無しさん
2011/10/19(水) 23:25:07.320625デフォルトの名無しさん
2011/10/19(水) 23:25:07.97関数の実行結果を値として受け取れる。
足し算関数なら、合計の値。
文字検索なら、見つかった位置(あるいは存在しないよとか)
サブルーチンの場合は、実行結果の成功・失敗
0626デフォルトの名無しさん
2011/10/19(水) 23:29:50.18戻り値がないと関数が実行されてもこちら側に受け取ることができない、というわけですね
とてもよくわかりました
ありがとう!
0627デフォルトの名無しさん
2011/10/19(水) 23:30:53.870628デフォルトの名無しさん
2011/10/19(水) 23:33:22.10062994
2011/10/19(水) 23:33:46.72main() の戻り値のことなら。
そのプログラム(main())を呼び出すプログラムなりシェルスクリプトなりが main() の戻り値を使用しているのなら、それにあわせて書いてあげればいいでしょう。
もしmain() を呼び出すプログラムなりシェルスクリプトなりが main() の戻り値を使用しそうにないのなら、適当に、あるいは書かなくても問題ないでしょう。
作法はあるようですが(>>516) ナーバスになることはないと思います。
main() 以外の戻り値については、どなたかお願いします。
煽ったり叩いたりするために便利ではありますが。
0630デフォルトの名無しさん
2011/10/19(水) 23:34:34.15定番としてはマスターマインド(ヒットアンドブロー)とか
0631デフォルトの名無しさん
2011/10/19(水) 23:42:23.46すいません
かなりの初心者なのでそこまでは理解できなさそうです
ただ、戻り値を説明しているところがあまりにも用語などで難しくされたものが多かったので質問させてもらい無事把握することができました
またそれなりに知識がついたら読み返させて頂きます。ありがとう
0632デフォルトの名無しさん
2011/10/19(水) 23:45:15.64ゆっくりしてってね!
0633デフォルトの名無しさん
2011/10/19(水) 23:46:02.530634デフォルトの名無しさん
2011/10/19(水) 23:46:56.32ぐぐってみたけど結構面白そうだな
できるか分かんないけど頑張ってみるわ
thx
0635デフォルトの名無しさん
2011/10/19(水) 23:48:28.780636デフォルトの名無しさん
2011/10/19(水) 23:48:51.20$ cc test.c ; ./a.exe; echo $?
0
$ echo "int main(void){ return 1; }" > test.c
$ cc test.c ; ./a.exe; echo $?
1
QZに餌をやるな
0638デフォルトの名無しさん
2011/10/19(水) 23:58:10.51それ以外に方法ありませんか?
0639デフォルトの名無しさん
2011/10/20(木) 00:01:07.170640デフォルトの名無しさん
2011/10/20(木) 00:04:45.460641デフォルトの名無しさん
2011/10/20(木) 00:10:17.52コテを消し忘れた馬鹿発見
0642デフォルトの名無しさん
2011/10/20(木) 00:32:24.74設定ファイルのとおりに、文字列を置換するプログラム
/* 設定ファイル(第一のフィールドは置換対象の文字列、第二のフィールドは置換文字列) */
コンサドーレ札幌 札 幌
川崎フロンターレ 川 崎
ヴィッセル神戸 神 戸
名古屋グランパス 名古屋
0 0
1 1
2 2
3 3
A A
B B
C C
D D
a a
b b
c c
d d
, ,
≪ <
≫ >
* *
0643デフォルトの名無しさん
2011/10/20(木) 00:40:49.860644デフォルトの名無しさん
2011/10/20(木) 00:52:33.19設定ファイルとは何ぞや
0645デフォルトの名無しさん
2011/10/20(木) 01:04:12.46数値やデータを関数に渡して(引数)、関数内で色々処理して、結果を関数呼び出し元に返す(戻り値)。
数学のsin、cosは習ったか?
float sin(float kakudo /*引数*/)
{
float kotae;
/*
sin値計算
*/
return kotae;/*戻り値*/
}
...
printf ("%f\n",sin(x));
0646デフォルトの名無しさん
2011/10/20(木) 01:09:45.31----- return_test.c ---------
int main(void)
{
return 10;/*戻り値*/
}
---------------------------
------- return_bat_test.bat -----
return_test.exe
echo %ERRORLEVEL%
pause
-----------------------------
0647デフォルトの名無しさん
2011/10/20(木) 01:10:57.13多分お前みたいな説明ならそのへんのサイト見る方がましだと思うぞ
用語並べた受け売りでしかないな
0648デフォルトの名無しさん
2011/10/20(木) 01:24:14.43設定ファイルとは、第一のフィールドに置換対象の文字列を記載し、第二のフィールドは置換文字列を記載したテキストファイルです
0649デフォルトの名無しさん
2011/10/20(木) 01:33:45.90その辺のサイト紹介してやれよ。
0650デフォルトの名無しさん
2011/10/20(木) 01:39:35.260651デフォルトの名無しさん
2011/10/20(木) 01:43:57.390653デフォルトの名無しさん
2011/10/20(木) 02:47:29.840654デフォルトの名無しさん
2011/10/20(木) 02:50:34.23QZに餌をやるな
0656デフォルトの名無しさん
2011/10/20(木) 09:13:32.93超簡易スクリプト言語の開発
0657デフォルトの名無しさん
2011/10/20(木) 09:22:07.64後のCコンパイラの誕生であった。
0658デフォルトの名無しさん
2011/10/20(木) 11:59:48.520659デフォルトの名無しさん
2011/10/20(木) 12:06:47.59充分可能かと。実際、MS-DOSパソコン時代にゲームとして販売されていたし。
まぁ、そのこと自体Cが関係するわけでもないから続けたいなら適当なスレへ。
0660デフォルトの名無しさん
2011/10/20(木) 12:10:02.64そうなのか
サンクス
実はC言語で思考ルーチンつくってみようかなと思って
0661デフォルトの名無しさん
2011/10/20(木) 12:28:49.090662デフォルトの名無しさん
2011/10/20(木) 12:47:37.910663デフォルトの名無しさん
2011/10/20(木) 13:07:22.00これを整数と小数にわけて別々の配列に入れたいのですが、
どうしたらいいですか。
例
配列A=20
配列B=0.314
0664デフォルトの名無しさん
2011/10/20(木) 13:13:20.210665デフォルトの名無しさん
2011/10/20(木) 13:17:26.58は、正しく無い場合がある。
問題は、精度を何処まで許すかによる。
>>663、精度は精度は何処まで期待するのか?
0666デフォルトの名無しさん
2011/10/20(木) 13:18:22.860667デフォルトの名無しさん
2011/10/20(木) 13:26:00.62精度は、配列に入れた後に計算をするのである程度あったほうがいいです。
>>663では配列に入れたいといっていますが、
計算するので、配列ではなく
整数部分をint型、小数部分をfloat(double)型にしたいと思います。
0668デフォルトの名無しさん
2011/10/20(木) 13:34:37.73modfを使ったらできました。
ありがとうございました。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* main */
int main(void) {
double x, y;
double iptr;
x = 3.1415;
y = modf(x, &iptr);
printf("seisu is : %.0f \n syosu is : %.4f\n", iptr, y);
return 0;
}
0669デフォルトの名無しさん
2011/10/20(木) 13:45:09.85つ [modf()]
0670デフォルトの名無しさん
2011/10/20(木) 13:54:34.00n = (int) x;
y = x-n;
では異常にデカイ数はダメと言うことか。
0671デフォルトの名無しさん
2011/10/20(木) 13:58:51.100672デフォルトの名無しさん
2011/10/20(木) 15:45:49.62配列に入れるために、sprintfをつかって文字列にし、
strcatで配列に結合させるプログラムを書いています。
一度なら大丈夫なのですが、for文で何回か回すと、
値が大きく増えてしまったり、変な数字になってしまいます。
数字を文字列にする場合に、sprintfを使わないほうがいいのでしょうか。
0673デフォルトの名無しさん
2011/10/20(木) 15:54:40.470674デフォルトの名無しさん
2011/10/20(木) 15:56:30.080675デフォルトの名無しさん
2011/10/20(木) 15:59:30.410676デフォルトの名無しさん
2011/10/20(木) 16:34:33.27なにをするにせよ結果を受け取らない限り此方には何もわからないんじゃないか、と思ってしまいます
値を返さなくていいプログラム、とはどういうものですか?
そもそも何か考え方が間違っているのでしょうか‥‥
0677デフォルトの名無しさん
2011/10/20(木) 16:37:25.60#include<stdio.h>
#include<math.h>
#include<string.h>
int main(void){
double syosu_a;
double seisu_b;
double syosu_aa;
double seisu_bb;
double syosu_roku_aa;
char seisu_sp_aa[20]="";
char syosu_sp_aa[20]="";
double syosu_roku_bb;
char seisu_sp_bb[20]="";
char syosu_sp_bb[20]="";
double b=123.432;
double a=19.920;
int count;
0678デフォルトの名無しさん
2011/10/20(木) 16:42:16.09for(count=0;count<17;count++){
printf("---------------------------------\n");
syosu_a=modf(a,&seisu_b);
printf("seisu is : %d \nsyosu is : %.4f\n",(int)seisu_b, syosu_a);
syosu_roku_aa=syosu_a*60;
printf("syosu_roku_aa is : %f\n",syosu_roku_aa);
sprintf(seisu_sp_aa,"%s%d",seisu_sp_aa,(int)seisu_b);
sprintf(syosu_sp_aa,"%s%f",syosu_sp_aa,syosu_roku_aa);
strcat(seisu_sp_aa,syosu_sp_aa);
printf("ABC is : %s\n\n",seisu_sp_aa);
seisu_sp_aa[0]=0;
0679デフォルトの名無しさん
2011/10/20(木) 16:44:22.97syosu_aa=modf(b,&seisu_bb);
printf("seisu is : %d \n syosu is : %.4f\n",(int)seisu_bb, syosu_aa);
syosu_roku_bb=syosu_aa*60;
printf("syosu_roku_bb is : %f\n",syosu_roku_bb);
sprintf(seisu_sp_bb,"%s%d",seisu_sp_bb,(int)seisu_bb);
sprintf(syosu_sp_bb,"%s%f",syosu_sp_bb,syosu_roku_bb);
strcat(seisu_sp_bb,syosu_sp_bb);
printf("QWE is : %s\n",seisu_sp_bb);
seisu_sp_bb[0]=0;
}
}
0680デフォルトの名無しさん
2011/10/20(木) 16:54:32.14画面に出力したり、ファイルに出力したりとかで処理が終わったら
別に値を返してもらわなくったっていいよね
あとは複数の値を返却したい場合、戻り値を使わずにポインタ渡しだけで済ませたりとか
0681デフォルトの名無しさん
2011/10/20(木) 17:02:36.38>sprintf(seisu_sp_aa,"%s%d",seisu_sp_aa,(int)seisu_b);
第一引き数を取り込むのは鼻から悪魔。
どうしてもseisu_sp_aaに追記したいのなら、
sprintf(seisu_sp_aa + strlen(seisu_sp_aa, "%d", (int) seisu_b);
か
sprintf(strchr(seisu_sp_aa, '\0'), "%d", (int) seisu_b);
とする。
で、ループを回る間seisu_sp_aaはクリアしているのにsyosu_sp_aaをクリアしてないから溢れている。
0682デフォルトの名無しさん
2011/10/20(木) 17:03:46.12ありがとうございます
では逆にvoidを使うのはどういった時なのでしょうか
本などには引数を持たない時と書かれているんですが引数を持たない関数、というのがピンと来ません
それも加えて教えてもらえると嬉しいです
0683デフォルトの名無しさん
2011/10/20(木) 17:06:25.18>syosu_a=modf(a,&seisu_b);
変数名のルールが判らん。全部_aに統一しないのは何で? ややこしくてかなわん。
途中経過が要らないなら、
sprintf(seisu_sp_aa, "%d%f", (int) seisu_b, syosu_a * 60);
でよさそうだけど……
0684デフォルトの名無しさん
2011/10/20(木) 17:11:54.44関数の戻り値の型がvoidの場合は>680。
引き数リストがvoidの場合は、例えば一文字キー入力のように副作用だけでできている関数など。
0685683
2011/10/20(木) 17:12:44.13小数部だけ60倍する意味も判らん。
0686デフォルトの名無しさん
2011/10/20(木) 17:14:53.09ああーよくわかりました!
ありがとうございます
0687デフォルトの名無しさん
2011/10/20(木) 18:22:20.75移植するために開発された言語なんだから
少なくともオペレーティングシステムをアセンブラで書ける
技量を持った人でないと理解できないに決まってるわけだよ。
そりゃ素人が何十年学んでも無理だ罠。
あきらめてアセンブラでOS書くことから修行する。
0688デフォルトの名無しさん
2011/10/20(木) 18:48:34.530689デフォルトの名無しさん
2011/10/20(木) 18:52:50.780690デフォルトの名無しさん
2011/10/20(木) 18:53:33.750691デフォルトの名無しさん
2011/10/20(木) 19:29:31.63ありがとうございます。
syosu_sp_aaもクリアしました。
>>683
ありがとうございます。
変数名のルールは、特に決めていませんでした。
どんどん増えてわかりづらくなってしまいました。
sprintf(seisu_sp_aa, "%d%f", (int) seisu_b, syosu_a * 60);
これでできました。
小数部だけ60倍するのは、貼り付けたコードは、一部でしたので
後々必要になってくるからです。
ありがとうございました。
0692デフォルトの名無しさん
2011/10/20(木) 20:43:43.040693デフォルトの名無しさん
2011/10/20(木) 21:05:07.87例えば
年齢: 歳
と表示させて":"と"歳"の間に文字やら数字やら入力させることってできる?
0694デフォルトの名無しさん
2011/10/20(木) 21:06:32.810695デフォルトの名無しさん
2011/10/20(木) 21:14:33.17int a;
double b=20.314, c, d;
c=b;
a=(int)c;
d=b-a;
printf("%d,%f",a ,d);
で
20,0.314000
て表示されるはず
0697デフォルトの名無しさん
2011/10/20(木) 21:16:23.070698デフォルトの名無しさん
2011/10/20(木) 21:16:51.61どうやってやるか教えていただきたい
0699デフォルトの名無しさん
2011/10/20(木) 21:18:36.480700デフォルトの名無しさん
2011/10/20(木) 21:21:44.43じゃあお願いしやす
0701デフォルトの名無しさん
2011/10/20(木) 22:01:10.050702デフォルトの名無しさん
2011/10/20(木) 22:02:14.000703デフォルトの名無しさん
2011/10/20(木) 22:14:26.40って表示した後にsystem("clear");して
年齢:6歳
って表示するだけじゃねーの
0704デフォルトの名無しさん
2011/10/20(木) 22:16:55.48puts("年齢: 歳");
for(i = 0; i != 100; ++i)
puts("");
printf("年齢:%d歳", age);
0705デフォルトの名無しさん
2011/10/20(木) 22:25:48.65extern HWND hWnd;
って変数宣言して、
そのa.hをインクルードしたファイル(b.cpp)の局所変数でhWndっていう変数があるんだけど
局所変数だから、そっちが優先されて使われるから、モウマンタイだとおもってたんだけど、
hWndがa.objとb.objで重複宣言されているってエラーがでるんだけど、
そういうもんなの?
0706デフォルトの名無しさん
2011/10/20(木) 22:28:28.32#include <stdio.h>
int main(void){
int age;
printf("\n年齢: 歳\r年齢: ");
fflush(stdout);
scanf("%d", &age);
printf("\nage=%d\n", age);
return 0;
}
0707デフォルトの名無しさん
2011/10/20(木) 22:35:37.46両方にあるんだろ、有名コンパイラは滅多に嘘つかない。
0708デフォルトの名無しさん
2011/10/20(木) 22:45:27.37関数の仮引数がhWndですけど、それってローカル変数だけど
駄目なんすか?
0709デフォルトの名無しさん
2011/10/20(木) 22:47:44.00作ってる間に気がつくと思うが、気がつかなかったらチェックする。
0710デフォルトの名無しさん
2011/10/20(木) 23:26:06.65キー入力のたびにそれやるのかぁ
0711デフォルトの名無しさん
2011/10/20(木) 23:27:55.240713デフォルトの名無しさん
2011/10/20(木) 23:33:14.45俺には恥ずかしすぎてとてもできない。
0714デフォルトの名無しさん
2011/10/20(木) 23:35:03.890715デフォルトの名無しさん
2011/10/20(木) 23:35:14.640716デフォルトの名無しさん
2011/10/20(木) 23:36:22.160717デフォルトの名無しさん
2011/10/20(木) 23:38:06.61改行しまくるだけ?
0718デフォルトの名無しさん
2011/10/20(木) 23:40:14.78うん
0719デフォルトの名無しさん
2011/10/20(木) 23:43:22.38thx
てか\rってどういう動作するの?
確か"復帰"だったよな
0720デフォルトの名無しさん
2011/10/20(木) 23:57:59.750721デフォルトの名無しさん
2011/10/21(金) 00:02:53.94行頭にキャレットを移す
APIを使えばもっといろいろとできる
0722デフォルトの名無しさん
2011/10/21(金) 00:05:40.390723デフォルトの名無しさん
2011/10/21(金) 00:09:00.76emacs
vi
notepad
0724デフォルトの名無しさん
2011/10/21(金) 00:17:55.95コンソールを秒間60フレームで書き換えることも辞さない雰囲気だな。
0725デフォルトの名無しさん
2011/10/21(金) 00:28:26.73ttp://codepad.org/M2KFDxil
0727デフォルトの名無しさん
2011/10/21(金) 00:47:35.47タイプライターの動画を見ればイメージしやすいと思う
0728デフォルトの名無しさん
2011/10/21(金) 00:54:24.91gcc-coreというツール群の中のcc1というサブプログラムという認識で
あっていますか?
0729デフォルトの名無しさん
2011/10/21(金) 02:52:16.91ソースコードを短くする以外で教えてください
0730デフォルトの名無しさん
2011/10/21(金) 03:00:01.47変数名が長くなってもインクリメントであることがすぐに分かる
0731デフォルトの名無しさん
2011/10/21(金) 03:01:20.85x=x+1なんて普通書かないから、ひょっとしてx=y+1と間違ってんのか?とか
読む人を疑心暗鬼にからせない。
0732デフォルトの名無しさん
2011/10/21(金) 03:02:07.80それは除外条件だろ。
0733デフォルトの名無しさん
2011/10/21(金) 03:08:43.27どういうこと?
0734デフォルトの名無しさん
2011/10/21(金) 03:09:47.990735デフォルトの名無しさん
2011/10/21(金) 03:10:25.320736デフォルトの名無しさん
2011/10/21(金) 04:07:12.90配列の添え字としてi++をつかえますね
for(i = 0; i < 10; i = i + 1) {
a[i] = 0;
}
for(i = 0; i < 10; i++) {
a[i] = 0;
}
for(i = 0; i < 10; ) {
a[i++] = 0;
}
0737デフォルトの名無しさん
2011/10/21(金) 04:09:03.99int main(void) {
char c[5];
int i;
i = 0;
c[i++] = 'w';
c[i++] = 'o';
c[i++] = 'r';
c[i++] = 'd';
c[i] = '\0';
puts(c);
return 0;
}
0738デフォルトの名無しさん
2011/10/21(金) 04:13:00.95i = -1;
c[i = i + 1] = 'w';
とかもできるわけだが。
0739デフォルトの名無しさん
2011/10/21(金) 06:57:19.89・短くなることに含まれるかもしれないが、タイプミスしにくい。
・Cのイディオムなので、読み易くなる。
→x = x + 10; とのタイプミスなどを視覚的に疑い安くなる。
・CPUのインストラクションセットに、インクリメントが含まれている場合があり、
最適化しやすい。
0740デフォルトの名無しさん
2011/10/21(金) 08:19:24.710741デフォルトの名無しさん
2011/10/21(金) 12:02:02.060742186
2011/10/21(金) 12:07:47.250743デフォルトの名無しさん
2011/10/21(金) 12:34:10.140744デフォルトの名無しさん
2011/10/21(金) 15:48:26.86それが正しいかどうかを見てくれるサイトってありますか?
0745デフォルトの名無しさん
2011/10/21(金) 15:52:39.480746デフォルトの名無しさん
2011/10/21(金) 16:30:49.190747デフォルトの名無しさん
2011/10/21(金) 16:54:14.76http://judge.u-aizu.ac.jp/onlinejudge/
0748デフォルトの名無しさん
2011/10/21(金) 16:56:54.55それを承知のうえ、というより楽しむのがここ
与太話に発展するのがいやならやめとけ
>>715
>>716
http://pc12.2ch.net/tech/kako/1201/12011/1201153965.html の >>139
>あまり知られていないが、これは 「仮定義(tentative definition)」 という仕様。
>extern も static もついていない、初期化を伴わないグローバル変数の宣言は 「仮定義」 と見なされる。
>対する、extern も static もついていない、初期化を伴うグローバル変数の宣言は 「外部定義(external definition)」 と見なされる。
>外部定義は必ず実体定義を伴う。
>外部定義が複数あると、二重定義となりエラーとなる。
>しかし、仮定義は他に実体定義がなければ実体を定義し、
>他に実体定義があれば実体定義を伴わない単なる宣言と見なされる。
>複数の仮定義を書いた場合、実体は1つだけ定義され、それらの仮定義は実体を共有する。
>>715
むしろモジュールが20も30もになると、extern なんて使ってらんないのですけど、ご経験はないのでしょうか?
>>714
そういうのはありますね。
0750デフォルトの名無しさん
2011/10/21(金) 19:46:47.720751デフォルトの名無しさん
2011/10/21(金) 20:19:45.72ありがとうございます!
0752デフォルトの名無しさん
2011/10/21(金) 20:43:24.100753デフォルトの名無しさん
2011/10/21(金) 20:50:36.47ダイエットしろ
0754デフォルトの名無しさん
2011/10/21(金) 20:58:02.650755デフォルトの名無しさん
2011/10/21(金) 21:03:41.390756デフォルトの名無しさん
2011/10/21(金) 21:18:16.18WinAPIを使おうと思ったのですが↓でコンパイルするとエラーが出ます。
どうすればいいのでしょうか?
/*******************************************/
#include <Windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR 1pCmdLine,
int nCmdShow
){
MessageBox( NULL,"test","test", MB_OK);
return 0;
}
/*********************************************/
/**********エラーメッセージ*******************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
s.c:
エラー E2293 s.c 6: ) が必要
*** 1 errors in Compile ***
*********************************************/
0757デフォルトの名無しさん
2011/10/21(金) 21:21:23.220758デフォルトの名無しさん
2011/10/21(金) 21:25:00.460759デフォルトの名無しさん
2011/10/21(金) 21:31:33.68ご返答ありがとうございます。
ではどのようにすればうまくいくのでしょうか?
1pCmdLine → pCmdLineにするとたくさんエラーが出ました。
/*************************エラーメッセージ*************************************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
s.c:
警告 W8057 s.c 11: パラメータ 'hInstance' は一度も使用されない(関数 WinMain )
警告 W8057 s.c 11: パラメータ 'hPrevInstance' は一度も使用されない(関数 WinMain
)
警告 W8057 s.c 11: パラメータ 'pCmdLine' は一度も使用されない(関数 WinMain )
警告 W8057 s.c 11: パラメータ 'nCmdShow' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
/******************************************************************************
0760759
2011/10/21(金) 21:33:40.230761デフォルトの名無しさん
2011/10/21(金) 21:35:08.500762デフォルトの名無しさん
2011/10/21(金) 21:35:34.76警告はとりあえず無視して良い。
記憶で書いているけど、Windows用にコンパイルスイッチが必要だったはず。
-Wだったかな?
今は通常のCとしてコンパイルしようとしてmainが無いので、文句を言っている。
0764デフォルトの名無しさん
2011/10/21(金) 22:38:31.380765デフォルトの名無しさん
2011/10/21(金) 23:28:13.06×1p(いち・ぴー)
○lp(える・ぴー)
0766デフォルトの名無しさん
2011/10/21(金) 23:51:07.87配列a[1000]に0か1をランダムに選択していきたいのですが,
int a[1000]={
{0 + rand() % (2 - 0),0 + rand() % (2 - 0),…}
};
といったようにこれを1000回繰り返さないといけないのでしょうか?
なにかいい方法があれば教えてください.
0767デフォルトの名無しさん
2011/10/22(土) 00:02:17.10main関数のargv[]配列の最終要素にはヌルポインタが
セットされているという記述を本で読みましたが、マジでしょうか?
それは誰がセットしてくれているのでしょうか?
ポインタの配列を作る場合、そうしないといけないという決まりが
あるのでしょうか?
0768デフォルトの名無しさん
2011/10/22(土) 00:02:39.83for (i=0; i<1000; i++) a[i] = rand()%2;
0769デフォルトの名無しさん
2011/10/22(土) 00:03:19.440770デフォルトの名無しさん
2011/10/22(土) 00:10:14.66それが規格で決まってるかどうかは知らないけど、決まってるなら便利だなぁ。
自分でポインタ配列作るときはそんな決まりはないよ。
ただ、センチネル(門番、番兵)という手法があるので、そうすることはある。
0771デフォルトの名無しさん
2011/10/22(土) 00:10:43.47int a[1000]={0};unsigned cnt=rand()%1000;for(unsigned i=0;i<cnt;++i){unsigned n=rand()%1000;a[n]=~(a[n]&1);}
0772デフォルトの名無しさん
2011/10/22(土) 00:14:41.52>>769
そうですよね!
気づきませんでした.
あほな質問に答えて頂きありがとうございました.
0773デフォルトの名無しさん
2011/10/22(土) 00:16:23.750774デフォルトの名無しさん
2011/10/22(土) 00:37:52.240775デフォルトの名無しさん
2011/10/22(土) 00:42:58.23起点を変えるだけで srand とほとんど区別がつかなくなるし
0776デフォルトの名無しさん
2011/10/22(土) 00:47:18.42なにそれ?
0777デフォルトの名無しさん
2011/10/22(土) 00:54:56.85内緒
0778デフォルトの名無しさん
2011/10/22(土) 00:58:37.260779デフォルトの名無しさん
2011/10/22(土) 01:05:35.43私は規格書を参照できないのですが、argv[argc]はNULLでなければならないとなっています。
NULLをセットするのはコマンドライン引数をセットする人と同じく、処理系です。
コマンドライン引数を1つずつ処理するときのイディオムは
for (i = 0; i < argc; i++) {
// argv[i]を参照
}
ですが、argv[argc] == NULLなので、Javaと同じように以下でもOK。
while (argv++) {
// *argvを参照
}
では規格の面から裏打ちを。
ISO/IEC 9899:1999 5.1.2.2.1.2
argv[argc] shall be a null pointer.
0782デフォルトの名無しさん
2011/10/22(土) 01:56:25.720783デフォルトの名無しさん
2011/10/22(土) 02:15:30.53嫌でも学ばなきゃならない時がきますか?
0785デフォルトの名無しさん
2011/10/22(土) 02:43:19.77while(1){}のループどっちが好きですか
0786デフォルトの名無しさん
2011/10/22(土) 02:48:58.700787デフォルトの名無しさん
2011/10/22(土) 02:50:26.03前のは本当にアレだった
それは興味深い。
前のQZのいつ頃あるいはどんなところがアレだったか、ちょこっとだけ教えてくださいませんか?
0789デフォルトの名無しさん
2011/10/22(土) 03:08:52.40アレは直らないから中の人がバトンタッチしたと思ってる
0790デフォルトの名無しさん
2011/10/22(土) 03:22:07.390791デフォルトの名無しさん
2011/10/22(土) 04:27:27.99前のQZは>>655みたいな感じだったよ
0792デフォルトの名無しさん
2011/10/22(土) 06:02:03.010793デフォルトの名無しさん
2011/10/22(土) 06:32:00.200794デフォルトの名無しさん
2011/10/22(土) 06:47:07.282.関数からでたら関数内の変数は、もうつかえないが、
関数内の変数にstaticをつけておけば、また関数にはいれば、前の状態が保持されている
0795デフォルトの名無しさん
2011/10/22(土) 07:17:48.47関数A
関数A
このブロック間は変数の結果が初期化されず保持
}
{
関数A
ブロックを出ているので初期化
}
関数A
スタティック変数
わかりにくいもしれないですがこういうことであってますか?
これがもしグローバル関数であればブロックを出てからも適応されるということですかね?
0796デフォルトの名無しさん
2011/10/22(土) 07:43:19.57前スレでも書いたけど、規格では仮定義の挙動は1つの翻訳内についてしか書かれていないから
本来その動作は未定義でしょう。
もちろん、UNIXやcommon extensionで複数定義が認められているから、ほとんどの処理系で
動作はするでしょうけど、規格厳密合致プログラム(strictly conforming program)としては
アウトだと思う。
初心者に規格厳密合致プログラムを薦めるべきかまではわからんけど。
0797デフォルトの名無しさん
2011/10/22(土) 07:58:27.60何言ってるか不明。変数はどこにある?
何言っているか不明な時点で、何か誤解があるように思う。
とりあえずブロック内とトップレベルで、staticの意味が変わってくる。
・トップレベルの場合
static無しの場合: 外部結合(プログラム全体から参照できる。)
static有りの場合: 内部結合(ソースファイル内からのみ参照できる。)
・ブロック内の場合
static無しの場合: ブロックに入るたびにスタックに積まれる。
static有りの場合: プログラム開始時から特定の領域のみ確保される。(結果的に値が維持される)
0798デフォルトの名無しさん
2011/10/22(土) 08:04:33.490799デフォルトの名無しさん
2011/10/22(土) 08:22:08.92int add(int);
int main()
{
int sum;
sum = add(5);
printf("sum = %d¥n", sum);
sum = add(10);
printf("sum = %d¥n", sum);
return 0;
}
int add(int n)
{
static int total = 0;
total += n;
return total;
}
携帯端末からだったので書き方悪すぎましたすいません
例えばこういう場合なら{}でだけ値が維持されるってことですよね?
グローバル関数だとしても維持されるんじゃないのでしょうか?
0800デフォルトの名無しさん
2011/10/22(土) 08:40:07.08>ワザと頓珍漢な質問をする
>間違った答えで自信満々で自己レスする
>こうするとこう確率でちげーよバカつって答え教えてくれる本当の馬鹿が釣れる
0801デフォルトの名無しさん
2011/10/22(土) 08:46:38.56パンダはなんでキリンなの?とか聞かれても答えようがないから頓珍漢と言えるんだろうが
0802デフォルトの名無しさん
2011/10/22(土) 09:02:11.000803デフォルトの名無しさん
2011/10/22(土) 10:32:51.36outputの1行目はなして
i16[0x00008000]
にならないですか?
0804デフォルトの名無しさん
2011/10/22(土) 11:01:55.14printf()の引数に積んだ時にintに変換されてるから。
i16 & 0xffffとすればいい。
0805デフォルトの名無しさん
2011/10/22(土) 11:24:29.53http://codepad.org/PkE40CKy
0806デフォルトの名無しさん
2011/10/22(土) 11:25:29.61int/shortは符号付だからだよ。
unsigned int/unsigned shortにすればいい。
0807デフォルトの名無しさん
2011/10/22(土) 11:26:20.11i32 = i16 & 0xffff;
としなければならないということですか?
0808デフォルトの名無しさん
2011/10/22(土) 11:30:57.35目的による。
符号拡張したいかどうか。
0809デフォルトの名無しさん
2011/10/22(土) 11:33:14.97になっているけど
int代入する場合は
(unsigned short)i16;
ってしなければいけないってことですか?
http://codepad.org/b9lgoMlT
0810デフォルトの名無しさん
2011/10/22(土) 11:33:59.24だから目的によると言っとろうが。
0811デフォルトの名無しさん
2011/10/22(土) 11:36:56.46符号付整数であつかうかどうかってことですね
http://codepad.org/I0BfqH13
やっとわかりました
ありがとうございました
0812デフォルトの名無しさん
2011/10/22(土) 11:38:08.04のせるリンク間違いました
http://codepad.org/xtOT6HtG
0813デフォルトの名無しさん
2011/10/22(土) 12:31:30.23ファイル1が更新されたときに、プログラムを動かすことはできますか?
0814デフォルトの名無しさん
2011/10/22(土) 12:33:34.030815デフォルトの名無しさん
2011/10/22(土) 12:34:39.100816デフォルトの名無しさん
2011/10/22(土) 12:43:21.49書き直しなら、更新時間をチェックして、前回の処理以降に更新してたら処理するとか。
0818デフォルトの名無しさん
2011/10/22(土) 12:51:00.03http://simd.jugem.jp/?eid=57
このサイトみたいなプログラムを組み、
タイマーで定期的にチェックし、最後にif文で、
前回のサイズより大きかったらAを機動させようと思います。
08191 ◆K4uC7X8rB6
2011/10/22(土) 14:25:34.52| ^o^ | < コーラ おいしいです
\_[]⊂/)
_| |/ |
| /
/ ̄\
| | < それは しょうゆ です
\_/
_| |_
| |
/ ̄ ̄ ̄ ̄\
/;;:: ::;ヽ
|;;:: ィ●ァ ィ●ァ::;;|
|;;:: ::;;|
|;;:: c{ っ ::;;|
|;;:: __ ::;;;|
ヽ;;:: ー ::;;/
\;;:: ::;;/
|;;:: ::;;|
|;;:: ::;;|
/ ̄ ̄ ̄  ̄ ̄ ̄\
|;;:: ::;;|
|;;:: ::;;|
>>825
0820デフォルトの名無しさん
2011/10/22(土) 14:29:53.32WinAPIのプログラムと普通のC言語のプログラムを
組み合わせることは可能でしょうか?
例えばですが、
#include <Windows.h>
#include <stdio.h>
int main(){
・・・・・・・
if(a==1)→WINAPI WinMain()で作ったプログラムへ飛んでゲームが始まる
みたいな感じで、普通のC言語のプログラムでif分岐などを使って
WinAPIをユーザ関数みたいに使えたらいいなと思っています。
0821デフォルトの名無しさん
2011/10/22(土) 14:41:07.80>if(a==1)→WINAPI WinMain()で作ったプログラムへ飛んでゲームが始まる
でなかった時は、何をしたいの?
0822デフォルトの名無しさん
2011/10/22(土) 14:43:32.000823デフォルトの名無しさん
2011/10/22(土) 15:16:33.69まだ考えていませんが、if(a==2)なら別のWINAPI WinMain()で作ったプログラムへ飛んで
別のゲームを始めたり、普通のC言語で作ったゲームのプログラムへ飛ばしたり
したいです。
>>822
そうなんですか!
どのように記述すればよいか教えてもらえないでしょうか?
0824デフォルトの名無しさん
2011/10/22(土) 15:45:18.180825デフォルトの名無しさん
2011/10/22(土) 15:57:27.21ちなみに、OSによっては「ファイルが更新されたら教えてくれるサービス」
みたいのがあって、そういうOS限定ならそういうのを使うこともできる。
0826デフォルトの名無しさん
2011/10/22(土) 16:13:54.86int main(void) {
if(a == 1)
MyAppMain((HINSTANCE)GetModuleHandle(0), 0) ;
return 0 ;
}
未定義なのは、外部宣言のメモリ空間への割付は本来リンカのお仕事だから、という気がしないでもありません。
0828デフォルトの名無しさん
2011/10/22(土) 18:18:01.670829デフォルトの名無しさん
2011/10/22(土) 19:02:05.57なにがいけないのでしょうか?
#include <stdio.h>
#include <Windows.h>
int MyAppMain(HINSTANCE hThisApp, void const * pArg) { /* ry */ ; return 0 ; }
int main(void) {
int a;
printf("ゲームを始めるなら1を入力>");scanf("%d",&a);
if(a == 1){MyAppMain((HINSTANCE)GetModuleHandle(0), 0);}
return 0 ;
}
/**********************************************************************
D:\C_programming>bcc32 -W test.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
警告 W8057 test.c 4: パラメータ 'hThisApp' は一度も使用されない(関数 MyAppMain )
警告 W8057 test.c 4: パラメータ 'pArg' は一度も使用されない(関数 MyAppMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照)
D:\C_programming>test
'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0830デフォルトの名無しさん
2011/10/22(土) 19:07:53.730831デフォルトの名無しさん
2011/10/22(土) 19:18:38.57まずはここがわかりやすいかと。
http://wisdom.sakura.ne.jp/system/winapi/index.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win3.html
bcc32 -W とか gcc-3 -mno-cygwin -mwindows でコンパイルするのならば、
WinMain() から記述しはじめなければなりません。main() はまったく使いません。
0833デフォルトの名無しさん
2011/10/22(土) 19:37:32.100834デフォルトの名無しさん
2011/10/22(土) 19:54:12.330835デフォルトの名無しさん
2011/10/22(土) 20:34:26.90できないなら、教えるなんてやろうと考えるな。
0836デフォルトの名無しさん
2011/10/22(土) 20:35:54.030837デフォルトの名無しさん
2011/10/22(土) 20:37:32.13はい、それはそうだと常々考えています。間違いなく私は教わるほうです。
でも、困っている人がいれば、知りうる限りの情報はお出ししようかと考えています。
>>834
>>796 や http://hibari.2ch.net/test/read.cgi/tech/1314783907/766 のことならば、折に触れて再考しています。
(規格全部の構成を整理して把握するのはまだできていない)
ただし、昔の .obj とかで考えてみても、モジュール間で共有する変数の最終的なロケーションと最終的なサイズを決めているのはリンカ、という気がしてなりません。
(参照:MS-DOS 6.2 プログラマーズリファレンスマニュアル Vol.1: 付録B インテルオブジェクトモジュールフォーマット: B.12 レコードフォーマットおよび B.14 共有変数の型に関するマイクロソフト表現法)
coff や elf の事情がわかる資料があればいいのですけれども。
0839デフォルトの名無しさん
2011/10/22(土) 20:53:50.68どちらかというと借り物の知識を無知な人にひけらしたがっているような気がするね。
別にいい人を装うことはないと思うよ
0840デフォルトの名無しさん
2011/10/22(土) 20:56:54.050841デフォルトの名無しさん
2011/10/22(土) 21:00:36.74「ひけらしたがって」じゃなくてな「ひけらかしたがって」だぞ俺、自重orz
08421 ◆K4uC7X8rB6
2011/10/22(土) 22:13:47.69まっ、それもそうですかね。
0844デフォルトの名無しさん
2011/10/23(日) 00:21:19.14直接は関係ないことだけど、メッセージが「警告」「Error」みたいに日英混ざってるのね。
コンパイラーとリンカーで違うっぽいね。
0845デフォルトの名無しさん
2011/10/23(日) 11:41:17.780846デフォルトの名無しさん
2011/10/23(日) 11:53:00.960847デフォルトの名無しさん
2011/10/23(日) 11:53:19.41出来ません
0848デフォルトの名無しさん
2011/10/23(日) 11:53:45.820849デフォルトの名無しさん
2011/10/23(日) 12:03:33.150850デフォルトの名無しさん
2011/10/23(日) 12:16:52.650851デフォルトの名無しさん
2011/10/23(日) 16:10:21.57できますよ
0852デフォルトの名無しさん
2011/10/23(日) 16:17:26.37パイプのことだろうか
aの標準出力をbの入力にする
$ a | b
0853デフォルトの名無しさん
2011/10/23(日) 16:25:33.17それは出力を別のアプリの入力に渡してるだけ。
コアラの親が出したう○ちを子コアラが食べるようなもの。
0854デフォルトの名無しさん
2011/10/23(日) 16:28:38.600855デフォルトの名無しさん
2011/10/23(日) 16:32:31.690856デフォルトの名無しさん
2011/10/23(日) 16:38:56.030857デフォルトの名無しさん
2011/10/23(日) 16:39:38.800858デフォルトの名無しさん
2011/10/23(日) 17:29:44.53ムカデ人間の話は本当にやめろ!
0859デフォルトの名無しさん
2011/10/23(日) 21:42:34.010860デフォルトの名無しさん
2011/10/23(日) 22:29:57.62popen
0861デフォルトの名無しさん
2011/10/23(日) 22:33:28.72○ 標準出力を入力
× 標準出力から入力
0862デフォルトの名無しさん
2011/10/23(日) 22:42:54.72出力からの入力は不可能(浣腸NG)
出力を入力として受け取るのは可能(スカトロOK)
0863デフォルトの名無しさん
2011/10/23(日) 23:16:08.510864デフォルトの名無しさん
2011/10/23(日) 23:51:14.78けど、うまくいかない。 だれかおかしなところを直してくれ。
main(){
char s[256];
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
printf("0\n");
for(;;){
fgets(s,sizeof(s),stdin);
printf("%d\n",atoi(s)+1);
}
}
で、名前つきパイプAを作って
./a.out >A <A
とやってみたがダメだった。
cat A | ./a.out >A
もダメだ。どこかでまだバファリンしてるんだろうか。
0865デフォルトの名無しさん
2011/10/24(月) 00:03:52.99で動いてるようだが。
0866デフォルトの名無しさん
2011/10/24(月) 00:15:22.85環境依存にぶちあたるとは・・・ もはやCは関係なくなったな
0867デフォルトの名無しさん
2011/10/24(月) 00:34:47.80まずメモリにデータを作り込んでから表示させてみようと
以下のソースを作ってコンパイルしました。
#include <stdio.h>
int main () {
char **p = { "abc","def","ghi" };
printf("%s\n", **p);
p++;
printf("%s\n", **p);
p++;
printf("%s\n", **p);
}
すると以下の警告が出ますが、コンパイルは通ります。
test01.c: In function ‘main’:
test01.c:3: 警告: initialization from incompatible pointer type
test01.c:3: 警告: スカラー初期化子内の要素が多すぎます
test01.c:3: 警告: (near initialization for ‘p’)
test01.c:3: 警告: スカラー初期化子内の要素が多すぎます
test01.c:3: 警告: (near initialization for ‘p’)
実行ファイルを実行すると、Segmentation faultと出て終了します。
各文字列が出るはずなのですが、何がまずいのでしょうか。
0868デフォルトの名無しさん
2011/10/24(月) 00:39:53.97char **p = { "abc","def","ghi" };
→
char *p[] = { "abc","def","ghi" };
0869デフォルトの名無しさん
2011/10/24(月) 00:43:43.43↓もまずい。
printf("%s\n", **p);
→
printf("%s\n", *p);
それから、p++とは(*p)++を比べてみるのもいいかも。
するのだったら、
http://codepad.org/ArBCmMtt
でしょう。
領域の確保を常に考えなければなりません。>>867 では、"abc"、"def" 等のための領域は静的ではあっても確保されていますが、
"abc" の先頭アドレス、"def" の先頭アドレス、等を格納する領域は確保されていません。
0871デフォルトの名無しさん
2011/10/24(月) 01:52:05.07エラー E2342 練習用プログラム.c 23: パラメータ 'o' は int * 型として定義されているので int は渡せない(関数 main )
エラー E2342 練習用プログラム.c 23: パラメータ 'p' は int * 型として定義されているので int は渡せない(関数 main )
↑のようなエラーが出てて改善方法がわかりません。
1次元配列を使った関数が分からないので良ければ教えていただきたいです。
0872デフォルトの名無しさん
2011/10/24(月) 02:10:02.64× wairu(a[R],a[R]);
○ wairu(a,a);
int wairu()だから、関数の最後でreturn 0;か何かする。
0873デフォルトの名無しさん
2011/10/24(月) 07:40:01.38分かりました。ありがとうございました。
0874デフォルトの名無しさん
2011/10/24(月) 13:47:58.560875デフォルトの名無しさん
2011/10/24(月) 13:55:28.760876デフォルトの名無しさん
2011/10/24(月) 14:35:44.84非同期の鍵盤状態の取得
0877デフォルトの名無しさん
2011/10/24(月) 15:49:54.864以外の乱数が発生すれば終了としたいのですが
なにか良い方法はないでしょうか?
0878デフォルトの名無しさん
2011/10/24(月) 15:53:27.90とりあえずエスパーすると rand() は使うなという縛りがあるんだな?
0879デフォルトの名無しさん
2011/10/24(月) 15:59:35.12int i=4;
if(i=4){
i = rand() % 7 + 1;
printf("%d\n",i);
};
というようにしてうまくいかなくて困ってます.
とりあえず,1,2,3,5,6,7のなかから1つの値をランダムに選択したいです.
0880デフォルトの名無しさん
2011/10/24(月) 16:00:55.16ifじゃなくてwhileでした
int i=4;
while(i=4){
i = rand() % 7 + 1;
printf("%d\n",i);
};
0881デフォルトの名無しさん
2011/10/24(月) 16:02:38.67答えを貼るのは簡単だが・・・
まずいのが if 文
代入と比較を間違えているし
繰り返すなら if 文じゃなく while 文
そして rand() を実行する前に 4 かどうかはわからない
0882デフォルトの名無しさん
2011/10/24(月) 16:02:45.160883デフォルトの名無しさん
2011/10/24(月) 16:10:00.62>>882
ありがとうございます.
代入と比較の違いがわかってよかったです.
0884デフォルトの名無しさん
2011/10/24(月) 16:12:28.74全部関数で書くべき
0885デフォルトの名無しさん
2011/10/24(月) 16:17:20.044 以外で即終了? それとも表示などをしてから終了?
>>879
1,2,3,5,6,7 には 4 が含まれていないので、
4 以外で終了ということは「必ず終了」になる
揚げ足が取りたいのではない
問題を整理せよと言いたい
0886デフォルトの名無しさん
2011/10/24(月) 16:49:58.525秒後に処理するときに、増えたところから処理することは可能でしょうか。
例
A →5秒後 A
A A
B
B
こんな感じでBから処理できますか。
またどのようにしたらいいでしょうか。
お願いいたします。
0887デフォルトの名無しさん
2011/10/24(月) 16:50:32.80ゲットアシンクキーステート
0888デフォルトの名無しさん
2011/10/24(月) 16:53:12.810889デフォルトの名無しさん
2011/10/24(月) 16:54:03.40読解力が足りない。
ただ、1-6の乱数で、4以上が出たら1加えるのがいいとは思うけどね。
0890デフォルトの名無しさん
2011/10/24(月) 16:54:56.06ftell+fseek
0891デフォルトの名無しさん
2011/10/24(月) 17:05:09.51現に 877 が困っている様子から困っている原因を指摘したまで
終了条件を見落としている誰かさんの大きなお世話は謹んで辞退させていただく
0892デフォルトの名無しさん
2011/10/24(月) 17:16:59.57int i = rand() % (sizeof(Transed) / sizeof(* Transed));
printf("%d\n", Transed[i]);
0893デフォルトの名無しさん
2011/10/24(月) 17:24:48.00>>877 と >>879 が別人だと思ってるってこと?
0894デフォルトの名無しさん
2011/10/24(月) 17:55:09.73int main(){
char variable_a;
char *pointer_a;
variable_a = 'a';
pointer_a = &variable_a;
printf("変数variable_aの中身は %c ", variable_a);
printf("そのメモリ アドレスは %p \n", pointer_a);
return 0;
}
ってどういう処理の流れになるんですか?
0895デフォルトの名無しさん
2011/10/24(月) 18:07:40.93なるほど。
srand(time(NULL));
i=rand()%7+1;
だと毎回、i=7になるからな。
0897デフォルトの名無しさん
2011/10/24(月) 18:35:28.93どこがわからないのかを。
そのままじゃ書いてるとおりとしか
0898デフォルトの名無しさん
2011/10/24(月) 19:17:45.56例
AAAA→5秒後→AAAABBB(実際には改行が入り、縦型)
>890
ありがとうございます。
ftell,fseekを見たのですがいまいちわかりませんでした。
簡単なプログラム教えていただけませんか。
0899デフォルトの名無しさん
2011/10/24(月) 19:27:52.64ttp://www.amazon.co.jp/dp/4774146129/
0900デフォルトの名無しさん
2011/10/24(月) 19:41:04.86レビューはボロボロですけど‥‥‥。
0901デフォルトの名無しさん
2011/10/24(月) 21:00:41.610902デフォルトの名無しさん
2011/10/24(月) 21:39:51.54fseekを用いて、挑戦しているのですが、
http://simd.jugem.jp/?eid=57
このページを参考にし、5秒間で増えた分のバイト数を出そうとしています。
fssek(fp,0,SEEK_END);で最後の行まで読み込み、
sz=ftell(fp)でファイル位置を取得しているみたいなので、
5秒後の処理でfssek(fp,sz,SEEK_END);で増えた分のバイト数を取得できるかと
おもったのですが、うまくできませんでした。
ファイルポインタの位置を蓄えておくにはどのようにしたらいいのでしょうか。
0903デフォルトの名無しさん
2011/10/24(月) 21:42:15.85MOJI
EIGO
NIPPON
↓
EIGO
MOJI
NIPPON
0904デフォルトの名無しさん
2011/10/24(月) 21:43:19.47ttp://hibari.2ch.net/test/read.cgi/tech/1312201995/
0905デフォルトの名無しさん
2011/10/24(月) 21:45:42.63qsortでおk
0906デフォルトの名無しさん
2011/10/24(月) 22:03:23.37Cの本で言えば下記がおすすめ。
エキスパートCプログラミング
C言語 ポインタ完全制覇
プログラム全般なら以下あたり
プログラミング作法
珠玉のプログラミング
一番のおすすめは、C以外の言語をマスターすること。
なるべく毛色が違うものが良い。
Ruby, JavaScript, LISP,
0907デフォルトの名無しさん
2011/10/24(月) 22:07:51.27fssek(fp,sz,SEEK_END); でどうなると思っていたの?
0908デフォルトの名無しさん
2011/10/24(月) 22:14:04.52最初の処理の続きから5秒間で増えたデータの最後まで
読み込むのかなと思いました。
0909デフォルトの名無しさん
2011/10/24(月) 22:26:34.24fseek について調べた方がいい
fseek(fp, 0, SEEK_END);
でファイルポインタの指す先を (ファイルの終端+0) に移動させる
ftell(fp);
でファイルポインタの指す先を得る
この二つを組み合わせてファイルサイズを得ることが出来る
fseek(fp, sz, SEEK_END);
の場合 終端+sz に移動させようとすることになる
0910デフォルトの名無しさん
2011/10/24(月) 22:38:10.12ありがとうございます。
fseek(fp, sz, SEEK_CUR)とすると
現在位置からsz分、読み込むということでよろしいですか。
0911デフォルトの名無しさん
2011/10/24(月) 22:39:51.27読み込むのではなく、移動する
0912デフォルトの名無しさん
2011/10/24(月) 22:49:02.23タイマー{
fp = fopen( fname, "rb" );
if( fp == NULL ){
printf( "%s FILE IS ERROR\n", fname );
return -1;
}
if(i==0){
fseek( fp, 0, SEEK_END );
i++;
}
else{
fseek(fp,ftell(fp),SEEK_CUR);
}
sz = ftell( fp );
printf( "%s file size : %d bite\n", fname, sz );
fclose( fp );
}
という感じで、while分の中でfcloseし、fopenするからだめなのでしょうか。
0913デフォルトの名無しさん
2011/10/24(月) 22:56:21.62いつでも
fseek( fp, 0, SEEK_END );
でおk
書き込みアプリケーションが fflush するまではファイルサイズが変わらないのは仕様なのでしょうがない
0914デフォルトの名無しさん
2011/10/24(月) 23:14:02.10そうなんですか!
ということは、実際にはできてると考えて大丈夫でしょうか。
09151 ◆K4uC7X8rB6
2011/10/24(月) 23:16:17.410916デフォルトの名無しさん
2011/10/24(月) 23:16:19.034秒ごとにfflushしながら書き込むプログラムを作って確認すればいい
0917デフォルトの名無しさん
2011/10/25(火) 01:33:43.03どうしたらいいですか?
簡単なサンプルとかありますか?
0918デフォルトの名無しさん
2011/10/25(火) 03:18:57.20http://dev.mysql.com/doc/refman/5.1/ja/c.html
が出てきたけど、どうしたらいいですか
0919デフォルトの名無しさん
2011/10/25(火) 07:05:59.14if (file_stat.st_size < 0
|| (file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size))
でファイルサイズエラーと判別してるコードを読んだんだけど
file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size
一体これはどういう意味なの?
左辺はoff_t型で、右辺はそれをULに型キャストしてるから
ULより大きいサイズだとエラーになるという事かな。
0920デフォルトの名無しさん
2011/10/25(火) 08:13:25.65初心者はあまり使わないような気がするんだが
0921デフォルトの名無しさん
2011/10/25(火) 08:16:39.090922デフォルトの名無しさん
2011/10/25(火) 08:19:09.29実務じゃどうせOSのAPIじゃないと使いもんにならんから勉強しなくていいよ
0923デフォルトの名無しさん
2011/10/25(火) 08:34:47.50“まだ“勉強しなくていい
だったなすまん
0924デフォルトの名無しさん
2011/10/25(火) 08:35:43.95そうなのか
0925デフォルトの名無しさん
2011/10/25(火) 09:07:48.630926デフォルトの名無しさん
2011/10/25(火) 09:17:46.39メモリに大量のデータを記憶しきれない場合、ファイルに記憶できる
0927デフォルトの名無しさん
2011/10/25(火) 09:41:27.48そんなことってあるのか
0928デフォルトの名無しさん
2011/10/25(火) 10:28:51.20例えば、
あいうえお\0かきくけこ\0さしすせそ
みたいに。
どうもstrcpyかsprinfを使ってでお願いします。
私がやると\0を入れると自動的に書き込まれないようになってる気がしました
0929デフォルトの名無しさん
2011/10/25(火) 10:29:16.11失礼しました
0930デフォルトの名無しさん
2011/10/25(火) 10:52:44.01strcpyは\0までをコピーするから
0931712
2011/10/25(火) 11:30:39.48また、わかりやすいサイトでもいいので教えてください。
0932デフォルトの名無しさん
2011/10/25(火) 11:36:56.25誤爆か?
0933デフォルトの名無しさん
2011/10/25(火) 12:39:01.21char notAsciz[1000];
strcpy(notAsciz, "あいうえお");
char * second = strchr(notAsciz, '\0') + 1;
strcpy(second, "かきくけこ");
char * third = strchr(second, '\0') + 1;
strcpy(third, "さしすせそ");
int firstLen = sprintf(notAsciz, "あいうえお");
int secondLen = sprintf(notAsciz + firstLen + 1, "かきくけこ");
sprintf(notAsciz + firstLen + 1 + secondLen + 1, "さしすせそ");
0934デフォルトの名無しさん
2011/10/25(火) 13:04:38.36こういう意味?
int i;
char s[50], *p, *q[] = { "あいうえお", "かきくけこ", "さしすせそ" };
for(p = s, i = 0; i < sizeof q / sizeof q[0]; i++)
p += sprintf(p, "%s", q[i]) + 1;
0935デフォルトの名無しさん
2011/10/25(火) 14:02:41.60プログラムを教えてください。
0936デフォルトの名無しさん
2011/10/25(火) 14:19:35.73“あいうえお”の後ろに\0 をつければ?
0937デフォルトの名無しさん
2011/10/25(火) 14:22:01.60mysql_query(& mysql, "insert command string");
こんな要領。
0938デフォルトの名無しさん
2011/10/25(火) 14:22:16.78ばーか。
0939デフォルトの名無しさん
2011/10/25(火) 14:26:58.160940デフォルトの名無しさん
2011/10/25(火) 15:17:57.94#include <stdio.h>
#include <string.h>
int main()
{
char text[100] = {0};
char *data[3] = { "あいうえお", "かきくけこ", "さしすせそ" };
char *p;
int i;
p = text;
for (i = 0; i < 3; i++) {
sprintf(p, "%s", data[i]);
p += strlen(data[i]) + 1;
}
p = text;
while (1) {
if (*p) printf("%c", *p++);
else {
printf("\\0");
if (!*++p) break;
}
}
printf("\n");
return 0;
}
0941デフォルトの名無しさん
2011/10/25(火) 15:34:13.59>>918
0942デフォルトの名無しさん
2011/10/25(火) 16:49:15.59それをCR+LF(\r\n)に変更することはできますか?
0943デフォルトの名無しさん
2011/10/25(火) 16:50:35.70もちろん!
0944デフォルトの名無しさん
2011/10/25(火) 16:53:31.28どうしたらいいですか?
0945デフォルトの名無しさん
2011/10/25(火) 17:16:18.84printfのような可変長引数の関数をluaにバインディングするCソースを書きなさい。
0946デフォルトの名無しさん
2011/10/25(火) 17:17:32.93strcatで\r\nをつけたらできました
ありがとうございました。
0947デフォルトの名無しさん
2011/10/25(火) 17:51:09.78お前が欲しいだけだろ。
宿題スレにでも池。
0948デフォルトの名無しさん
2011/10/25(火) 18:16:52.54/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < ちょーっと難しい問題出すとすーぐこれだ
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
0949デフォルトの名無しさん
2011/10/25(火) 18:19:17.47あなたにはとっては難しいの?
0950デフォルトの名無しさん
2011/10/25(火) 18:59:47.01簡単だろ?答えてみろよw
0951デフォルトの名無しさん
2011/10/25(火) 19:07:26.60ありがとうございます。
最初は書き込む予定でしたが、ファイルから読み込み、
MySQLに入れることにしました。
C言語で、やるにはどのようにしたらよいのでしょうか。
何回も申し訳ありません。
0952デフォルトの名無しさん
2011/10/25(火) 19:30:12.40入門だからな
0953デフォルトの名無しさん
2011/10/25(火) 19:34:25.44SQLite
0954デフォルトの名無しさん
2011/10/25(火) 19:59:50.750955デフォルトの名無しさん
2011/10/25(火) 20:12:11.720956デフォルトの名無しさん
2011/10/25(火) 20:12:44.10参考になるサイトありますか?
0957デフォルトの名無しさん
2011/10/25(火) 20:17:03.460958デフォルトの名無しさん
2011/10/25(火) 21:52:13.11のプログラムがあるときに、
""の中がABSCDとAAAAだけになってしまい、
test.txtが認識されません。
どうしたらいいですか?
0959デフォルトの名無しさん
2011/10/25(火) 21:57:20.78ここをちょっと読んで見て
http://codezine.jp/article/detail/374
0960デフォルトの名無しさん
2011/10/25(火) 22:12:41.47簡単な話にしかレスが付かないの法則? w
>file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size
>一体これはどういう意味なの?
>
>左辺はoff_t型で、右辺はそれをULに型キャストしてるから
>ULより大きいサイズだとエラーになるという事かな。
少し違って、
off_t が UL より大きいサイズのとき左辺は off_t 型で
st_size が負の値のとき != が成り立つ(エラーになる)、じゃないかな。
off_t は符号付き整数、というのは常に正しいんだっけ? 忘れたw
0961デフォルトの名無しさん
2011/10/25(火) 22:54:32.36そのタイミングでシェルを動かすことは可能ですか?
0962デフォルトの名無しさん
2011/10/25(火) 22:56:34.93というか、常に動いているが。
0963デフォルトの名無しさん
2011/10/25(火) 22:57:30.39負数のチェックは上の st_size < 0 でしてるんでは?
longでは負数となる領域になってないかチェックしてるんだと思う。
0964デフォルトの名無しさん
2011/10/26(水) 00:19:34.43正解は下記のようですが、if(c !='\n')
を省略すると2行にわたって表示されてしまいます。
なぜこの文が必要なのでしょうか。
#include <stdio.h>
int main(void)
{
int c;
printf("文字を入力してください!\n");
c=getchar();
while (c !=EOF){
if(c !='\n')
printf("入力文字のJISコードは、0X%2xです。\n",c);
c=getchar();
}
return 0;
}
0965デフォルトの名無しさん
2011/10/26(水) 00:31:41.380966デフォルトの名無しさん
2011/10/26(水) 00:37:03.780967デフォルトの名無しさん
2011/10/26(水) 00:43:21.70改行も文字として扱われるから
0968デフォルトの名無しさん
2011/10/26(水) 00:47:44.232行目のASCIIコード(JISコード)は何と出てる?
それをCではどう表現する?
'\n' ではないのかね?
0969デフォルトの名無しさん
2011/10/26(水) 03:48:24.08入力された文字は一旦バッファにためられ改行が入力された時点で一気にバッファから出力されるから
getchar()でそれを一文字ずつ拾ってくと最後に改行コードを拾うことになると
0970デフォルトの名無しさん
2011/10/26(水) 04:41:04.08実際にやってみると一文字キー入力しただけは何も起きずその後にEnterキーを押してはじめて動く
そこで1文字入力するってのはキー押してからEnter押すことなんだと勘違い
0971デフォルトの名無しさん
2011/10/26(水) 07:17:00.150972デフォルトの名無しさん
2011/10/26(水) 07:17:50.46C言語なら俺に聞け(入門編)Part 91
http://hibari.2ch.net/test/read.cgi/tech/1319581056/
0973デフォルトの名無しさん
2011/10/26(水) 07:28:35.240974デフォルトの名無しさん
2011/10/26(水) 08:29:08.52off_tが64ビットサイズで、unsigned long intが32ビットサイズの場合なんかを想定してんのかな。
キャストで丸められて初めて不等式が成り立つ。
0975デフォルトの名無しさん
2011/10/26(水) 10:35:25.115が出たら
その入力した数字全ての平均を出すプログラムの作り方を教えてください
0976デフォルトの名無しさん
2011/10/26(水) 10:45:28.18カウンター、合計値=0
5以外の入力->カウンターを+1、合計に入力値を足す。
5を入力->(double)合計値/カウンター
0977デフォルトの名無しさん
2011/10/26(水) 10:45:29.60乙
0978デフォルトの名無しさん
2011/10/26(水) 10:54:16.24#include <stdio.h>
int main(void){
int counter = 0, goukei = 0, n;
while (1) {
printf("in = ");
scanf("%d", &n);
if (n == 5)
break;
counter++;
goukei += n;
}
if (counter > 0)
printf("%g¥n", (double) goukei / counter);
return 0;
}
0979デフォルトの名無しさん
2011/10/26(水) 11:06:04.665kという計算式で
kに数字を入力して
100になる時のkを求めるプログラムはどうやって作るのでしょうか疑問符
0980デフォルトの名無しさん
2011/10/26(水) 11:18:36.75}
0981デフォルトの名無しさん
2011/10/26(水) 16:00:12.56結合する関数があれば教えてください
0982デフォルトの名無しさん
2011/10/26(水) 16:01:08.560983デフォルトの名無しさん
2011/10/26(水) 16:16:27.58なにかいい方法知らないですか?
a[10]={0,1,2,3}とb[]={4,5}結合させたいとすると,
a[10]={0,1,2,3,b[0],b[1]}みたいな感じでするしかないのでしょうか?
0984デフォルトの名無しさん
2011/10/26(水) 16:18:28.010985デフォルトの名無しさん
2011/10/26(水) 16:23:51.08そういう関数作れば?
0986デフォルトの名無しさん
2011/10/26(水) 16:24:48.08>>981
ないので必要なら作る。
0987デフォルトの名無しさん
2011/10/26(水) 16:50:09.63int intcat(int * dest, int destCnt, int const * src, int srcCnt)
{
for (int ic = 0; ic < srcCnt; ++ic) {
dest[destCnt++] = src[ic];
}
return destCnt;
}
// Usage: destCnt = intcat(dest, destCnt, src, srcCnt);
0988デフォルトの名無しさん
2011/10/26(水) 17:02:34.340989デフォルトの名無しさん
2011/10/26(水) 17:10:07.58void array_cat(void * dest, int destCnt, void const * src, int srcCnt, size_t size)
{
memcpy(dest + size * destCnt, src, size * srcCnt);
}
int main()
{
int ia[10] = {1, 2, 3};
int ib[] = {11, 12};
array_cat(ia, 3, ib, sizeof(ib)/sizeof(*ib), sizeof(*ia));
for (i = 0; i < 10; i++){
printf("%d: %d\n", i, ca[i]);
}
return 0;
}
>>988
ね。どうするも伝えられてないので。
0990デフォルトの名無しさん
2011/10/26(水) 17:14:02.38値域を厳密に仕様化できないとね。
たとえば、0-32767しか扱わなくていいなら-1をSentinelにできるけど。
それを考え出すと、サイズを別に管理したくなる。
尤も、それならそれで>987みたいに別に持たずに構造体にした方が判り易い気がするが。
0991デフォルトの名無しさん
2011/10/26(水) 17:49:25.720992デフォルトの名無しさん
2011/10/26(水) 18:03:55.14ユーザ関数を定義して作成しなさい.
その際の区分間距離も任意に入力できるようにすること。
実行例
積分範囲を入力せよ
x0 = 0
xl = 10
区分間距離を入力せよ
length = 1
ans = 9.949055
積分範囲を入力せよ
x0 = 0
xl = 100
区分間距離を入力せよ
length = 5
ans = 49.588107
お願いします。
0993デフォルトの名無しさん
2011/10/26(水) 18:07:35.160994デフォルトの名無しさん
2011/10/26(水) 18:15:44.110995デフォルトの名無しさん
2011/10/26(水) 18:16:01.71入門スレだから仕方ないといえばそれまでだが…
0996デフォルトの名無しさん
2011/10/26(水) 18:39:06.92一般人にはわからんぞ
0997デフォルトの名無しさん
2011/10/26(水) 18:40:36.76文字列がバッファされているのがわかりませんでした。
質問の仕方が悪くすいませんでした。
>969 >970 この説明ではっきりとわかりました。
書き込みをしてくれた皆様ありがとうございました。m(_ _)m
0998デフォルトの名無しさん
2011/10/26(水) 18:48:26.060999デフォルトの名無しさん
2011/10/26(水) 19:18:39.431000デフォルトの名無しさん
2011/10/26(水) 19:19:18.90ガッ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。