[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/19 06:51 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇)



1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ]
入門者向けの俺に聞けスレです。
なんでもきいてよね

116 名前:デフォルトの名無しさん [2006/05/29(月) 23:40:01 ]
ctype,toupperは習ってないお、周りのみんなもできてないし、
できる問題なのか不安だお(;^ω^)

117 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 23:41:37 ]
>>116
どういったアルゴリズムなのか考える努力を。

118 名前:デフォルトの名無しさん [2006/05/29(月) 23:44:13 ]
>>117 一応みんなのおかげで大体理解できたお。でも習ってないのが
あるから課題としては評価されないお。やばいお(’ω‘)

119 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 23:46:12 BE:49923825-#]
ならってる範囲でって言っても、forもwhileも習ってないんじゃ、ムリな課題なんじゃね?

120 名前:100 [2006/05/29(月) 23:47:05 ]
for文の中身を解説しろってことだな
まず最初の処理として左端の式を評価するi=0だからint型のiに0を代入。
この式を評価するのは最初だけ。
次にi<(int)strlen(s)の処理に移る。i<(int)strlen(s)が成り立つならfor文内
の処理をする。
でstrlen()という関数は文字列の先頭アドレスを引数に取り戻り値として
文字列の最後の'\0'を含まないだけの文字の数を返す。
で、strlen(s)のsっていうのは文字列の入った配列s[10]の先頭アドレスを意味する
なぜっていわれてもそうなんだから仕方がない。
アドレスなら&がいるんじゃないか?と思うなら&s[0]としても良い。
&s[0] == sって解釈しても、まぁ.......OK!!
で(int)ってついてるのは本来strlenの戻り値はsize_t。
size_tってのは、unsigned int型。なので一応そのままでも良いけど
(int)をつける。これをつけると言うことは戻り値の値をint型にキャストするということ。
キャストとは、値の型を変換する事。
で、i<(int)strlen(s)は、結局sの文字列の長さ('\0'を省いた)よりiの初期値は0
のため成り立つ事が確認される成り立っているので、for文内の処理に以降。
for文内の処理が終わると次のi++に移るi++はiに1足すって事。
で、iに1足した後、i<(int)strlen(s)の評価に移る。で最終的に文字列の長さ
より、iが数値的に超えたら、for文の処理を行わず。for文を抜け出る。

121 名前:デフォルトの名無しさん [2006/05/29(月) 23:48:16 ]
無理だよね。やっぱ。>>115で行くお。toupperとctypeは理解できたし。

122 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 23:48:38 ]
#include <stdio.h> 
int main(void){ 
    int s;
    printf("小英字列=");
    scanf("%x",&s); 
    printf("大英字列=%X\n",s); 
    return 0; 
}
>>87の指定通りにabcdefという入力にはABCDEFを返すぜひゃっほー。

123 名前:100 [2006/05/29(月) 23:49:04 ]
なんか書いててこんがらがってきた。
俺の書いてることってあってるのか?

124 名前:デフォルトの名無しさん [2006/05/29(月) 23:53:19 ]
>>122 そんなんでいいんかなあ。それでいくか。



125 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 23:54:46 BE:39938742-#]
>>122
天才じゃね?

126 名前:デフォルトの名無しさん [2006/05/29(月) 23:57:33 ]
だれも思いつかないぞ

127 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 23:58:10 ]
>>122

> a.exe
> beaf
> BEAF
>
> a.exe
> dead
> DEAD
おーちゃんと動いてるー

128 名前:七氏 [2006/05/30(火) 00:02:13 ]
libtiffをつかったプログラミングでtiff画像を 
カラー画像→グレー画像
に変換する方法なら書いてあるのですが
グレー画像→カラー画像
に変換する方法がわかりません
どなたかわかる方教えてもらえませんか
参考にしているサイトは www-06.ibm.com/jp/developerworks/linux/020802/j_l-libtiff2.html 
ですよろしくお願いします
違うとこにも書き込んだのですが不安なので教えてください

129 名前:100 [2006/05/30(火) 00:02:26 ]
まじかよ、うちじゃ、>>122の式まともにうごかんぞ
VS2005stdがおかしいのか?
ま、いいや、そんなトリッキーな事することねーし

130 名前:デフォルトの名無しさん [2006/05/30(火) 00:03:14 ]
ありがとうございました。たぶん模範解答とは違うけど、
ちゃんと動くから自信を持って提出するお(^ω^)

131 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 00:05:37 BE:174730875-#]
>>128
フツーに考えて、グレーからカラーはムリだろ。
それともファイルのどっかにカラー情報が残されてるのか?

132 名前:七氏 [2006/05/30(火) 00:09:39 ]
>>131
G3→G4に変換したいんですが
やっぱり無理なんですかね?
カラー情報が仮にノここされていたら可能ですか?

133 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 00:13:05 ]
G3→G4をグレー→カラーと言うから混乱を招いている。
単なるTiffの画像形式の変換と言えばいいことだ。
しかし、マルチに答える気はないので詳細は割愛。

134 名前:七氏 [2006/05/30(火) 00:18:13 ]
>>133
そういえばよかったです言葉たらですみません
教えてもらえませんか?



135 名前:デフォルトの名無しさん [2006/05/30(火) 01:47:53 ]
どなたかご教授ください。

テキストファイルを開いて、文字コードを判別し、その文字コードを使って文字列を表示するというプログラムを作りたいんですが、どうすればいいんでしょうか?


136 名前:135 [2006/05/30(火) 01:54:33 ]
文字コード等についていまいちよくわかってないんですが、「○○コードとして表示する」という方法はなく、値を他の文字コード形式に変換するんでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 02:00:32 ]
>>136
そうです

138 名前:135 [2006/05/30(火) 02:07:21 ]
>>137
なるほどです。という事はコンパイラーが処理するコードの形式に変換すればいいんですね?

139 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 02:10:04 ]
>>138
コンパイラが処理できるコードに変換するのではなくて、
最終的に表示を行うシェル(Windowsで言えばコマンドプロンプト)の文字コードに合わせる。

140 名前:135 [2006/05/30(火) 02:25:55 ]
>>139
わかりました。ありがとうございました。

141 名前:デフォルトの名無しさん [2006/05/30(火) 03:32:19 ]
C言語を始めるに当たって、お勧めな教本を教えて下さい

142 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 04:31:59 ]
推薦図書/必読書のためのスレッド PART31
pc8.2ch.net/test/read.cgi/tech/1146122168/

143 名前:72 [2006/05/30(火) 10:05:40 ]
>>73 >>74

ありがとうよくわかりました。

144 名前:デフォルトの名無しさん mailto:sage [2006/05/30(火) 23:51:05 ]
ソース書くお勧めのエディターってありますか?
書きやすいとかあるのかな?



145 名前:デフォルトの名無しさん [2006/05/31(水) 00:19:27 ]
>>144
つ ttp://search.vector.co.jp/search?query=Cpad

146 名前:デフォルトの名無しさん [2006/05/31(水) 00:48:04 ]
 次のプログラムは、キーボードから半径rと数値aを入力し、aが1ならば円の円周を
求め、2ならば円の面積を求めるものである。

/***cex2106.c***/
/*分岐プログラム*/
/*  switch〜case 文*/
/************/
#include <stdio.h>
main()
{
int a;
float r,l,s,pai;
pai=3.14159;
printf(

147 名前:デフォルトの名無しさん [2006/05/31(水) 00:51:44 ]
アルゴリズムって、何かを作りながら学ぶのがいいの?
それとも、アルゴリズムを学んだ後に何かを作るのがいいの?

148 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 01:16:14 ]
最初はあまり余計なことはせず、たとえばまずソートならソートについてよく理解できる
単純なソースの記述からはじめた方が良い。
何かを作る際は、全体の構図をしっかり理解して、その一部に
取り込むべきものを取り込む。取り込まれたものが何なのか?なんて
複雑な構造から一部を理解しようってのは初心者には向かないかと。

149 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 01:54:11 ]
リナックスなんだけどsqrtが使えない!!

#include<stdio.h>
#include<math.h>
main(){
int x, y;
double K, temp, pi, s;
printf(

150 名前:149 mailto:sage [2006/05/31(水) 01:58:46 ]
途中できれてるし
#include<stdio.h>
#include<math.h>
main(){
int x, y;
double K, temp, pi, s;
printf("x座標を入れてください");
scanf("%d",&x);
printf("y座標を入れてください");
scanf("%d",&y);
temp = x*x+y*y;
K = sqrt(temp);
pi = 3.1416;
s = K*K*pi;
printf("円の面積は%f平方センチメートルです\n",s);
}
って打って


151 名前:149 mailto:sage [2006/05/31(水) 02:01:43 ]
コンパイルすると
/tmp/ccuVKbmu.o(.text+0xa7): In function `main':
menseki.c: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました
ってエラーが出るし・・・

152 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 02:07:24 ]
x座標を入れてください3
y座標を入れてください3
円の面積は56.548800平方センチメートルです

Borland C++ではコンパイルできて、試しにxとyに3を入れて出したんだが
座標から面積を求めるって・・・

153 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 02:08:56 ]
>>149
-lm 付けずにコンパイルしてました。
なんて冗談は言わないよな?

154 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 02:11:07 ]
>>147
>>148さんの言うとおり
ソートでも、探索でも、単純なソースを見てそのやりかたを
知れば、「これをこういう風にしたらこういう風になるな」ってな感じで
考えられる。でも、ネット上で、単純なソースって意外と見つからない。
理屈は書いてあっても、肝心のソースがなかったり。
かといって、アルゴリズム辞典買っても、「あぁ、もう訳わかんない」
ってなるのがたまにきづ。
でも、ネット上にも簡単な例が載ってるページがあったりする。
URL教えれ、って言われてもブックマークしてないから教えれないけど。
ま、こんな偉そうなことを言ってる俺も、ソートなり探索なりその他の
アルゴリズム等、使わないからすぐ忘れる。
だから、一度知ったアルゴリズムは、忘れそうな頃にもういっぺん
復習みたいにした方が良いみたい。
じゃないと、俺みたいに「ああ、あれね、もう忘れた」ってな感じに
なっちゃうよ。



155 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 02:52:47 ]
>>145
ありがとー

156 名前:デフォルトの名無しさん [2006/05/31(水) 12:07:17 ]
配列同士の足し算ってどう書けばいいのでしょ
たとえば

int a[3] = { 1, 2, 3 }
int b[2] = { 4, 5 }

としたときに

int c[5] = { 1, 2, 3, 4, 5 }

という配列を作りたいのです。

157 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 12:12:57 ]
>>156
それって単に配列aの後ろにbを付け足したってだけだよね?
だったら単純にaの先頭から順番に続けてbの先頭の値を
配列cに入れていけば良いだけでは?

158 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 12:22:42 ]
>>156
int i=j=0;
for(;i<=((sizeof(a)/sizeof(a[0]))+(sizeof(b)/sizoof(b)));i++){
if(a)c[i]=a[i];
else c[i]=b[j++];
}
俺って天才だよね┐(´ー`)┌

159 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 12:28:40 ]
>>156
memcpy(c, a, sizeof(a));
memcpy(c+sizeof(a)/sizeof(a[0]), b, sizeof(b));

160 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 12:45:49 ]
>>157-159
Cで配列を足しあわせるのって難しいんですね。
char型の配列だとstrcatで連結できるけどint型で使おうとするとエラー吐かれるし
perlみたいに
@c = (@a , @b)
こんな記述も使えないし,どう書くのかなと。

どうもありがとうございました

161 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 12:53:31 ]
>>160
> char型の配列だとstrcatで連結できるけど
配列の中身が文字列じゃない限りそんなことはやっちゃいかん

162 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 13:35:35 ]
>>158
forの行に間違いが二つ。その次の行に間違いが一つ。
天才っていうより、天災?

>>159
2番目のmemcpy()に間違いが一つ。

163 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 13:45:52 ]
>>162
どこ?

164 名前:162 mailto:sage [2006/05/31(水) 13:54:32 ]
>>163
がーん、確かによく見たらcにそのまま足しているから合ってるじゃん..._/ ̄|○

>>159
すまん。



165 名前:デフォルトの名無しさん [2006/05/31(水) 17:04:17 ]
下らない質問で恐縮なんですが・・・
構造体の変数に列挙型使えますか?

struct test{
enum tag{sun, mon, tue} week;
};

test.week = sun;

みたいな感じで

166 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 17:05:38 ]
>>165
なぜ人に聞く前に自分で試して見ないのか。
結論を言ってしまえばできるけど。

167 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 17:09:06 ]
>>165
ありがとうございますです。

168 名前:デフォルトの名無しさん [2006/05/31(水) 18:25:12 ]
>>158
c[]のメモリはどこに確保されているの?

169 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 18:38:24 ]
if(a) ってどういう意味? a の値って変化するの?

170 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 19:56:55 ]
>>156

int c[] = {a[0], a[1], a[2], b[0], b[1]};


171 名前:>>147 mailto:sage [2006/05/31(水) 20:06:15 ]
>>148 >>154

ありがとうございます。

よさそうなサイトを探してみます。



172 名前:149 mailto:sage [2006/05/31(水) 20:11:39 ]
>>153
その通りでした・・・


173 名前:デフォルトの名無しさん [2006/05/31(水) 21:16:16 ]
printf関数のソースの解説してあるサイトってないかな?

174 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 21:28:03 ]
>>173
 図書館かどこかでANSI C言語辞典を探して
printf関数の定義例をコピーする、というんじゃだめなの?



175 名前:デフォルトの名無しさん [2006/05/31(水) 22:21:26 ]
俺、さっきプログラム作ってて、すごいことに気づいた。

ポインタからメンバ変数を取り出すのに使う -> って、いらなくね?

ポインタだろうがそうでなかろうが . でいいじゃん。
わざわざ人間が指定してやる必要ないじゃん。

だって、コンパイラは変数がポインタかどうか分かってるのだから、
勝手に解析してくれればいいのだと思うのだよ

176 名前:デフォルトの名無しさん [2006/05/31(水) 23:11:34 ]
const と #typedef の違いってなんですか?


177 名前:176 mailto:sage [2006/05/31(水) 23:12:32 ]

>>176

ごめんなさい、
#typedef ではなく #define でした。

178 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 23:19:47 ]
>>175
初心者はそれで構造体の変数と構造体へのポインタを混同しそうだから、
今の区別する仕様でいいと俺は思う。

そういえばDはどっちも . でいけるとアピールしていたような気がしなくもない。

179 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 00:13:58 ]
>>175
たしかにそうなんだけどさ、
-> はポインタ演算 (*p). の糖衣構文として追加された経緯があって、
既存のコンパイラをあんまりいじくらずにいけるようにしたかったんだよ。

180 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 00:21:30 ]
あと、ポインタってことはメンバがオーバーライドされてたりすることも考えないといけないから、
いざ機械語になったときのコードが.と->でかなり違ってくる。.*と->*になればなおさら。

ま、コンパイラがちゃんと解析すりゃいいじゃん、ってのは、そうなんだけどね。

181 名前:179-180 mailto:sage [2006/06/01(木) 01:14:22 ]
ごめんC++と間違えた。

182 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 11:07:41 BE:34939229-#]
>>177
そもそも同じところが見つからない。

183 名前:デフォルトの名無しさん [2006/06/01(木) 11:37:03 ]
実行時に

prog.exe para1 para2

のように引数を与えたいプログラムを作るときに、
デバッグ時に、以下のように、自分でargcやargvに直接値を代入しても問題ないですか?
実は、他の人がこのようにしているのを見たので、自分でもまねしてみたのですが、
VC.NETだと、問題なく動いているのですが、正しいのか間違っているのかよくわかりません。

main(int argc, char *argv[])
{
argc = 3;
argv[0] = "prog.exe";
argv[1] = "para1";
argv[2] = "para2";

・・・
・・・
・・・

}




184 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 11:40:27 ]
>>183
ダメ



185 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 11:56:47 ]
宿題ではないのでどちらに書こうか悩んだのですが・・・
判る方、いらっしゃいましたら教えて下さい!!

数字を10文字まで表示させて10文字表示して何かキーを押したら
11〜20までを新しいページで表示させたいんです。

これはVC++で出来ますか?

186 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 11:57:58 BE:108696487-#]
最初に
argv=(char**)mallock(sizeof(char*)*3);
とでもしておけばとりあえず危険はない。

187 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 12:01:42 BE:104814296-#]
>>185
「表示」の具体的な内容(デバイスとかフォントとか大きさとかタイミングとか)とか
「ページ」が何を指しているのかとかが全然分からんが、それらがPCで制御できる
状態にあるならば、VC++でできるかどうかという問いには「できる」としか答えられない。

188 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 12:22:23 ]
DOSのMOREコマンドみたいなことをしたいのかな?

189 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 12:37:57 ]
>>183
> argc = 3;
> argv[0] = "prog.exe";

この二行は問題ない。

> argv[1] = "para1";
> argv[2] = "para2";

これは、問題有り。
不正な領域への書き込みとなる。

190 名前:185 mailto:sage [2006/06/01(木) 13:15:37 ]
>>187さん
回答有難う御座います。
言葉足らずで申し訳ありません;;

1         11
2         12
3         13
4         14
5  ⇒何か押す⇒ 15
6         16
7         17
8         18
9         19
10         20

と表示したいんです。
(数字は固定値じゃなくて任意で入力された文字)
これじゃぁ、まだ判り辛いですか?
初心者で申し訳ないです;;上手く言葉に出来ないです(;´Д`)


191 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 13:49:17 BE:139752498-#]
>>190
やりたいことは分かったが、お前が何を知りたいのかが分からない。

192 名前:185 mailto:sage [2006/06/01(木) 14:05:30 ]
>>191さん
190で言ったように表示できるソースを書きたいんですが・・・
10コ表示したら改ページみたいなのをfor文とかで回せば良いのですか?

193 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 14:09:59 ]
>>185
コンソールAPI ってのを使う。

194 名前:デフォルトの名無しさん [2006/06/01(木) 14:10:57 ]
>184
>186
>189
ありがとございました。
そうすると、こういう場合(つまりデバッグ作業をしているときには
とりあえずソースコードの中で固定の引数を与えたい場合は)、何か良いテクニックみたいなの
ありますか?



195 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 14:14:58 ]
>>194
VCのデバッガなら、コマンドラインから与える引数の設定ができるよ。
他のデバッガにもそういう機能があるんじゃない?



196 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 14:23:35 BE:108696487-#]
>>192
forでもwhileでも好きなようにループ汁。

197 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 14:51:35 ]
>>194
俺だったらそういうデバッグの時はシェルスクリプト
(Windowsならバッチファイル) 作っちゃうな。
そうすればそこで引数変えられるから。


198 名前:デフォルトの名無しさん mailto:age [2006/06/01(木) 16:51:07 ]
int i =1;

if(i == 5)
{
printf("Hello!");
}

1から100まで既に入力されていて
表示をする時に5件ごとにHello!!と表示させたいのですが、
上の書き方だと5件目の時のみにしかHello!!とつきません。
5件ごとにHello!!とつけるにはどうしたらいいですか?

199 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 16:52:34 ]
>>198
計算すりゃいい。
5で割ったあまりが0かどうかで判定すればいいんじゃないか?
(i%5)==0とか。


200 名前:デフォルトの名無しさん mailto:age [2006/06/01(木) 17:12:11 ]
>>199

198です!出来ました!!
有難う御座いました!!!

201 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 17:38:17 ]
このスレ数学得意な人多くてうらやましい

202 名前:デフォルトの名無しさん [2006/06/01(木) 17:46:19 ]
>195
VC使っていますが、コマンドラインから与える引数をデバッガで与えられるというのは、
先ほど見つけました。VC3年使っていて今まで知らなかったです。ありがとうございました。
>197
私は、DOSの画面を出しておいて、VCでビルドしたあと、DOSの画面で引数与えて実行
するという初歩的な方法でやっています。

ところで、
186さんに教えていただいた以下の方法ですが、
 argv=(char**)mallock(sizeof(char*)*3);
 とでもしておけばとりあえず危険はない。
この方法でも完全ではないということでしょうか?
こうやって領域を確保しておけば問題ないように思うのですが。


203 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 17:49:36 ]
>>201
算数の問題だと思うが?

204 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 17:52:57 ]
>>202
とりあえず、意味をよく理解した上で使う分には問題ない。
しかし、意味を理解せずに使用すると、
後々に問題が出てくることになると思われ。



205 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 17:55:41 BE:58230656-#]
>>202
ちょっとtypo。
argv=(char**)malloc(sizeof(char*)*3); の意味が分かってて、リリース時に間違いなく
消えて無くなるなら問題ないかと。

206 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 18:28:58 ]
引数を固定的に決めたいだけなら malloc() する必要もないのではないか?
こんな風に書いておけばいいんじゃないの?

int main(int a, char *av[])
{
 char *argv[] = {a[0], "para1", "para2", NULL};
 int argc = 3;

}

で、リリース時に a, av を argc, argv に書き換える。


207 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 18:29:34 ]
あー! 書き間違いがある。

まあいいや適当に読みかえて。


208 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 18:42:46 BE:48525555-#]
>{a[0], "para1", "para2", NULL};
 ~~~~~
初期化子に変数は使えない。

209 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 18:58:25 ]
>>208
staticじゃなければOKのはず

210 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 19:27:46 ]
>>208
とりあえず gcc ではこれは動いた。

#include <stdio.h>

int main(int a, char *av[])
{
char *argv[] = {av[0], "para1", "para2", NULL};
int argc = sizeof(argv) / sizeof(*argv) - 1;
int i;

printf("%d\n", argc);
for (i = 0; i < argc; i++)
printf("%d: %s\n", i, argv[i]);

return 0;
}

実行結果

3
0: ./a.out
1: para1
2: para2


211 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 19:33:52 ]
> All the expressions in an initializer for an object that has static storage duration shall be
> constant expressions or string literals.
としか書かれてないからな。

212 名前:デフォルトの名無しさん [2006/06/01(木) 20:36:04 ]
ひどい質問ですみません。
コンパイラってどこで仕入れるといいんですか?

213 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 20:46:24 ]
>>212
仕入れということはその後自分の店で売るということですか?


214 名前:デフォルトの名無しさん mailto:sage [2006/06/01(木) 21:05:52 ]
>>208
まったく問題ない。

>>211
expression の定義参照。



215 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 01:29:55 ]
もう、ポインタわけわからんよ(><)


216 名前:デフォルトの名無しさん [2006/06/02(金) 02:21:27 ]
int a = 0x100
char *b = "hoge"

とあるときに

char *c = "100hoge"

という文字列を*cに入れたいのですがどうすればよいでしょうか・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef