復活
HPに努力値振り込むのと防御と特防に均等に努力値振り込むのは
どっちが防御効果高いですか?
tes
>>11 俺もそれがすごい気になってる
質問スレにHP 2:防御 1 :特防 1で振り込むのが一番硬くなるって書いてあった
どっかのスレにHP、防御、特防の努力値配分を出してくれるツールを作った香具師がいたな
sss
=6
おまえのチェックミスを棚に上げんな
禿同。はアフォ。早く削除依頼しなさい。
=10
自作自演でした。テヘッ
自作自演でした。
見ればわかります
void func(char **);
main()
{
char a[100][100];
func(a);
return 0;
}
void func(char **a)
{
}
↑のようにやったらプログラムが暴走したんですが
対処法はいかに?
void func(char a[][100])
PHP
PHPやったことないんですが・・ほんとに応用できるのですか?
int a = 4.3;
abs(3.5);
とかのミスってlintで検出できますか?
まあ、当然のことですけど
C++
C言語の感覚で書かれたC++はクソコード
誰もそんなことは聞いていない。
C++はオブジェクト指向なのになんでCが応用できるのかと小一時間(略
キター
逆にCに応用できる言語は何ですか?
awk
C++
C++言語の感覚で書かれたCはクソコード
誰もそんなことは聞いていない。
結局、CとC++は、繰り返しや比較などが同じなだけであって
設計方法は全然違うわけだな。
ありがとう。でもそこに書いてあることをほとんど
やってくれなかった。
質問!!
C言語ってDVDなどにあるプロテクトもC言語に一種ですか?
教えてください
Cでsnprintfを自作することになりました。
参考になる資料とかありましたら教えてください。
フリーで使えるソースが何処かに落ちていると良いのですが。
VC++ならCRT\SRCフォルダに。
レスどうもです。
VC++見てみたのですが、うーん難しい事してるんですね。
FILEポインタの中身なんて、いじった事無いです。
これprintf系で汎用的に使う為にこんな感じで実装してるのかなー?
そのまま使いたいところだけど、多分ライセンスで引っかかりそう・・・
マルチいくない!
つーか、なんで...
> Cでsnprintfを自作することになりました。
なんてことやってんの ?
win上でgccを使っているのですが、
*.libのファイルを*.oなんかに変換できますか?
別に *.lib のままでいいのでは?
何か不都合でもあるのん?
お答えありがとうございます。
ファイルフォーマットが認識されない、といわれたので。
単に対応していないだけなのでしょうね。
まあ、至急必要なものでもないですし。。。
あ、すまん。
*.a じゃなくて *.lib か。
なるほど。
分離ってできたっけかな...。
win 上の gcc とは何者で、その *.lib はどっから持ってきたものかを書けよ。
これからC言語を始めてみようという初心者です。
LSI CってのをDLしてみたんですが、使い方がよく分かりません。
参考書買ってみたんですが動かし方については詳しく載ってませんでした。
どなたか詳しく教えていただけませんか?
lsc ファイル名
以上
ごめん、うそ>46
lcc ファイル名
lcc.exeにちゃんとパスを通すこと
あと、_lccも自分の環境に合わせて編集すること
あとは、read.me読めば書いてるよ
えっと・・・
まだよくわからないんですが、
MS-DOSを開きますよね。
lcc filename
しますよね。
次は何をすれば動きますか?
エラーメッセージが出なければ、もう何もしなくていい。
やりかたは分かったんですが、
コマンドまたはファイル名が正しくありません
とでます。
どうすればいいですか?
しつこくてすいません。。。
MS-DOSのコマンドラインから
SET PATH=%PATH%***
と入力して
lcc filename
としてみてください。***の部分はパス名(C:\...\LCC\BIN;)です。
ちなみにBINはBINARY(二進)の略で実行可能ファイルが入ったフォルダの
名前として常識です。わかりましたか?
51ですが追伸です。参考になればいいのですが、_lccファイルです。
# LSI C-86 compiler's configuration file
-DLSI_C
-XC:\LSIC330C\BIN -LC:\LSIC330C\LIB -IC:\LSIC330C\INCLUDE -T -O
-acdos.obj $LSICOPTS
?Command line argument will be inserted here
-lknjlib -ldoslib -v
うぜぇ
Cそのものとは関係ねえ事書くな
∧ ∧___ ダッコ♪
/(*゚ー゚) /\
/| ̄∪∪ ̄|\/
| |/
 ̄ ̄ ̄ ̄
大人しくしていなさい。
セグメンテーション違反ですってなんですか?
変なとこに書き込んだりしたときに良く出る。
どこが間違ってるのかさっぱりわからんです...
変なとこをかいたりしたときに良く出る。
セグメンテーション違反は一番良く見るバグだと思うので、
頑張って間違った箇所を探しませう。
・配列の添え字が変な位置を指しているかどうか
・ポインタの扱いが間違っているかどうか
の2箇所を重点的に調べましょう。
それはコアダンプ。
ありがとうございます。
がんばって探してみます。
卒論間に合うか不安。。。
・・・デバッガ使えよ・・・
!?そ..それはいったい....?
emacsとかについてるやつですか?
gdbとか
emacs見てみたらgdbなるものを発見いたしました!
しかし英語表記のため使いかたがいまいちわからぬ。
調べてみます。。。
memsetでdouble型の配列の値を全てdouble x;
にすることはできますか?
できない。
デバッガという言葉も知らない奴が卒論までにgdbを使えるわけがない。
デバッガgdbの簡単な使い方。
まずプログラム作成 hoge.c
#include <stdio.h>
main(){
int *a = NULL;
*a = 0;
}
コンパイル時に -g オプションをつける
gcc -g -o hoge hoge.c
実行プログラムをgdbの引数に指定
gdb hoge
gdbのプロンプトが出たらrunを実行
(gdb) run
フォールトエラーなどが出たら、理由と場所を教えてくれる。
Program received signal SIGSEGV, Segmentation fault.
0x8048468 in main () at hoge.c:5
5 *a = 0;
終了するときはquit
(gdb) quit
初歩的な質問で申し訳ない。
ファイルからコンソール画面に一行一行読み込んで表示するという、
超基本的なプログラムを書いてみました。
そこで質問なのですが、今のままでは、改行は何も表示されない空白で表されますよね。
この改行部分に「----ここは改行です-----」といったメッセージを表示したいのですが、
どうすればいんでしょう?とりあえず自分が書いたものを↓に。
#include <stdio.h>
void main(){
FILE *fp;
char a[20];
fp = fopen("text.txt" ,"r");
do{
if (fgets(a ,20 ,fp) == NULL){
printf("//////終わりです//////\n" );
break;
}else{
if (a == ""){ ★★★問題の箇所です
printf("-----ここは改行です-----");
printf("%s\n" ,a);
}else
printf("%s\n" ,a);
}
}while(1);
fclose(fp);
return;
}
if(a=="") を if(*a=='\0') に変更すればいいのでは?
if (strlen(a))
a[strlen(a) - 1] = '\0';
ってのを付け加えた方がいいかも。
if (strcmp(a, "\n") == 0)
にすればええんでない?
まぁ簡単に
if (a[0] == '\n')
でもいいか。
あとは
・改行の場合はわざわざ a を表示しようとする必要は無い
・do-while じゃなくて、while 内で fgets を使ったので構わない。
・fp が NULL かどうかのチェックは入れる癖をつけておくが吉。
・最後の行にのみ改行が無い場合があることを考慮するべし。
ってとこでしょうか。
#include <stdio.h>
int main()
{
FILE *fp = fopen("text.txt", "r");
char a[20];
while (fgets(a, 20, fp) != NULL) {
if (a[0]=='\n')
printf("-----ここは改行です-----\n");
else
printf(a);
}
printf("//////終わりです//////\n" );
fclose(fp);
return 0;
}
printf(a); と printf("%s", a); は違う。
ごめんうっかりしてた。
printf(a)はprintf("%s", a)に読み替えて。
あなたのコードを見て思ったことを書きます。
だいたいさんが言ってくれてるけど。
・fgetsは改行も読み込むのでprintf("%s\n",a)でなくprintf("%s",a)。
・0回以上の繰り返しのときは基本的に, do-whileでなくwhileを使う。
・文字列の比較はstrcmpを使う。a==""としても文字列の比較ではなく
文字列のアドレスの比較が行われるだけで無意味。
あとのコードでも19文字ジャストの行を読み込むと誤動作します。
19文字ジャストの行を読むと, 次回のfgetsで改行文字だけを読み込む
ので, 文末の改行と空行との区別がつかなくなるためです。
a[]の配列を十分大きくとることで簡単に解決します。
> printf("%s", a)
漏れは fputs(a, stdout) のが好きだ。
72です!皆さんのご指摘でうまく動くようになりました。
質問の箇所だけではなく、他の様々な部分まで指摘してもらって、感謝してます。
判定文ごとwhileの中に入れろとか、さんの19文字ジャストでおかしくなる・・・とかの話は、
読みながらハタと手を打ってしまいました。
速度面で有利とか、エラーでにくいとか、そういったことが何かあるんですかね?
単に好みの問題でしょうか。
速度は大抵fputsのほうが速いだろう。
必ずじゃないけど。
教えてください!
return (
x1 >= x2+width2 || x1+width1 <= x2 ||
y1 >= y2+height2 || y1+height1 <= y2
) ? false : true;
ってどういうことですか??
if(x1 >= x2 + width2) return false;
if(x1 + width1 <= x2) return false;
if(y1 >= y2 + height2) return false;
if(y1 + height1 <= y2) return false;
return true;
と同じだよ。多分2つの領域の重なり判定と思う。
ふむふむ
確かゲーム系で、当たり判定のところっぽい関数だったからそうなのかも!
「||」って、「OR」だったと思うのですが、三項演算子って順々に判定してfalseやtureを返すんですか?
なんか質問部分がわかりにくいーー・・・
> 三項演算子って順々に判定してfalseやtureを返すんですか?
三項演算子 xxx ? yyy : zzz は、単に xxx の値の真/偽によって yyy か zzz を返すだけ。
順々に判定するのは、|| (論理 OR 演算子) の方。
xxx || yyy は、xxx が真なら yyy を実行しないで 真 を返す。
(短絡演算で、ググッてくれ。)
ありがとう!ググってきましたー。なるほど。よくわかりました
お世話になりました!
Cで書いたプログラムなんですが、コンパイルは通るのに実行するとエラーが起こります。
デバッグ(と呼んでいいのかどうか分かりませんが)したいのですが、
どのように行うのでしょうか。
コンパイラはgccをMS-DOS上(MinGW)で使っています。
そんなのソースださないと分かるわけ無いだろ。
せめてどうエラー出るのか書けや。
やはりソースによって変わってくるのですね。
一般的にどのようにやっていくのかお聞きしたくて、書き込みました。
エラーは、エラーログを作成しています。というメッセージと共に
プログラムが強制終了します。
> エラーは、エラーログを作成しています。というメッセージと共に
> プログラムが強制終了します。
.... で、そのエラーログとやらはあるのか ?
プログラムを少しづつ削っていって、エラーが出なくなったら直前に
削ったところが、エラーに関係するところだ。大抵は、
つーか、エラーログ出てるなら読めよとりあえず(w
gdb(gcc用のデバッガ)ないの?
なければprintfとassertと根性でバグ捜せ。
エラーログの読みかたわからないです。スマソ
実行したフォルダを探しても該当するようなファイルが見つかりません。
gdbというものは落としてすぐ使えるでしょうか?
探してみます。明日提出の課題なんです。
やはりそれですか・・・
皆さんどうもアリガd
おいおい、システムのエラーログに記録されとるんだろ。
実行フォルダには無いぞ。
見方教えてください。
お手数かけてほんとスマソ
だから、OSは何なんだよ(藁
何も情報書かずに推測するスレか、ここは。
恐らくLinux系だろうけど、君じゃ無理だ多分。その様子だと。
もアフォだけど、お前も相当だな。
> コンパイラはgccをMS-DOS上(MinGW)で使っています。
素の MS-DOS はエラーログなんか記録しないだろうから、どうせ Windows の MS-DOS プロンプトじゃねーのか ?
どうせ MAP ファイルなんか見れないんだから、素直に か の2行目に従えよ。
100desuyo
> printf("-----ここは改行です-----\n");
printf("-----ここは空行です-----\n");
厨質問で申し訳ないのですが
while(fgets(buf, 256, infp) !=NULL){
hoge = atoi(buf);
printf("hoge=%d\n",hoge);
}
とやりますと、全部のhogeが0となってしまいます。
読みこんだファイルは4行に渡る30バイトほどの
テキストファイルなのですが・・・
どなたかご教授オネガイイタシマス。
入力ファイルの内容を晒してみ?
printf("%s",buf);
でちゃんと、bufに文字列読み込まれてるか確認してみる。
103の言うとおり、どんな入力ファイルやねんやろ・・・
atoi関数の使い方もわかっていますか?
103,104サソ
アリガdございます。
テキストファイルを
345504
45454
3920
5503
こんな感じに直したらできますた。
文字が入ってたのがいけなかったのでしょうか?
atoiを使う際に"x"などの文字が混入していた際に
無視する方法ってあるのでしょうか?
ほんと厨ですみませそ。。。
あるプログラムを作成しました(長いので載せれません)。
そのプログラムはある配列変数の要素を小さく設定した時は
問題なく動いてくれるのですが、大きくするとsegmentation Failureがでます。
gdbをつかってデバッグしました。そしたら、
(gdb) core a.out.core
Core was generated by `a.out'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libm.so.2...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libc.so.4...(no debugging symbols found)...done.
Reading symbols from /usr/libexec/ld-elf.so.1...(no debugging symbols found)...
done.
#0 0x80489ab in main ()
(gdb) where
#0 0x80489ab in main ()
#1 0x8048506 in _start ()
となり、何行目に問題があるのか?という情報は教えてくれません。
どこがおかしいか、長年の経験のある皆様にお聴きしようと思ったしだいです。
助けて下さい。
(gdb) where
#0 0x80489ab in main ()
#1 0x8048506 in _start ()
が問題なんですよね?
これってどういう意味ですか?
どんなプログラムかも配列をどういうふうに使ってるのかも要素数をどの程度にしたのかもわからないのに答えろというのか・・・
atoi()はスペースと+-以外の文字とぶつかるとそこで終了しちゃいますよ
もしかしたら、文字を取り除く関数があるかもしれないけど
自分で取り除くコード書いたほうが柔軟性あっていいかもしれないですね
じゃーのせます。
連続投稿なるけどごめんなさい、どこが悪いか全く分りませんので
enumとmainだけとりあえず載せます
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
enum {
MAX_NODE = 87381, /* 自分で計算 (( pow(4,MAX_DEPTH) -1 ) / 3) */
MAX_RES = 81, /*ネットワーク内のリソースの種類*/
MAX_DEPTH = 9, /*木の深さ*/
MAX_SIM = 100, /*シミュレーション回数*/
REPEAT = 2 /*繰り返し数 シミュレーション数*/
};
main()
{
int i,j,k,query,query_number,num_reg,sum_query_number,sim_num,sum_num_reg,num_resource[MAX_RES],node[MAX_NODE][MAX_RES],rt[MAX_NODE][4][MAX_RES];
double adv_num_reg,adv_query_number;
FILE *outp;
srand((unsigned int)time(NULL));
sum_query_number = 0;
sum_num_reg = 0;
for( sim_num = 0 ; sim_num < REPEAT ; sim_num++ ){
/*ノードの登録を初期化*/
node_initialize(node);
/*ルーチングテーブル初期化*/
rt_initialize(rt);
/*リソース数を決定*/
for(i=0; i<MAX_RES; i++){
num_resource[i]=(int)(num_normalcurve() + 0.50);
/*printf("%d\n",num_resource[i]);*/
}
/*各ノードごとの各リソースの登録情報をセット*/
distribute(node,num_resource);
/*MATRIX表示*/
/*print_matrix(node);*/
for(k=0;k<MAX_SIM;k++){
/*QUERY決定*/
query = query_produce();
/*printf("query %d\n\n",query);*/
/*routing開始*/
route(query,node,rt);}
query = 3;
/*count the number of the query 3*/
query_number = count_qnum(query,rt);
/*rt表示*/
/*print_query(query,rt);*/
sum_query_number += query_number;
printf("query_number %d",query_number);
/*ノードAの登録数*/
num_reg = sum_reg_num(rt);
sum_num_reg += num_reg;
printf("registration_number %d",num_reg);
}
adv_query_number = (double)(sum_query_number) / (double)(REPEAT);
adv_num_reg = (double)(sum_num_reg) / (double)(REPEAT);
printf("adv_query_number %f",adv_query_number);
printf("adv_num_reg %f",adv_num_reg);
}
70〜140MBもスタックに取るつもりかよ
そこが問題ですか?enumんとこですよね?
age
何だよ、解決したんじゃなかったのか?
スタックに取りすぎだっつってんの
int i,j,k,query,query_number,num_reg,sum_query_number,sim_num,sum_num_reg,num_resource[MAX_RES],node[MAX_NODE][MAX_RES],rt[MAX_NODE][4][MAX_RES];
これがどれほど巨大なメモリを必要とするかわかる?
どうやったらいいのでしょうか?
main関数から変数をおいだせばいいのでしょうか?
配列をなくせばいいのでしょうか?
enumは関係ないのですか?
まず第一にバッファの使い方を見直すべし
んな巨大な配列が本当に必要なのか?
どうしても必要ならmallocなり何なりでヒープに取るべし
enumの値を配列サイズに使ってんだから関係あるに決まってる
分かりました。
配列を変更するのは難しそうですので、
別の変数を直して行きます。
mallocとか勉強します
ぷろぐらむの実行がいつまでたっても終らん。
実行を早くする基本は何?
プロファイラ使え。
さそ
ありがdございます
while(fgets(buf, 256, ifp) !=NULL){
for(i=0; i<strlen(buf); i++){
if(isalpha(buf[i])){
こんな感じでアルファベットだったらbufからその文字を省くといった
仕様にしたいのですが、bufからその文字だけ省くことなんて
可能なのでしょうか?
再度の糞厨質問ですいません。
ご教授オネガイイタシマス。
VC++買おうと思って製品情報見てるとVisual Studio .NETのページに行っちゃうんですが
Visual Studio .NET て何ですか?
VB,C#,VC++が全部入り
11万円もするよぉ!うわぁーぁぁん
ある4つほどの配列をファイルに書き込もうとして、
fwriteを使って書き込みました。
別のプログラムでそれを読み込もうとしてfreadで読み込んだのですが、
読み込んだ配列の中身が途中から0になってしまっています。
具体的には
a[130][100],b[100][30],c[100],d[30]を書き込んで
読み込んだaおよびbが途中から0になっていました。
けれどもcとdは正常に読み込めていました。
エラーチェックはしていますがエラーは出ていません。
プログラムも見直していますが、さっぱりわかりません。
どなたかご教授願いまつ。
ほんとに全部要るのか?
実際のものより小規模なモデルを作り、プログラムが正しく動作しているかを検証する。
各処理の実行時間を調べて、時間がかかっている部分を高速化する。
(但し、複雑になるような高速化は避ける。)
いくつかの規模のモデルを実行して、時間を測定し、実際のモデルでどれだけ時間が
かかるかを見積もる。
時間がかかり過ぎるようなら、別のアルゴリズムを探す。
別のアルゴリズムが見つからなければ、複雑な高速化に取り組む。
それでも時間がかかり過ぎるなら、プログラムを作ることの意義を見直す。
省いた後、隙間を詰める。
もしくは、省く文字以外を別バッファにコピーする。
#include <ctype.h>を追加して、
char tmp[256], *src, *dst ;
for ( src=buf, dst=tmp; *src; src++ ) {
if ( isdigit( *src ) || *src=='-' || *src=='+' )
*dst++ = *src ;
}
*dst= '\0' ;
hoge= atoi( tmp ) ;
但し、これだと "-1 2 +3" が "-12+3" になってしまうから
それいう可能性があるなら加工しる!
123で、"アルファベットだったらその文字を省く" って言ってるから、
if ( !isalpha( *src ) )
*dst++ = *src ;
のほうがいいかな。
先頭の空白は無視するというatoiの仕様を利用して、余計な文字をスペースに置き換えたら?
ファイルサイズが期待した通りになっているかを確認。
ファイルの中を見てみて、0が書かれているようなら、
fwrite、そうでなければ読み込みがfreadを見直す。
たぶん、二次元配列のサイズ計算が間違えているんだと思う。
途中からとかではなくて、実際にどこから0が書かれているかを
調べるのもいいと思う。(地道なことをちゃんとやらんと)
読み込むときも書き込むときもバイナリモードにした?
あ、UNIX系なら関係ないけど。
全部いらなくても、商利用したいときとか…
ところで、シェアウェアって、やっぱ商利用?
そりゃそうでつ。
細かい訂正ですが、b[100][32]でd[32]でした。
カエレ!(・∀・)とか言われそうですが、
ファイルサイズの計算はどうすればいいのでしょうか・・・
バイナリファイルの中身はどうやって見ればいいのでしょうか・・・バイナリエディタですか?
二次元配列のサイズ計算というのがよく分からないのですが・・・
今いろいろと検索していますがよく分かりません・・・
aはa[30][0]から0になっていて、bはb[7][6]から0になっています。
WindowsのCygwinってやつでやってます。
一応fopenにはwbやrbはちゃんと書いているので
大丈夫だと思います・・・
Visual C++ .NET Standard
買おうと思いますがどう思われますか?
VBは弄った事あります
スレ違い祭りか?
Visual C# .NET
Visual C++ .NETて何が違うんですか?
Cygwin なら
ls -l ファイル名
でファイルサイズが見れますよ。
バイナリファイルの中身は
dump ファイル名 | less
(less でなく more でもいいです。お好きなほうを)
で見れます。
C#とC++という時点で違う。
> ファイルサイズの計算はどうすればいいのでしょうか・・・
printf("%d", sizeof a);
もしくは
sizeof(aの型) * 130 * 100
として計算。あとはバイナリなんで、a, b, c, dを全部足せばよい。
> バイナリファイルの中身はどうやって見ればいいのでしょうか・・・バイナリエディタですか?
バイナリエディタもしくは16進ダンプするツールを探す。
なければ作れ。(簡単だから)
予想では0は書かれていないと思う。
> 二次元配列のサイズ計算というのがよく分からないのですが・・・
> (略)
> aはa[30][0]から0になっていて、bはb[7][6]から0になっています。
c, dは大丈夫で、a, bが駄目というんで、二次元配列の扱いが間違えているんだと思う。
fwrite()のところで3000や1350という数を渡してしまっている。
3000は130 * 100 を 30 * 100にしてしまっているとか…
いいんじゃない
ありがd。
とりあえずプログラムもう一度見直して
ファイルの中身見たりしてみまつ。
Visual C++ .NET Standard は
最適化が無くて、できた実行ファイルも配布禁止だったような。
完全に学習用なんで、それでもいいんなら買ったんでいいんでは?
autoって書くのって時代遅れっぽぃ?
>それって自動変数じゃねーだろ。
>(今時誰も書かないけど、auto ってキーワードもあるし...。)
そういわれたらそうかも(^^;
へんないいまわしだw
staticで宣言した瞬間にautoじゃなくなるもんね
>グローバル変数/関数のスコープには触れなくて良いのか ?
うーん、staticってなんでしか?って聞いてる人にあんまり難しいこといってもなぁ〜
って思いまして。
つまるところは内容が保持されるってことがいいたい。
そうすると、スコープの話になりますね・・・
>>(今時誰も書かないけど、auto ってキーワードもあるし...。)
う〜ん、C始めて、8年やけど、いまだかつてautoキーワード使ったこと無いわw
使うことってあるの?
EXEとか言っているあたりWindows上でコンパイルしたな・・・・
xreaはLinux(CPUはIntel系)だから。
printf("Content-type:text/html\n\n");
こんなん付けていましたが・・・ダメでした・・。
環境はVCなんです。・・うーぬ。
レスありがトン。
トクトクでコンパイルしたものをXREAにアップすれば動くかも
Windowsじゃだめなのですか!!
それは気付かなかった・・っていうか知らなかった〜
Linux対応にするにはどうすればいいか、わかります・・?
strtok(バッファの内容を改変してもいいとき)
もしくは strchr(よくないとき)を使う。
: の後は空白を空ける。
printf("Content-type: text/html\n\n");
Linux 上でコンパイルする。
他のバッファにコピーするならsscanf(src,"%[^#]",dest);こんな感じかな?
Linuxヵー自分全然わかんないッス・・・。
まだ遠い道なのかな・・。
レンタル鯖でCGIするなら、やっぱperlとかの方がいいっしょ。
実験用に自前鯖つくるか
*.cgi の中身ってどんな言語?
ってか、コンパイルされた状態なの?
テキストソースなの?
実行できるなら何でも。
のことならを読めば分かると思うけど・・・
> C言語で
> それをコンパイルして
そういう意味か・・・
標準入出力と環境変数にアクセスする機能があれば言語は問わない。
Cで書かれたものならもちろんコンパイルしないとだめ
確かにそういう意味かもしれんな...。
に補足するなら、サーバが許可してない形式のは実行できなかったと思う。
インタプリタ言語なら、もちろんインタプリタがサーバに置いてないと実行できない。
ホームでインタプリタを自前でコンパイルして使うという手もあるが...。
const struct ABC {int i;} a;
struct ABC b;
ってすると、なんで a しか定数にならないのー?
型限定子なのに
書き換え不能なstruct ABC型のaだからじゃない・・・
何がおかしいんだろ・・・
int findpos(char s[], int lim)
{
int i;
for (i = 0; s[i] != '\0' && i < lim; i++)
{
;
}
if (i == lim)
{
while (i >= 0 && (s[i] == ' ' || s[i] == '\t'))/*@*/
{
i--;
}
}
return i;
}
@の条件が常に偽になるのはなぜなのでしょう?
free()でsegmentation faultが発生するんですが考えられる原因は何でしょうか
・mallocで得た領域でない。
・既にfree済み。
const struct ABC {[?[struct]?] int i;} a;
「困った1」ではなくて「困った」でした。スマソ。
常に偽になるわけないでしょ。
findposに与える引数を工夫してみな。
それ以外にも、ポインタとかの使い方間違えてて、メモリ管理がぐちゃぐちゃになってるとか...。
>変数を後ろに宣言する何の必要があるのか?
関数でも変数でも定義や参照の後ろで宣言するのは意味無いし
,263
1)でした...
静的に確保した領域を開放しようとしてました.
どうもありがとうございました.
それで正常です。
構造体の定義の部分に const をつけても、
その構造体変数を作ろうとした場合に const になるわけではありません。
定義の部分でついでに定義した構造体変数が const になるのです。
常に const になって欲しいんならこんな感じで。
typedef const struct __ABC {int i;} ABC;
ABC a = { 0 };
ABC b = { 5 };
ありがとうございます。
その方向で工夫してみます。
再帰関数を書いたときにauto変数であることを明示するために書いたことがある。
>const struct ABC {int i;} a;
だと
const struct ABC a;
でって、ABCがconstになるわけじゃないですからね。
そもそも、型を定数にしてなんかいいことある?
あえてするなら
struct ABC {const int i;};
かな?
sizeof honyaraと、sizeof(honyara)って何か違いますか?
don't worry.
#define honyara honya + ra
後は自分で考えませう
バトルタワースレもこれで潰されてたな・・・
です。
んー、簡単なプログラムかいて、色々実験してみたんだけど、
結果は、同じになります。
あんまり悩む事じゃないのかな??
それは、そんな定義する奴の方が悪いと思うけど。
じゃ↓を試してみ
#define honyara 7 + 11
printf("%d\n",sizeof honyara );
printf("%d\n",sizeof(honyara));
型に対してsizeofするときは括弧が必要なんじゃなかった?
それは同意だが、は、何が違うのか聞いてるので…
だからと言ってそんな変な例を出してどうする。
sizeof 単一式
sizoof(型名)
と言うだけのことだろ。規格書ぐらい読めよ。
ごめん、コードはまた今度な。
俺が思うに、1 6\n2 7\n3 8・・・と表示してゆくのではなく、
1から5までを表示したあとに一番上の行間で戻って少し右にずらし6から10までを表示したいんだと思う。
× 行間で
○ 行まで
1 6
2 7
3 8
4 9
5 10
↑これを
#include <stdio.h>
int main(void){
int a,b;
for(a=1;a<6;a++){
for(b=a;b<=10;b+=5)
printf("%3d",b);
printf("\n");
}
}
こうじゃなくてああ
1 6
2 7
3 8
4 9
5 10
↑こういった出力結果が欲しいだけなんか?
だったら
int i;
for (i=1; i<=5; i++)
printf("%d %d\n", i, i+5);
これでええやん。
それだと1 -> 6 -> 2 -> 7という順で表示されるから嫌なんだと思う。
カーソルを移動させるための関数が必要だな。標準にはない。
俺も当初そう思ったんだけど,
を見る限り1 -> 6 -> 2 -> 7と表示させようとしてるような。
よう分からんけど、の環境で
同一プロセス内のスレッドが複数ある時の話じゃないか?
「Java 謎+落とし穴」のp50参照
C言語って関数内関数が使えないはずですよね?
gccだと通っちゃうんですが。何故?
gccが独自拡張してるからだYO!
-ansi -pedantic-errors
の、「ANSI準拠以外認めない」オプション付けたらエラーになる筈
ところで
、61
の掛け合いに激しくワラタんだが、
反応ないのをみるに、これって激しく既知のネタ?
Not Found.
知らなんだ。イイ! ね。
特に作業用の引数が必要な再帰関数使うときとか。
サンクス
というかなんで標準Cじゃ使えないんだよヽ(`Д´)ノ
スコープがちょっと違うだけだろうが!
> #define honyara (honya + ra)
> って宣言するだろ。
このくだらないつっこみのために遅レスしたの?
> #define honyara (honya + ra)
> って宣言するだろ。
#define honyara ((honya) + (ra))
>このくだらないつっこみのために遅レスしたの?
規格書を読んでいた為ではないかと。
あんたの意味なし煽り突っ込みよりマシかと。
趣味の差かと。
念には、念を入れると言う考え方もあるけど、俺はマクロ側で () 必須にするのが好み。
それもあるが、毎日 2ch 見てるわけじゃないし...。
>俺はマクロ側で () 必須にするのが好み。
#define a(b) (b * 5)
printf("%d\n", a((4 + 8)));
という意味だったら死刑。
早くこの荒らしアク禁に汁!
煽ったつもりはないですけど。
煽っているのはの方でしょ。
これ (=このくだらないつっこみのために遅レスしたの?) 書いといて...
> 煽ったつもりはないですけど。
と来たか...。
で煽りがないとは言わんけど、は見てんのかなぁ。
驚いたので感想を書いただけです。
亀レスでなければ驚きもしないですけど。
くだらないという表現がまずかったでしょうか。