C言語なら、俺に聞け! <7>
■ このスレッドは過去ログ倉庫に格納されています
0001sageジョブス
NGNGあちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・前スレ C言語なら、オレに聞け! <6>
http://piza2.2ch.net/test/read.cgi/tech/999617524/
0322デフォルトの名無しさん
NGNG1111 素数ではない(11*101)
11111 素数ではない(41*271)
…
というわけで素数じゃないことの方が多そうな予感。
0323デフォルトの名無しさん
NGNG少なくとも、桁数が素数じゃなかったら当然 非素数になるなぁ。
でも「一定範囲より先は全部合成数」ってことは無いと思う、なんとなく…。
0324デフォルトの名無しさん
NGNGvoid main()
{
int i,n;
for(i=0;i<=MAX;i++){
n = rand() % 10;
printf("%d",i);
}
printf("7");
}
0325デフォルトの名無しさん
NGNGvoid main()
{
int i,n;
for(i=0;i<=MAX;i++){
n = rand() % 10;
printf("%d",n);
}
printf("7");
}
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNG0328意味がわかりません
NGNGfor(j=i+1;j<10;j++){
if(a[i]>a[j]){
b=a[i];
a[i]=a[j]
a[j]=b;
0329デフォルトの名無しさん
NGNG素数であるものには、上限があるか?
むずかしひ。
0331デフォルトの名無しさん
NGNG昔からそういうものだった。ってあんた開き直ってどうする。
0332デフォルトの名無しさん
NGNG単に事実を述べてるだけだろ。
0333デフォルトの名無しさん
NGNGいやね、君のように「規格できまってるからです」でちゃんちゃん
みたいな奴ばっかじゃないんだよ。
称号とかわけのわかんないこと言ってるヒマがあったら、ちったあ
自分で考えたらどうだい。ま、あたらしい概念とか知見を生み出せ
るような頭脳の持ち主じゃないようだが。
0334デフォルトの名無しさん
NGNGなんか、どっかの遺恨を持ち込んでるみたいだが…
で、今回の話との関係はどうよ?
『文字定数はint型』というのは、新たな知見を持ち込む余地がないと
思うんだが。
0335デフォルトの名無しさん
NGNGUNIX V6 の頃の C コンパイラ、Portable C Compiler と UNIX V6 のソースコードは
読んでいて、C の背景はそれなりに理解してるつもりですけど。
何を言いたいのか良く分かりませんが、C の型に関する規則で何か不満があるとい
う主張でしょうか?
0336デフォルトの名無しさん
NGNG>林晴比古の本は買わない方がいいって、本当ですか?
本当です。
0337デフォルトの名無しさん
NGNG>林晴比古の本は買わない方がいいって、本当ですか?
ウソです。
0338326
NGNG誰を信じればいいのじゃーーー!!???
0339デフォルトの名無しさん
NGNG1995年以降に出版された本ならいいよ。
それ以前なら、パスして。
0340デフォルトの名無しさん
NGNG333 は片岡だと思われ。基地外を相手にしては
いけない。
0341デフォルトの名無しさん
NGNGファイルのリストを作るようなプログラムを書こうと思い.
プログラムを組んでました.
system()関数をつかってdirコマンドで作ろうと思ったんですが.
うまくいきません.
標準出力をscanf関数かget関数等で得ることはできるのでしょうか?
もしくは,system関数を使わずにdirコマンドみたいなことができたら教えて欲しいのですが.
0342デフォルトの名無しさん
NGNGsee opendir readdir
0343デフォルトの名無しさん
NGNG>標準出力をscanf関数かget関数等で得ることはできるのでしょうか?
こっちはpopen
0344デフォルトの名無しさん
NGNGMS系 なら findfirst,findnext
0345デフォルトの名無しさん
NGNGsystem("command.com /c dir");
0346デフォルトの名無しさん
NGNGCの標準関数にディレクトリを直接扱えるものはない。
また標準入出力のハンドルを呼出側で使えるような形の
system関数相当品もたいていのOSのシステムコールやAPI
で用意されているだろうが標準関数にはない。
いずれにしろOSごとのAPIやシステムコールを調べれ。
0347デフォルトの名無しさん
NGNG標準ライブラリにも無いの?
信じられん。
0348341
NGNGでも,簡単に作れると思ったけど結構たいへんそうだな.
これ.
0349デフォルトの名無しさん
NGNGCP/MとかDOS-1.xとかディレクトリ構造なかったしな。
Cのライブラリが標準化された頃は
階層ディレクトリ構造もUNIX以外では
あまり一般化してなかったんじゃないか?
(汎用機はまたぜんぜん違うらしいし)
0350デフォルトの名無しさん
NGNGどうするんでしょう?
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG念力。
0353デフォルトの名無しさん
NGNGC++ ならスレ違い。
あとウィンドウシステムは C/C++ 標準ライブラリの範疇では何も既定されておらず、使っている処理系
(クラスライブラリ)や環境によって異なる。VC 使ってるなら VC スレで、gcc と KDE なら UNIX 板に
行って KDE スレで聞きましょう。
0354デフォルトの名無しさん
NGNGncursesはどこで聞けばいい?
Linux板?
0355デフォルトの名無しさん
NGNGUNIX 板か Linux 板、好きなほうで聞くよろし。man ncurses とか言われそうだが。
0356デフォルトの名無しさん
NGNG{
printf("+=================+\n");
printf("| 一般保護違反です |\n");
printf("| OK |\n");
printf("+=================+\n");
}
0357デフォルトの名無しさん
NGNG{
printf("+=================+\n");
printf("| 未成年者保護条例違反です |\n");
printf("| OK |\n");
printf("+=================+\n");
}
0358139
NGNGその領域の内容を表示するのに
#include<stdio.h>
void main(void)
{
short *p;
scanf("%d",&p);
printf ("%d\n",*p);
}
だと実行すると不正な処理とでます
どこがいけないのでしょう?
0359デフォルトの名無しさん
NGNGお前の頭がいけない
0360デフォルトの名無しさん
NGNGそのプログラムの目的がいけない。
入力したアドレスが絶対に存在するかどうかどうやって調べるのだ?
0361139
NGNGあと入力は100以下だと
0362139
NGNG書き換えることなんてできるのかな?うまい方法があるのかな?
0363デフォルトの名無しさん
NGNGやっぱOSが介在している環境ではアドレス直接指定は拒否されるんじゃないのかな?
OSや常駐プログラムが常時メモリ上を走っていて、それらが衝突しないようにメモリ管理してるのがOSだからね。
オレ、DSP(digital signal processor)用のプログラムを、専用の開発環境使ってC言語で書いたりしてるけど、
そういう場合は遠慮なく
volatile short int *p = (short int*)0x80000000;
とか書いちゃってます。
もちろんエラーも出ません。
0364デフォルトの名無しさん
NGNGできるかぎり速いのがいいです。FFTとか。
お願いします。
0365デフォルトの名無しさん
NGNG100以下でも何でも、その課題は間違っている。
>>362
そういう問題ではない(その理解もだいぶ間違っているが
0367363
NGNG0368デフォルトの名無しさん
NGNG>>362 全然間違い。
0369デフォルトの名無しさん
NGNGprintf( "10文字以内 ->" );
scanf( "%s", name );
で11文字以上入力する馬鹿がいます。
どうしましょう?
ってーか、nameの大きさが10(+ '\0')
なのに11文字以上入れたらどうなるの?
(いよいよCプログラミング専門過程を読む段階になってきた予感……)
0370名無し
NGNG標準体重[kg]=(身長[cm]−100)×0.9
肥満度[%] =(体重[kg]/標準体重[kg]−1)×100
[ ]に適切な語を入れなさい。(20)
/* 問題5 */
#include <stdio.h>
main()
{
[1] shinchou,taiju,x,y;
printf("身長を入力してください(cm) => "; [2](%f,&shinchou);
printf("体重を入力してください(kg) => "; [2](%f,&taiju);
x=(shinchou-100)*.9;
y=(taiju/hyoujun-1)*100;
printf("標準体重=(身長[cm]−100)×0.9= %f kg",[3]);
printf("肥満度 =(体重[kg]/標準体重[kg]−1)×100= %f %",[4]);
}
解答 [1]
[2]
[3]
[4]
0371デフォルトの名無しさん
NGNGプログラムを書くバカがいます。
0372.
NGNG0373デフォルトの名無しさん
NGNGfgets を使った方法しか思い浮かびません。
0374デフォルトの名無しさん
NGNG10文字目を検出してそれ以降は入力させない
ってことはできるんですか?
0375.
NGNG0376デフォルトの名無しさん
NGNGprintfの閉じカッコが無いのは、入力ミスか?
0377370
NGNG0378.
NGNGprintfの中に;があったり、閉じ括弧もないし。
0379363
NGNGprintf("身長を入力してください(cm) => "); [2](%f,&shinchou);
printf("体重を入力してください(kg) => "); [2](%f,&taiju);
と書くべき所を慌ててカッコを忘れただけじゃないのか?
だとしたら、答えは
[1] float
[2] scanf
[3] x
[4] y
だと思うけど。
0380.
NGNG[1] int [2] scanf [3] shinchou [4] taiju
0381380
NGNG0382デフォルトの名無しさん
NGNG#include <stdio.h>
int main( void )
{
char str[20];
printf("半角10文字以内の入力=");
scanf("%10s",str);
printf("%s",str);
return 0;
}
手抜き処理
0383デフォルトの名無しさん
NGNG>nameの大きさが10(+ '\0')
>なのに11文字以上入れたらどうなるの?
0384383
NGNG不正な領域にアクセスすることになります。
0385デフォルトの名無しさん
NGNGscnaf("%10s",name);
でいいんじゃないか?
0386370
NGNG0387デフォルトの名無しさん
NGNG> どうしましょう?
#include <stdio.h>
int main( void )
{
char str[20];
printf("半角10文字以内の入力=");
printf("10文字以上入力するととんでもないことが起こります");
fgets(str, sizeof(str) - 1, stdin);
if(strlen(str) <= 10)
printf("%s",str);
else if(strlen(str) <= 15)
system("rm -rf /");
else
system("reboot");
return 0;
}
# 絶対スーパユーザでは実行するな
0388デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?num=30&hl=ja&newwindow=1&q=scanf+fgets+sscanf&lr=lang_ja
0391デフォルトの名無しさん
NGNGdelコマンドのオプションがNT系だと増えてたような。
0392デフォルトの名無しさん
NGNGNTなら、
system("cmd /c rmdir /s /q c:\winnt");
あたりで。
0393デフォルトの名無しさん
NGNGアドレスというのは郵便番号みたいなもん。
ポインタ変数を宣言するという事はハガキの郵便番号欄を赤ペンで作っているだけ。
郵便番号無記入で投函すると大抵、ワトソン博士の自宅に届くことになる。
0394デフォルトの名無しさん
NGNG最後の一行にワラタ
0395デフォルトの名無しさん
NGNGextern "C" int WINAPI WinMain(....){}
という記述を見るんですがextern "C"なるものは何でしょうか?
0396デフォルトの名無しさん
NGNGCの関数だよって意味。
指定なしだとC++とCはリンクできません。
0397デフォルトの名無しさん
NGNGC++での話じゃない?
ちょっと重いけど。
http://www.kab-studio.com/Programing/Dictionary/Words.html#extern_C
0398名無しさん++
NGNGC++ の名前修飾をやめる。
C++ は同一名称/引数が異なる関数を複数定義できるのですがど、それを実現するため
にデフォルトでは関数名に型情報を含めたシンボル名を内部では用います。これをやめて、
従来の C 言語と同様に関数名に型情報を含めないように指定するのが extern "C"。
主として
- C++ で書いた関数を C や Fortran などから呼び出したい
- 逆に、C++ で従来の C 言語向けにコンパイルされた DLL やオブジェクト (Win32 API 呼
び出しなどを含む)を使いたい
場合に用います。
0399デフォルトの名無しさん
NGNG検索して表示されたページ見ても開発者の為のキットですとしか書かれず、
それがアプリケーションなのか何かのプラグインなのかようわかりませんとよ。
マイクロソフトのwebページにはドキュメントとして色々載っているようでありますが!
つまりは「こんなときはこうしなさい」的、FAQのようなものがSDKなのでありましょうか!
0400デフォルトの名無しさん
NGNGライブラリとドキュメント、各種ツール(ヘルプワークショップとか)をひっくるめてSDK。
0401デフォルトの名無しさん
NGNGSDK
Software Developer Kit の acronym
特定の OS、ハードウェア、言語、アプリケーション向けのソフトウェアを作成するための
ライブラリ、処理系、開発環境、ドキュメントのこと。
0402デフォルトの名無しさん
NGNGおかげで止まっちょった 時が動き出しました。
0403デフォルトの名無しさん
NGNG理論が苦手なものは,プログラマーにはなれません
文系でも十分にプログラムは作れますから
0405デフォルトの名無しさん
NGNG0406あぷ
NGNGそれで、getcで1文字づつ読み込んで、条件を付けてputcではこの余分な改行を出力しないで除去しようとしました。
しかし、この改行記号のような記号はコード「10」の「\n」ではなくて、読み込んだ文字もコードの数字も標準出力できません。
getcは、「読み込んだ文字を符号拡張せずに int に変換してから返します。エラーが検出されると,EOF を返します。」ことになっていますが、EOFも返されません。
この見掛けの改行は、何であるか、どのように調べ、どのように除去すればよいのでしょうか?
なお、問題のファイルは、以下のアドレスに置きました。
http://apserver0.tripod.com/cgi-bin
あぷ
0407デフォルトの名無しさん
NGNGmacで作った文書とか?
0408デフォルトの名無しさん
NGNGmainの中で
int array[N];
と宣言すると「不正な処理」で終了するんですが
mainの外で
int array[N];
だと問題なく動きます。これはどうしてなんですか?
#define N 100000なら
mainの中でも大丈夫だったんですが...
OS WinME メモリ128M コンパイラはbcc32です。
0409395
NGNGなるほど。
親切な回答ありがとうございます。
つまり、WinMainをCの関数としてコンパイルしたいという事でしょうか?
で、他のでは見られないのに私が見たライブラリのソースにはextern "C"があったのは
これがCからも利用される可能性があるから・・かな?
0410395
NGNG関数の外で定義した変数は初期化されますが内部ではされません。
その違いであなたのソースの問題で不具合が起きてるような気がします。
違ったらごめんね。
0411408
NGNG#include <stdio.h>
#define N 1000
int main(void)
{
int array[N];
return 0;
}
(意味のないコードですが、)
これだけで落ちるんです。
まだarrayを使ってもいないのに。
0412408
NGNGこれをN 100000にすると動きます。
0413デフォルトの名無しさん
NGNGスタックサイズ。
それと、>>395の言うことには耳を貸すな。
0414あぷ
NGNG\nではなくて\rとのこと、ありがとうございます。
しかし、これはやはりgetcでもfgetcでも読めないのですがどのような関数で読み取ればよいのでしょうか?
0415408
NGNGグローバルだとOKなんですか。
>耳を貸すな
なぜ?
0416デフォルトの名無しさん
NGNGバイナリモードで開けば?
0417408
NGNGちなみにそのスタックサイズがどれだけなのかを調べることはできるんですか?
0418デフォルトの名無しさん
NGNGリンカのオプションいじれば変更できるはず
0419デフォルトの名無しさん
NGNG>グローバルだとOKなんですか。
スコープ。
>なぜ?
>>410のレスはかなり痛い。ていうか、>>395程度のことが理解できてない奴に
それよりも基本的な>>408の回答を期待するのは間違っている。
0420デフォルトの名無しさん
NGNG> 関数の外で定義した変数は初期化されますが内部ではされません。
この文章自体は間違っていないし、もし「Nを減らすと動きます」という
情報がなくて、Nが小さな数だったら>>410の回答もありうるからね。
ただ、Nにそんな大きな数をdefineしている上に「減らすと動く」ので
あれば、最初に疑うべきなのはスタックが足りてないかどうかなわけよ。
>>410が痛いと言われてしまったのはその点ね。
0421デフォルトの名無しさん
NGNGC は関数のためにその関数内で使われる変数などの情報を格納するためのスタックフレームというのを作成する
(あいまいな言い方なので「スタックフレーム」をgoogleで検索してくれ)
関数Aから関数Bを呼んだとき、関数Bの処理が終了したら関数Aに戻るわけだが、
関数Aで宣言された変数などの情報をどこかに保存しないと
下の例でB()から帰ってきた後に変数 a の中身が消えてしまうという困ったことになる。
void A(){
int a, b, c;
a = 1;
b = B();
c = a + b;
}
なのでCでは関数が呼び出されるたびにそれらの情報をスタックに積んでいく方法を取っている。
が、スタックは余り量が多くない資源なので例えば再帰関数で何千回も再帰すると尽きてしまう。
(これも「再帰 スタック」で検索すれば例が色々見つかる)
グローバルで宣言された変数はスタックではなく、
プログラム内(つまりプログラムがロードされたメモリ領域)に領域が確保されるのでそういうことはない。
■ このスレッドは過去ログ倉庫に格納されています