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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:34:33 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 19
pc11.2ch.net/test/read.cgi/tech/1190342593/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 97代目
pc11.2ch.net/test/read.cgi/tech/1191937213/

266 名前:デフォルトの名無しさん [2007/10/21(日) 15:30:27 ]
>>265
それはEXではない方の場合でしょうか?

267 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:34:46 ]
マルチスレッドという時点でVisual C++依存
よってCの範疇ではないのでスレ違い

268 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:46:23 ]
マルチスレッドなんて素人が無理に使うもんじゃないよ。


269 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:16:06 ]
こういう簡単なポインタに関するプログラムがあるんですが、
実行するマシンによって(無論コンパイルはそのコンピュータ上でやり直している)
値が変動したりしなかったりします。
どうしてでしょうか?
---------------------------------------------------
#include <stdio.h>
main(){
int i,*x;
x=&i;
*x=1;
printf("x=%o *x=%d\n",x,*x);
}
---------------------------------------------------
コンパイルコマンドは gcc hoge.c
以下は4回分の出力を横に並べたもの

Fedora7
x=27775464634 *x=1, x=27747676054 *x=1, x=27773760474 *x=1, x=27764163514 *x=1

Vine
x=27767545704 *x=1, x=27770645104 *x=1, x=27777542624 *x=1, x=27775054324 *x=1

OS X(10.3)
x=27777776240 *x=1, x=27777776240 *x=1, x=27777776240 *x=1, x=27777776240 *x=1

HP-UX
x=17777772540 *x=1, x=17777772540 *x=1, x=17777772540 *x=1, x=17777772540 *x=1


270 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:19:54 ]
*xの値が変わってないんならどうでもいいことじゃね?

271 名前:デフォルトの名無しさん [2007/10/21(日) 16:21:56 ]
OSのメモリ管理法にもよるだろ。

272 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:24:15 ]
>>269
xは変数iのアドレス(スタック上の)
OSによって異なるだろうし、同じOSでもコンパイラによっても異なる

273 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:27:19 ]
質問があるんですが

int input(char *pstr1)
{
char *ppstr1;

fgets(pstr1,SIZE_ARR,stdin);
fflush(stdin);
ppstr1=strchr(pstr1,'\n');
if(ppstr1!=NULL){
*ppstr1='\0';}
return 0;
}

このコードは、fgets関数で読み込んだ文字列から改行記号を探し
ヌル文字と改行文字を入れ替えをするということをしてるんですが
「*ppstr1='\0';」は、なぜ間接演算子抜きの「ppstr1='\0';」ではダメなんでしょうか
ご教示ください

274 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:30:24 ]
>>270-272
なるほど、ありがとうございました。



275 名前:デフォルトの名無しさん [2007/10/21(日) 16:39:43 ]
>>273
strchrは見つかった場所へのポインタを返すから、char *型のppstr1で受け取ってるだろ?
char *型、つまりアドレスを表してるわけだから、ppstr1だけだと、その見つかった場所のアドレスになるんだ。
だから、アドレスを書き換えても意味がない。
ここでやりたいのは改行をヌル文字に変える作業だから、ppstr1というポインタを介して値を変更しないといけない。
だから、間接参照演算子を使って代入作業を行わないと駄目ってこと。

276 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:43:25 ]
>>273
ところでstdinからfgetsで取得したデータの改行は\0に変換されていなかったっけ?
まちがっていたらソマソ

277 名前:デフォルトの名無しさん [2007/10/21(日) 16:45:34 ]
>>276
変換というより、最後に\0を付加するんだよ。

278 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:49:55 ]
>>276
そいつは多分getsと勘違いしてるとオモ。
getsは最後の改行コードを文字列に含まない。
fgetsは改行コードを文字列に含む。

279 名前:276 mailto:sage [2007/10/21(日) 16:54:10 ]
>>278
なるほど納得

280 名前:273 mailto:sage [2007/10/21(日) 16:56:00 ]
>>275
なるほど・・・
易しい説明どうもありがとうございました!

281 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:58:54 ]
地銀はマーチが多いよ

282 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:00:34 ]
↑誤爆

283 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:00:41 ]
大文字か小文字かどっちだ?

284 名前:デフォルトの名無しさん [2007/10/21(日) 17:34:01 ]
一般的に、スレッドの関数はインライン展開できますか?



285 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:40:37 ]
>>284
日本語でおk

286 名前:デフォルトの名無しさん [2007/10/21(日) 17:41:03 ]
for ( k=0; k<10; k++ ) x+=f(k); というのはインライン展開しませんか?

x= f(0) + f(1) + ・・・ だとインライン展開しますか?

287 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:46:41 ]
内部でfor, while, switchを使った関数はinllineの指定をしてもinline展開されないみたいだよ

288 名前:デフォルトの名無しさん [2007/10/21(日) 17:48:40 ]
それならprintfを使っても駄目ですよね

289 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 20:17:10 ]
初歩的な問題ですみません。

等比数列の初項aと公比rを入力し、格項の値とn項までの総和を計算し出力せよ。ただし、r!=1とする。(for文を使用する)

等比数列: a, ar, ar^2,・・・・・ar^(n-1)
等比数列の和:Sn=a+ar+ar^2+・・・・+ar^(n-1)


for文の部分だけでもお願いします。

290 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 20:18:41 ]
それは質問じゃないだろ
宿題スレ行け

291 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 20:22:34 ]
>>288

printfは非inlineな関数だから関係ないような気がするけど…。

292 名前:デフォルトの名無しさん [2007/10/21(日) 20:22:44 ]
>>290
申し訳ない。宿題スレの存在しらなかったっす

293 名前:名無し [2007/10/21(日) 21:58:06 ]
配列名のsumって何?

294 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 22:01:21 ]
英和辞書にでも聞け



295 名前:名無し [2007/10/21(日) 22:12:13 ]
なるほど。

296 名前:デフォルトの名無しさん [2007/10/22(月) 15:14:45 ]
void add1(int i);
int add2(int i);
void add3(int *p);
int main(void)
{
int n; /* n の値の変化に注目する */
    printf("Input integer: ");
scanf("%d", &n);
printf("Original: %d \n", n);

???????; /* 関数add1 に nを適用する */
printf("After Add1: %d \n", n); /* 関数add1 を適用した後の nを表示する */
printf("Add2: %d \n", ???????); /* nを適用した関数add2 の値を表示する */
printf("After Add2: %d \n", n); /* 関数add2 を適用した後の nを表示する */
     ???????; /* 関数add3 に nを適用する */
printf("After Add3: %d \n", n); /* 関数add3 を適用した後の nを表示する */
return 0;
}
void add1(int i) /* i に1を加えて,表示する */
{
???????}

int add2(int i) /* i に1を加えた値を返す */
{
???????
}
void add3(int *p) /* ポインタの指す値に1を加えて,表示する */
{
???????
}
????の部分を埋めてください。

297 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 15:17:57 ]
そういうのは宿題スレへ
pc11.2ch.net/test/read.cgi/tech/1191937213/

298 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 16:09:03 ]
VS2005でC言語の勉強をしています。

char str[]="日本語";

のような感じで、文字列リテラルとしてUTF-8を指定することは可能でしょうか?
ソースの文字コードをUTF-8にしても、strにはSJISのコードが入ります。

299 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:15:23 ]
wchar_t str[] = L"日本語";

で UNICODE が使える。文字コードは処理系依存
どうしても UTF8 が必要なら変換するしかないと思う。

300 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:27:11 ]
配列を大量に使ってプログラム書いてるときに気をつけないといけないことはなに?
領域こえたらセグメンテーションでるのはわかる。

301 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:29:18 ]
>>300
全然分かってないじゃん

302 名前:それはセグメンテーションフォルトだろう mailto:sage [2007/10/22(月) 18:30:41 ]
>>300
おまえは何か勘違いしている。領域を越えたらセグメンテーションが出ると言うわけではない。

303 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:40:05 ]
わかってないからきいてんじゃん

304 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:42:01 ]
配列を大量に使うプログラムにろくなのが無いこと



305 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:43:36 ]
あれをリストで実装はできない

306 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 18:46:45 ]
どんなアルゴリズム?

307 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 20:18:18 ]
配列好きだけど

総素数の最大数が分かっているときはリストなどより配列を使ったほうが
プログラムは簡単になるし、性能もいいのができる。

ただし、以下のことは注意しなくてはいけない。
1.要素数の最大値が決まっていないとき
  最大数を超えたときにリアロケートするという手もあるが、そういう時はリストにする。
2.中身がスカスカの配列
  メモリーの無駄。メモリーが十分あればそれでも良い。
3.配列が確保できない
  スタック上に配列を作成するときはよくある。
  こういうときはヒープは外部変数にとる。

308 名前:デフォルトの名無しさん [2007/10/22(月) 22:40:56 ]
fgetsで入力のおわりを'\0'にする方法ってありますか?
scanfだと空入力したとき結果が出ないし
getsは禁止らしいので
fgetsしか使う方法がないのですが・・・

309 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 22:43:06 ]
>>308 >>273

310 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:40:50 ]
>>308
fgetsで読み込まれた文字列の改行文字の後は'\0'です。
改行文字を含めたくないなら 273 の方法です…。

311 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:48:13 ]
fgetsは自動的に\0で終わる
改行文字が付いてるのを気にしないなら何もする必要なし

312 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 01:06:28 ]
img_data = (HOGE)malloc( sizeof( GEHO ) * img_height );
for ( int i = 0; i < img_height; i++ ) {
img_data[i] = (HOGE)calloc( sizeof( GEHO ), 3 * img_width );
}
とメモリを確保した場合、どのようにメモリを開放したらいいのでしょうか?

313 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 01:45:44 ]
for ( int i = 0; i < img_height; i++ )
free(img_data[i]);

free(img_data);

314 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 01:53:37 ]
>>312
img_dataの型がよく分からないのだが……
img_dataもimg_data[i]も両方HOGE型てなんなん

int **ar,i;
ar = (int**)malloc(sizeof(int*)*HEIGHT);
for(i=0; i<HEIGHT; ++i) ar[i] = (int*)malloc(sizeof(int)*WIDTH);
こういうのをイメージしてるなら、こう↓
for(i=0; i<HEIGHT; ++i) free(a[i]);
free(ar);



315 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 02:12:47 ]
>>307
ありがとう。
種類の違うデータを二次元配列にいれたりしてるんだけど、
printfで表示させてもあっているのに、
あるアルゴリズムをかけると変な値がでるんだよなー。

ある空白の二次元配列の1行ずつに、違う二次元配列の1行ずつを代入して
足し算していくような感じのプログラムなんだけど。
計算が対数計算だから場合わけが非常に精密にしないとだめなんだよね。



316 名前:312 mailto:sage [2007/10/23(火) 02:13:07 ]
ありがとうございます。
img_dataを開放しても、img_data[i]は開放されないんですね。



317 名前:プリンがー mailto:aaa [2007/10/24(水) 00:15:56 ]
1から10の2乗を3桁で表示するプログラムを作れ。

#include<stdio.h>
void main (void)
{
int x i;
double y;

for(i=0;i<=9;i++){
printf("数値を入力して下さい");
scanf("%d",&x);

y=x*x;

printf("y=%3lf\n",y);

}
return0;

}




であってますか?


318 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:24:43 ]
>>317
10の二乗は?
というか、実行すればいいだろ

319 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:28:55 ]
>>312
exit(0);

320 名前:318 mailto:sage [2007/10/24(水) 00:29:56 ]
>>317
ごめ 間違えた
#include<stdio.h>
int main(void)
{
int i, x;
for(i=1;i<=10;i++){
printf("%d の二乗を入力して下さい : ", i);
scanf("%d", &x);
printf("%3d\n", x);
}
return 0;
}

321 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:00:02 ]
printf("%3d\n", x);
printf("%3d\n", x);
printf("%3d\n", x);

322 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 02:18:57 ]
コマンドプロンプトでコンパイルするような
無償コンパイラが欲しいんですがないですか?

323 名前:デフォルトの名無しさん [2007/10/24(水) 02:20:05 ]
問題に反してるだろ?1〜10の二乗を表示なのに、11以上の二乗も表示できるようになっとるぞ?フローチャートなどで考えたらどうだ?ただプログラムを組むだけでは、上達しないよ。

324 名前:318 mailto:sage [2007/10/24(水) 06:12:02 ]
>>322
MinGW
Visual C++ 2005 Express
Lcc
cint
LSI-C86 評価版



325 名前:318 mailto:sage [2007/10/24(水) 06:13:11 ]
printf("%d の二乗を入力して下さい : ", i);
scanf("%d", &x);

x=i*i;

326 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 10:29:58 ]
>フローチャートなどで考えたらどうだ?
なるほど、>323のようになれると。

327 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:04:28 ]
>>322
Turbo-C 2.01
ttp://bdn.borland.com/museum/
お薦め。

328 名前:プリンがー mailto:aaa [2007/10/24(水) 12:29:22 ]
プログラム演習の初心者からできるいい問題集ありませんかね?
大学生協は置いてなくて・・・
講義では問題解くってことはしないのでorz

329 名前:318 mailto:sage [2007/10/24(水) 12:41:42 ]
>>328
推薦図書/必読書のためのスレッド 37
pc11.2ch.net/test/read.cgi/tech/1190192944/

330 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:42:28 ]
Boland C++ Compiler
が抜けてるな

331 名前:プリンがー mailto:aaa [2007/10/24(水) 12:53:45 ]
>>318
プログラムってどこで実行できるんすか??


332 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:54:43 ]
NG

333 名前:takumi [2007/10/24(水) 14:13:59 ]
XPでvisualstudioを使ってます。
問題:長さ100のint型配列 int a[100]がある。a[0]〜a[99]には整数が収められているする。
この100個の中で一番小さい数を求め、画面に出力するプログラムを作成せよ。
出力形式は「ans.=???」とせよ。???の部分は答え。

なんですが、全くわからないので教えて下さい。。

334 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:08:21 ]
宿題スレへ
pc11.2ch.net/test/read.cgi/tech/1193150915/l50



335 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:24:03 ]
コテ付目欄空欄…
どこの中学生掲示板だよ

336 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 17:59:26 ]
つか入力がわかっているのになぜscanfを使う必要あるんだよ。

337 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:19:58 ]
未経験ということでソフトウェア開発企業に入社したんだけど、whileのところで早速詰まった('A`
0〜9 までの数字を、0 から1個ずつ増やしながら 10行表示しなさいっていうプログラムを作るんだけど、
0
01
012
0123
01234
012345・・・
とはならずに
0
1
2
3
4
ってなっちゃいます。というかそういう風に書いてるのもわかるんですが、
#include <stdio.h>
int main(void)
{
int a = 0;

a = 0;
while(a < 10)
{
printf("%d\n" ,a);
a++;
}

return 0;
}
↑whileの中をどうすればいいんでしょう・・・。

338 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:26:55 ]
while(a < 10)
{
int b = 0;
while(b <= a)
{
printf("%d", b);
b++;
}
printf("\n");
}

339 名前:デフォルトの名無しさん [2007/10/24(水) 21:29:01 ]
#include <stdio.h>
int main(void)
{
int a,b;

for(a=0;a<10;a++)
{
for(b=0;b<=a;b++)printf("%d" ,b);
printf("\n");
}

return 0;
}

340 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:32:40 ]
>>338
ああああありがとうございます!
whileの中にwhile使うとは盲点。
流れも理解できましたありがとうございます!

341 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:35:51 ]
>>340 for文を使ったほうがベター

342 名前:デフォルトの名無しさん [2007/10/24(水) 21:38:14 ]
そこまで出来ないでよく仕事になるな 入って2週間以内とかか? それならいい

343 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:38:43 ]
>>341
そうなんですよね。
他にもwhileを使って、2個入力した文字列が、同じ文字列かどうか判断するプログラムを作ったんですが、
ifelse使った方が手っ取り早かったり、一応基本中の基本ということで頑張ってますが、
とりあえずとことん覚えてみようと思います。

344 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:40:48 ]
>>342
まだ3日目です('A`)('A`)('A`)
初日はOSインスコとかパソコンに関する事を教わって(というか何回もやってきた事なので余裕でした)
二日目は%dやらfloat=小数点やら、long=スゲーでかい数とか、配列とかを覚えて
本日三日目でif else for を覚えたんですが、whileがなんかスゴイ曲者というか、問題がクセものでてんてこ舞いです。。。



345 名前:デフォルトの名無しさん [2007/10/24(水) 21:44:45 ]
>>343
実戦力高めるならSTLだな
たとえば2つの文字列比較するならこうやればいい

#include <iostream>
#include<string>
using namespace std;

main(){
string a,b;
a="こんにちは"; b="こんばんわ";
cout<<a<<" と "<<b<<"は ";
if(a==b)cout<<"一致"; else cout<<"違う";
}

346 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:59:46 ]
行列を計算するときにライブラリって使えるの?
固有値を求めたいんだけど。

347 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:09:40 ]
>>345
初心者(それも++じゃなくてCっぽい)にそんなこと教えたら、
同じ文字列が入ったchar配列を==比較して「あれ? 同じのはずなのに……」てことになるぞ

348 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:16:49 ]
>>346
標準ライブラリーにはない
特殊な科学技術計算用のライブラリーを手に入れるか、自作するか

349 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 08:26:44 ]
>>346
clapack

350 名前:デフォルトの名無しさん [2007/10/25(木) 22:25:22 ]
typedef struct{
int hoge;
int hage;
int hige;
int huge;
} HOGE;
と言う構造体があるとして、hoge = 1; hage = 0; hige = 1; huga = 1;となっているとします。
その構造体の中で、値が"1"になっている物を見付けたいのですが、そういうことはできないですか?
構造体内の変数の値を調べ、それが条件にあっていれば別々の処理をしたいです。


351 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:28:28 ]
Cじゃムリ。
リフレクションのある言語ならできる。

352 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:39:37 ]
意味がわからんぽ

メンバ名で参照したくないって事?
構造体先頭からのオフセットでアクセスするとかかな

353 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:50:11 ]
>>350
配列にしない(できない)理由はあるの?

typedef union{
struct{
int hoge;
int hage;
int hige;
int huge;
}
int array[4];
} HOGE;

354 名前:350 mailto:sage [2007/10/25(木) 22:57:44 ]
>>353
なんですかそれは…
始めてみました。 意味がちょっとわかりません…
その形にしておいて、
HOGE u_hoge;
....
u_hoge.array[0]にしたら、hogeにアクセスできるって事ですかね?



355 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:58:37 ]
共用体でググってくるんだ!

356 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:55:24 ]
だんだんと解ってくると、プログラム書くのが面白くなってくるなぁと思った超初心者な俺。

357 名前:デフォルトの名無しさん [2007/10/26(金) 00:26:59 ]
fgetsで入力した後'\n'を消す方法はありますか?
あまりポインタは使いたくないんですが・・・

358 名前:aho mailto:sage [2007/10/26(金) 00:29:26 ]
>>350
構造体のポインタを利用してみました。

#include <stdio.h>

typedef struct{
int hoge;
int hage;
int hige;
int huge;
}HOGE;

int main(){
HOGE* hogep = NULL;
try{
hogep = new HOGE();
}catch(...){
printf("new error!\n");
}
/* メンバ変数の初期化 */
hogep->hoge = 1;
hogep->hage = 0;
hogep->hige = 1;
hogep->huge = 1;

printf("%d\n", hogep->hoge);

return 0;
}

359 名前:デフォルトの名無しさん [2007/10/26(金) 00:40:51 ]
>>357
fgets(buf, n, fp);
if (buf[strlen(buf) - 1] == '\n') {
buf[strlen(buf) - 1] = '\0';
}

・・・?

360 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:44:21 ]
>>357
fgets(buff, sizeof buff, stdin);
for(i=0; buff[i]; i++) if(buff[i]=='\n') { buff[i] = '\0'; break;}

361 名前:デフォルトの名無しさん [2007/10/26(金) 01:39:24 ]
C++Compiler / Turbo Debugger をzipから解凍したらフォルダに何も入ってなかったんだけど・・・
どこでパス入力するの?

362 名前:教えてください mailto:sage [2007/10/26(金) 03:23:34 ]
C言語についての質問です。
下記の素数か素数でないか調べるコードで、
@変数名にis_primeとありますが、isは何を意味しているのですか?
Ais_prime = 1;とするのがわかりません。
B以下、return 0; まで、どういう流れかわかりません
よろしければ1行ずつ教えてもらえるとうれしいです。

#include <stdio.h>

int main(void)
{
int num, i, is_prime;

printf("判定したい数を入力してください: ");
scanf("%d", &num);

/* 約数があるかどうか調べる */
is_prime = 1;
for(i=2; i<=num/2; i=i+1)
if((num%i)==0) is_prime = 0;

if(is_prime==1 && num > 1) printf("素数です");
else if (num > 1) printf("素数ではありません");

return 0;
}

363 名前:デフォルトの名無しさん [2007/10/26(金) 03:44:59 ]
num is_prime なんだろ

364 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:08:18 ]
>>362
適当な数字入れて処理追いかけてみろよ。



365 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:13:38 ]
なんにもわかってないってことかよw

366 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:02:57 ]
>>362
You is fool.






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

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

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