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


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

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



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

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

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

702 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:39:00 ]
>>680
> 16ビットCPUのポケコンを購入
> インタプリタで動作するCが組み込まれていて

メーカー教えて


703 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:51:08 ]
文字配列とポインタで質問です

char *str[]={”山田”、”井之上”、”御手洗”、”鈴木”};

とした場合
配列は

char
str[0][0]="山", str[0][1]="田", str[0][2]="\0", str[0][3]="\0"
str[1][0]="井", str[1][1]="之", str[1][2]="上", str[1][3]="\0"
str[2][0]="御", str[2][1]="手", str[2][2]="洗", str[2][3]="\0"
str[3][0]="鈴", str[3][1]="木", str[3][2]="\0", str[3][3]="\0"
str[4][0]="\0", str[4][1]="\0", str[4][2]="\0", str[3][3]="\0"

と自動で入って各行の配列の先頭のアドレスが*str[1]や*str[2]に入ってるんでしょうか

704 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 06:59:57 ]
いいえ

705 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:04:34 ]
という事は

> char *str[]={”山田”、”井之上”、”御手洗”、”鈴木”};

これはどういう状態でしょう?

706 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:06:51 ]
文法エラーの状態です

707 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:10:23 ]
本に載ってる型の定義をそのまま写してみたんですがorz

ちょっとそのまま書いてみて試してみます

708 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:12:47 ]
全角/半角、クォーテーション/ダブルクォーテーションに注意

709 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:19:55 ]
char *str[]={"山田","井之上","御手洗","鈴木"};

文法ってそっちでしたかorz
これでよろしいですか?

710 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 07:55:59 ]
ちょっと眠気で頭が鈍くなってきたけど

山田、井之上、御手洗、鈴木はそれぞれメモリのどこかに書き込んで
*str[0]〜[3]にはメモリのそれぞれの文字列の先頭アドレスが入ってるってことかな




711 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 08:18:26 ]
>>710
str[0]〜[3]にはメモリのそれぞれの文字列の先頭アドレスが入ってるってこと
だと思うよ

712 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 08:26:49 ]
あぁそっか*をつけるとアドレス先の中身だっけ
まだ微妙に疑問点あるけどひとまず寝ます
頭が動いてないorz
ありがとう

713 名前:デフォルトの名無しさん [2007/09/11(火) 13:47:31 ]
文字列の質問です。

1から100の自然数を”1”から”100”という文字列に変換せよ

って問題ですけど、どんなプログラムになりますか?

714 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 13:53:24 ]
for文で回してsprintf使うとか。

715 名前:デフォルトの名無しさん [2007/09/11(火) 14:16:56 ]
char** func()
{
int i,j = 0;
char *cp[100]={'\0'};

for(i = 0; i < 100; i++)
cp[i] = ( char *)malloc(sizeof(char)*4);

for(j = 0,i = 1; i <= 100; i++,j++)
sprintf(cp[j],"%d",i);

return cp;
}


716 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 14:46:08 ]
そりゃないだろw

717 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 14:52:54 ]
>>715
変数の寿命を…

718 名前:デフォルトの名無しさん [2007/09/11(火) 15:50:26 ]
>>715
さっきは適当に書いて張りました
以下ソース
char** func(char **cp, size_t n)
{
int i,j = 0;

for(i = 0; i < n; i++)
cp[i] = ( char *)malloc(sizeof(char)*4);

for(j = 0,i = 1; i <= 100; i++,j++)
sprintf(cp[j],"%d ",i);

return cp;
}

719 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 15:57:14 ]
for(i = 0; i < 100; i++)
sprintf(cp[i],"%d ",i+1);

これでいいじゃん

720 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 16:08:13 ]
>>718
nが配列のサイズならループの最大値100にすんな
引数で渡してる奴を戻り値にすんな



721 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 16:28:09 ]
ポインタの100個の配列もmallocすればいいのだ
でも質問者は完全版を求めてるの?

722 名前:718 mailto:sage [2007/09/11(火) 16:29:51 ]
>>720
たしかにそうだね
オナニーしようかしまいか迷ってる最中に
書き込んだクソソースなんで
あんま吟味しないでね

723 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 16:39:01 ]
何かアプリケーションを作ろうと思ったらCとC++どっちがいい?

724 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 17:10:17 ]
伺系アプリの間違いだと信じたい

725 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 17:57:45 ]
>>702
また難儀な・・・
押入れから引っ張り出してきたよ
あ〜なつかしぃい

CASIO PERSONAL COMPUTER FX-890P 16-bit CPU
(液晶の枠部分に書かれている文字)
しかもこれ専用(?)のフロッピーディスクドライブ&そして(確か)増設メモリまで買ってしまったはず
起動したらまだ動く(リチウム電池は空)

(スレチスマソ)

726 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 18:09:21 ]
>>725
姉妹品?のZ-1ならもってた
捨てちゃったけど

727 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 18:17:14 ]
>>726
これかな?
ttp://www5.plala.or.jp/igjhmc/calc/z-1.html
っていうかキー配列とか同じだ
FX-890Pの文字がZ-1になってるぐらい

728 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:04:06 ]
bcc32を使っているのですが、c言語のソースプログラムのファイル名に、
list1-1.cのように「-」を使ってもいいのでしょうか?

729 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:06:40 ]
いいよ

730 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 19:59:08 ]
>>723
C++のほうがお勧めかな。

理由
C++を勉強すると、Cも勉強できる。
C++を知っているとJavaとかも簡単に理解できる。



731 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:39:29 ]
C#

732 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:44:32 ]
printfとputsはどっち使えばいいですか?
皆さんどっち使ってます?

733 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:48:28 ]
>>732
用途による

734 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:50:23 ]
>>732
使っているのは断然 printf だよ
printf を使うことで処理速度に問題が出るようなコードは書いてないから

735 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 20:58:22 ]
賢いコンパイラは適当に最適化してくれるから、printfつかっとけ。

736 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:44:59 ]
<double>
43 23
<apple>
100E+02 102E-8 102E-12
<leon>
23E+01 12E-02
<kon>
24 23.3

とかいうファイルからE表記の数値だけを抜き取るにはどうすればいいですかね?


737 名前:736 mailto:sage [2007/09/11(火) 22:45:47 ]
<double>
43 23
<apple>
100E+02 102E-8 102E-12
<leon>
23E+01 12E-02
<kon>
24 23.3
とかかれたファイルからですね。ファイル名はlist.txtとしておきます。

738 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 22:52:38 ]
>>737
// 使用法 a.exe < list.txt
#include<stdio.h>
#include<string.h>

int main(void)
{
char buf[100];
double value;
int pos;

while(scanf("%s", buf)==1)
{
if(strchr(buf, 'E')!=NULL)
if(sscanf(buf, "%le%n", &value, &pos)>=1)
if(buf[pos]=='\0')
printf("%e\n", value);;
}
return 0;
}

739 名前:736 mailto:sage [2007/09/11(火) 23:13:38 ]
やってみます

740 名前:736 mailto:sage [2007/09/11(火) 23:14:44 ]
ありがとうございます



741 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 23:16:58 ]
(゚Д゚≡゚Д゚)エッナニナニ?

742 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:40:36 ]
入力した文字を逆にして出力したいのですが
#include <stdio.h>
#include <string.h>
int rev (char *);
int main()
{
char str[100];

printf("文字を入力してください\n");
gets_s(str);
rev(str);
printf("逆にしたのはこれです\n");
printf(str);

return 0;
}
int rev (char *str)
{
int i=0;
char str2[100];
size_t len;
len=strlen(str);
while(len>=0){
str2[i]=str[len];
i++;
len--;
}
str=str2;
return 0;
}



743 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:41:11 ]
なぜかlenのカウントも増えていくんですけど何処がおかしいですか?

744 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:49:36 ]
>char str2[100];
>str=str2;
とりあえずこれはまずい
「C言語 スコープ」とかでぐぐれ

745 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 02:50:27 ]
関数からの見える範囲でしたっけ
ちょっと調べてみます

746 名前:問題 [2007/09/12(水) 03:04:16 ]
問題:ポインタで操作しなさい
char moji[] ="ABCDEF〜XYZ"; /*最大文字26文字*/
char *pc;
pc=moji;

結果
moji:ABCDEF〜XYZ
開始位置==>B
終了位置==>F
表示:BCDEF

moji:ABCEF〜XYZ
開始位置==>D
終了位置==>D
表示:D

moji:ABCDEF〜XYZ
開始位置==>E
終了位置==>B
表示:EF〜XYZAB


747 名前:746の続き [2007/09/12(水) 03:05:46 ]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print(char* s, char* e)
{
printf("表示:");
for( ; s <= e ; s++ ) putchar(*s);
puts("");
}
int main(void)
{
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *pc = moji, *pcstart, *pcend, start, end;

while(1) {
printf("moji:%s\n開始位置==>", moji); scanf("%c", &start);
printf("終了位置==>"); scanf("%c", &end);
pcstart = strchr(moji, start);
pcend = strchr(moji, end);
if( pcstart == NULL || pcend == NULL ) break;
if( pcstart <= pcend ) print(pcstart, pcend);
else print(pcend, pcstart);
}
}

この問題でどうしてもエラーが出るんですが何方かわかる方がいましたら教えてください



748 名前:デフォルトの名無しさん [2007/09/12(水) 03:14:23 ]
>>742
void rev(char *str)
{
int len = strlen(str);
int i;
char temp;
for(i = 0; i<len/2; i++)
{
temp = ary[i];
ary[i] = ary[len -i-1];
ary[len -i-1] = temp;
}
}

749 名前:742 mailto:sage [2007/09/12(水) 03:16:21 ]
>>746
ちょ・・・ヒントかなぁって思って頑張って書いてたよorz

750 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 03:21:16 ]
>>747
エラーってどんなエラー?
scanf("%c"〜の挙動を理解してないとかそんなオチ?



751 名前:742 mailto:sage [2007/09/12(水) 03:26:59 ]
>>748
sry[i]って初めて見るんですけどこれはなんでしょう?
参考に組ませて頂きます

752 名前:742 mailto:sage [2007/09/12(水) 03:27:42 ]
×ary[i]
○ary[i]
でしたね

753 名前:746の者です [2007/09/12(水) 03:29:31 ]
警告 W8012 07.cpp 7: 符号付き値と符号なし値の比較(関数 MojiSearch(char *,char *) )
警告 W8012 07.cpp 8: 符号付き値と符号なし値の比較(関数 MojiSearch(char *,char *) )
警告 W8004 07.cpp 5: 'j' に代入した値は使われていない(関数 MojiSearch(char *,char *) )

↑がエラー内容です
6ヶ月ぶりにCに触れたんですが仕組みを忘れちゃってどう直せばいいのかわからなくなってしまったんですよ^^;

754 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 03:31:52 ]
まずそのソースうpしる
>>747にMojiSearchなんて関数ないだろ

755 名前:デフォルトの名無しさん [2007/09/12(水) 03:32:34 ]
>>747
scanf実行後stdinには'\n'が残っていて
後のscanfが'\n'をとりこんでしまってる。
一応getc(stdin)で取り繕って変更したソース
の一部を載っける
int temp;

while(1) {
printf("moji:%s\n開始位置==>", moji);
scanf("%c", &start);
temp =getc(stdin);
printf("終了位置==>");
scanf("%c", &end);
temp =getc(stdin);

756 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 03:40:33 ]
>>753
それはエラーじゃなくて警告って言うんだよ

757 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 04:30:43 ]
>>753
signedとunsigned比較してんだろ
3つ目の警告は見たまんま

758 名前:742 mailto:sage [2007/09/12(水) 05:06:22 ]
>>748
#include <stdio.h>
#include <string.h>
void rev (char *);
int main()
{
char str[100];

printf("文字を入力してください\n");
gets_s(str);
rev(str);
printf("逆にしたのはこれです\n");
printf(str);

return 0;
}
void rev (char *str)
{
int i=0,len=strlen(str);
char str2;

printf("文字の長さは%dです\n",len);
for(i=0;i<len/2;i++){
str2=str[i];
str[i]=str[len-i-1];
str[len-i-1]=str2;
}
}
ary[i]がまだ謎だけど出来たよ、ありがとう

759 名前:746 [2007/09/12(水) 10:35:45 ]
自分で書いた方のソースがvoid rev (char *ary)だったんで
レス欄にコピペしたとき、「ああ、strか」と思い
aryの部分をstrに全部書き換えたつもりだったが
中途半端に書き換えちった
というわけ

760 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 10:48:01 ]
警告を無視する奴は、とりあえず渓谷に行って来い



761 名前:742 mailto:sage [2007/09/12(水) 15:41:36 ]
>>759
なるほど
あえて自分で考える事が出来たし結果オーライだったw
lenの-1も気づかなかったしなorz

スコープについてはまだ良くわかってないけど・・・

762 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 22:46:17 ]
スマソ スコープについて調べろってのは勘違い
str2へのポインタを関数の外で使おうとしてるのかと思った

763 名前:デフォルトの名無しさん [2007/09/12(水) 22:55:14 ]
2点質問があります。
1.関数で配列全体を呼び出しもとに帰すにはどう記述すればよいのでしょうか?
例)a[0],a[1],a[2],a[3]といった、算出した値を配列要素としてではなく、配列全体をreturn文で返す
方法がわからずにおります。
2. 1+X+X^15で生成する疑似ランダムデータの作製法がわからずにおります。
どうかご教示願います。

764 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 22:58:17 ]
>>763
マルチポストですか?
ttp://pc11.2ch.net/test/read.cgi/tech/1188748806/278

765 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:03:43 ]
やさしいCを打ち込み終了し他の本も色々調べたのですが、
ポインタとかを理解するにはPICを勉強したほうが分かりやすいですか?

766 名前:デフォルトの名無しさん [2007/09/12(水) 23:05:53 ]
>>764
急いでいるのでマルチポストをしてしまいました。申し訳ございません。


767 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:07:33 ]
>>765
問題をやった方が良い

768 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:31:22 ]
>>764
大体、関連した話題を扱うスレッドには同じ人が見にきているものだ。
だからマルチポストするとすぐに見つかってしまう。しかも反感を買い回答が得られなくなる。
だから1箇所に投稿し、回答が得られるまで自分でも必死こいて調べるべし。

769 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:33:34 ]
>>765
問題をやるのがいいな。

770 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 23:56:35 ]
>>767,769
ありがとうございます。問題を解くことからはじめます。



771 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:41:58 ]
>>771
宿題スレの問題をやってみるとか。

いろんな人が同じ問題を問いて解答も出してくれるので、
自分とここが違う、とか、これはこうやって実現するのか、とか、
いろいろ気づくところがあるかも知れないよ。


772 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:42:28 ]
>>771>>770にだよう。自分に言ってどうする。


773 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:49:26 ]
標準ライブラリ関数を使わずに、コンソールに文字列を出力してみようと思い
システムコールのwriteを使ってみたつもりです。

#include <unistd.h>
int main(void) {
char s[] = "test\n";
write(1, s, sizeof(s));
return 0;
}

Cygwin の gcc 3.3.3 で、-ansi -Wall -pedantic -fno-builtin で
コンパイルできて、期待した動作になりました。

で、glibc-2.6.1の io/write.c を見ると

/*
続く


774 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 02:54:40 ]
続き、少しインデントを変えています。
*/

#include <sysdep.h>
#include <errno.h>
#include <unistd.h>
#include <stddef.h>
ssize_t __libc_write (int fd, const void *buf, size_t nbytes)
{
if (nbytes == 0) return 0;
if (fd < 0) {__set_errno (EBADF); return -1;}
if (buf == NULL) {__set_errno (EINVAL); return -1;}
__set_errno (ENOSYS); return -1;
}
libc_hidden_def (__libc_write)
stub_warning (write)

weak_alias (__libc_write, __write)
libc_hidden_weak (__write)
weak_alias (__libc_write, write)
#include <stub-tag.h>


write.c にはこれだけしかないのですが、
fd の値や *buf 内のデータなどは、どこで使われているんでしょうか?

たとえば buf は NULL とだけ比較していますが、
実際に fd に向かって buf を書き込む(?)処理は、どこでやっているんですか?


775 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 11:37:00 ]
>>773
www.sixnine.net/cygwin/translation/faq/faq_3.html#SEC88
>Cygwin は glibc を提供しません。
>代わりに、同じ機能の大部分(全てではありません)を提供する newlib を使用します。
>glibc を Cygwin へ移植するのは難しいでしょう。

776 名前:問題 [2007/09/13(木) 11:59:26 ]
何方か今から掲示する4問の問題が合ってるか教えてください(パソをメンテに出していて手元になくて調べられないんです^^;)
キーボードより表示開始文字と表示終了文字を入力し、開始〜終了までの文字を表示しなさい
char moji[]="ABCDEF〜XYZ"; /*大文字26文字*/
実行画面
moji:ABCDEF〜XYZ
開始位置==>B
終了位置==>F
表示:BCDEF

moji:ABCDEF〜XYZ
開始位置==>D
終了位置==>D
表示:D

moji:ABCDEF〜XYZ
開始位置==>E
終了位置==>B
表示:EF〜XYZAB









777 名前:776の答え [2007/09/13(木) 12:00:14 ]
moji:ABCDEF〜XYZ
開始位置==>B
終了位置==>F
表示:BCDEF



778 名前:776の答え(777ミスです) [2007/09/13(木) 12:01:06 ]
#include <stdio.h>
#include <ctype.h>

int main(void)
{
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /*大文字26文字*/
char start, end, *p;

printf("moji:%s\n", moji);
printf("開始位置==>");
scanf("%c", &start);
fflush(stdin);
printf("終了位置==>");
scanf("%c", &end);
fflush(stdin);

if(!isalpha((int)start) || !isalpha(end)) return 1;
start = (char)toupper(start);
end = (char)toupper(end);

p = moji + start - 'A';
for(;;)
{
putchar(*p);
if(*p == end) break;
if(*(++p) == '\0') p = moji;
}
return 0;
}


779 名前:問題2 [2007/09/13(木) 12:04:11 ]
文字列と削除文字列を入力し文字列中から削除文字を排除しなさい
実行画面
文字列入力(m1)==>ABCDEFAABCDABC
削除文字==>A
結果文字列(m2):BCDEFBCDBC

780 名前:問題2の答え [2007/09/13(木) 12:05:38 ]
#include <stdio.h>
#include <string.h>

#define MAX 256

int main(void)
{
char str[MAX],ch;
size_t sz_str,i;
printf("文字配列入力(m1)==>");
fgets(str,sizeof(str)/sizeof(str[0]),stdin);
sz_str=strlen(str);
printf("排除文字==>");
ch=getchar();

for(i=0; i<sz_str; i++) {
if(str[i]!=ch) putchar(str[i]);
}

return 0;
}




781 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 12:25:21 ]
この形式の問題何回目だよwwwww

782 名前:デフォルトの名無しさん [2007/09/13(木) 12:34:12 ]
くだらん質問なんだけど
バッファサイズを256とか512みたいな16の倍数にしてるコードよく見るけど
そうするとどういう効果があるの?

783 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 12:34:49 ]
単にキリがいいから使ってるだけ

784 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 13:12:50 ]
どっちかっつうと2の乗数だが、キリが良いから

785 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 13:17:36 ]
>>784
2の乗数っていうか、2の羃だね。

786 名前:デフォルトの名無しさん [2007/09/13(木) 13:23:03 ]
キリがいいからか
漏れもなんとなくキリがいいから使ってたよw
サソクス

787 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 13:33:44 ]
文系グラマは100とか1000使うのかな

788 名前:デフォルトの名無しさん [2007/09/13(木) 13:46:38 ]
main関数の戻り値ってどういう時使うんですか?

789 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 13:55:42 ]
>>788
コマンドインタプリタで該当プログラムの終了ステータスとして利用する。

790 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 15:03:30 ]
>>788
他のプログラムから起動させたとき



791 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 16:22:48 ]
>>788
#!/bin/sh

if ./a.out; then
 echo "成功" # main が 0 を返した時
else
 echo "失敗..." # main が 1 を返した時
fi

792 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 20:54:10 ]
printf("%6.1f",123.45);
を実行すると
123.5
となるのはなぜですか?
123.4になぜなりませんか?

793 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 20:57:12 ]
一つしたの桁を四捨五入するから。

794 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 21:01:27 ]
>>793
thx

795 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 01:02:02 ]
>>775
ありがとうございます。newlibですか。

ではCygwinはおいといて、>>774はglibcの実装についての質問とさせてください。
glibcのwrite.cで定義されている __libc_write の仮引数の使われ方について
なぜこの引数でfdへ書き込みがおこなわれるのでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 02:17:33 ]
たぶんそのソースは実際にコンパイルされるコードじゃない。
システムコールをどうやって呼ぶかはOSやCPUによって異なるから、それはただのプレースホルダだろう。

ざっとみてみたところ、sysdeps/unix/syscalls.listからmake-syscalls.shで自動生成されるんじゃないかと思った。
でも複雑すぎて追いきれん。
実際に特定のターゲット向けにビルドしてみて、生成されたファイルを見なきゃ判らなさそう。

797 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 02:41:12 ]
>>795
その関数はターゲット用のwrite()が存在しない場合に使われるダミー関数。
writeしても呼ばれない。

798 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 08:46:05 ]
0: -19.312 -0.144 -0.996 1.412 -0.173 1.933 3.954 4.917 6.333 1.552
-1.515 -1.667 -0.151 0.230 -0.024 0.083 0.377 0.665 0.722 -0.195
-2.321 -1.814 -0.133 0.515 1.343 0.000
1: -19.304 -0.162 -1.799 4.184 1.255 -0.393 -0.335 0.469 1.268 -2.177
-2.390 0.198 -0.151 -0.086 0.111 0.100 0.038 1.462 0.937 -0.569
-0.975 -1.590 -0.486 -0.450 0.133 0.000
2: -18.166 -0.254 -0.178 1.909 2.438 6.705 5.126 -4.463 -0.205 2.752
1.499 4.116 -0.151 0.167 -0.024 -0.312 -0.069 1.179 0.724 -0.214
0.460 -0.921 0.742 0.284 -0.377 0.000

こうかかれたファイルから小数点のところだけ
とりだして二次元配列にいれるにはどうすればいいすかね?
小数点のところ26個あるんですけど。



799 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 09:33:40 ]
コロンの後まで飛ばして読み込め

800 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:16:37 ]
指定したパスに、ある拡張子のファイルが存在するか調べるために
_dos_findfirstを使用して、BCCでコンパイルしたら
> Warning W8053 2007-09-14_1.c 11: '_dos_findfirst(const signed char *,unsigned int,find_t *)'
> is obsolete in function main
という警告が出ました。obsoleteとは「旧式の、廃れた」という意味です。
これに代わるものはありますか?



801 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:26:11 ]
>>800
dos.hの_dos_findfirst()か、_dos_xxxは古いわなあ。
io.hの_findfirst()でどうか。

802 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 11:32:30 ]
>>801
なるほど、ありがとうございました。






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

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

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