1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37] いろんなスレが乱立していますが、統合的なスレッドがないので立てました。 質問もOK 関連スレ C#って死滅する理由がないよね! Part4 pc2.2ch.net/test/read.cgi/tech/1042464104/ C#最強伝説 pc2.2ch.net/test/read.cgi/tech/1061208152/ C#とJava、どっちをおぼえればいいの? pc2.2ch.net/test/read.cgi/tech/1006715468/ C#Builder Professional 質問箱 pc2.2ch.net/test/read.cgi/tech/1062433418/ 関連リンク dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/
552 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 21:35:49 ] >>551 マルチうざい
553 名前:デフォルトの名無しさん [2006/02/04(土) 16:45:57 ] 構造体についての質問です。 #include<stdio.h> struct string{ char *a;}; struct string data[]={ "a","b","c","d",}; int main(){ struct string *p; char *s; int i; scanf("%s",&s); p=data; for(i=0;i<=3;i++){ if(s==(p+i)->a){ printf("%s\n",(p+i)->a);}} return 0; } 以上をコンパイルして実行した場合、scanfで入力した値がa~dのどれかでも if(s==(p+i)->a)が真と判断されないのですが、間違いについての教唆をお願いします。
554 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 16:57:35 ] >>553 >間違いについての教唆をお願いします。 教え唆すのか?
555 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:13:29 ] そそのかされてどうする俺… 普通に間違いについて教えてほしいです
556 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:23:21 ] たとえば、scanf で "abc" という文字列を読み込んで、 それらの文字一つ一つ( 'a' とか 'b' とか 'c' とか '\0' とか・・・)は メモリの何処に保管されるのさ? 今、値を記憶できる変数の領域は string 構造体のアドレスを保持する p と char のアドレスを保持する s と int の値を保持する i しかないぞ?
557 名前:582 mailto:sage [2006/02/04(土) 18:00:29 ] >>553 よーし、パパそそのかしちゃうぞ。 よくコンパイル通ったな。 構造体のメンバが char へのポインタ1つだけと判っていれば、 構造体配列 = { char*その1, char*その2, ・・・ , char*そのn } なんて初期化が許されるのか ・・・ 知らなかった (マジ ここは、 struct string data[]={ {"a"}, {"b"}, {"c"}, {"d"} }; じゃなきゃ い神埼だと オモテタ。 でも、バグの本質は、>>556 の指摘のとおり。 scanf() で、ポインタ変数にコンソール入力しようとしているが、おまえには特定の char の場所を示すポインタ ( アドレス ) が判るのか? メモリの中身に詳しいヤツ だな。
558 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 18:23:12 ] 本当に唆しているだけだなお前ら。
559 名前:553 mailto:sage [2006/02/04(土) 19:25:32 ] >>556-557 charで*でなく適当な長さの配列を宣言して if()で照会するのは2つの配列[0]に格納した値…ってことですね。 どうみても俺の勉強不足です。本当にありがとうございました
560 名前:デフォルトの名無しさん [2006/02/13(月) 03:43:09 ] 関数を定義するときに void xxx(int yyy) int A; char B; { 〜〜〜 } こんなふうに書かれたものを良く見かけるのですが このときAとBは何か特別なものなんですか?
561 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 08:39:53 ] >>560 void xxx(int yyy) { ...; } ならば、古いスタイルで void xxx(yyy) int yyy; { ...; } となるがそのことだろうか。 それならばプロトタイプ宣言のなかった時代の名残だ。
562 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 10:34:29 ] Borland C Compilerのエラーメッセージについて詳しく解説している 『bcc32_messages』というファイルがあるのですが(中には数百のHTMLが 入っていて、エラーと警告1つ1つに細かい説明が書かれている)、どなたか これの英語版がどこにあるかご存じないでしょうか?
563 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:47:15 ] COMMAND getCommand(char *c) { int i, j, k, l, len; char comtmp[128], fileNametmp[128], comExtmp[128]; COMMAND command; len = strlen(c); for(i=0; i<len+1; i++){ if(c[i] == '-'){ for(j=0; c[i]!='\0'; j++){ i++; if(c[i] == '@'){ comtmp[j] = '\0'; for(k=0; c[i]!='\0'; k++){ i++; /*printf("\nc[%d] = %c\n", i, c[i]);*/ if(c[i] == '>'){ /*printf("\n>>in\n");*/ for(l=0; c[i]!='\0'; l++){ i++; comExtmp[l] = c[i]; printf("\nc[%d] = %c\n", i, c[i]); } }
564 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:48:36 ] if(c[i] == '\0'){ comExtmp[k] = '\0'; command.com = malloc(sizeof(char)*(strlen(comtmp)+1)); command.fileName = malloc(sizeof(char)*(strlen(fileNametmp)+1)); command.comEx = malloc(sizeof(char)*(strlen(comExtmp)+1)); strcpy(command.com, comtmp); strcpy(command.fileName, fileNametmp); strcpy(command.comEx, comExtmp); return command; } fileNametmp[k] = c[i]; } }else if(c[i]!='\0'){ comtmp[j] = c[i]; } } }else if(c[i]=='\0'){ break; }
565 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:52:41 ] } command.com = NULL; command.fileName = NULL; command.comEx = NULL; return command; } 質問です。 このプログラム、-xxxxxx@yyyyyy>zzzzzz (x, y, z は不定) という文字列から command.com = xxxxxx command.fileName = yyyyyy command.comEx = zzzzzzz に文字列を分けて入れるプログラムです。 printfが変なところに3つあるのはデバッグのためなのですが、上から3つ目のprintfをコメントアウトするとバグが起こり、 コメントアウトしないでprintf出力するとバグが起こりません。なぜでしょうか? -insert@123.bmp>rgb と入力した時、fileNameにstrlen()で文字列数を調べたところ、 3番目のprintf()をコメントアウトしなかった場合、7文字と正確に入っていて。 コメントアウトした場合、11文字とでます。 コンパイラーはbccの5.5で、windowsXPを使用しています。 Σ( ゜д゜)うわ プログラム超見づらい。 すみません;;
566 名前:542 mailto:sage [2006/04/22(土) 00:08:46 ] ほら、皆間違えるw
567 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 18:37:12 ] 実行ファイル(***.exe)の作成の仕方がわからないのですが…。
568 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 15:38:33 ] >567 一行目に #!/bin/sh って書いて chmod +x してから、ファイル名に.exeをつけるだけだよ。
569 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 21:47:48 ] 今日はじめてc言語のテキストを買いました。 初心者です。 コンパイル時?に インクルードファイル ’stdio.h’をおーぷんできない とエラーメッセージが出てきました テキスト読んでもわかりません 解決方法があれば教えてください
570 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:20:47 ] >>569 きちんとインストールしたか? 特にBorland C++ならbcc32.cfgなど。
571 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:41:25 ] >>570 どもです cfgファイルを作ったんですが コンフィグレーションファイル中の オプションの間違い と 難しいですね
572 名前:デフォルトの名無しさん [2006/04/28(金) 07:22:00 ] コンパイルするとstudio.hが見つからないと出るのですが、バグですか?
573 名前:デフォルトの名無しさん [2006/04/28(金) 07:29:26 ] stdio.hだよ。studioじゃない。
574 名前:デフォルトの名無しさん [2006/04/28(金) 11:15:51 ] stdioがスタンダードI/Oだって知らないのかな
575 名前:デフォルトの名無しさん [2006/04/28(金) 17:05:46 ] Cmachineと言うフリーソフト持っている方いませんか? 公開終了してたので・・・orz 持ってる方うpお願いします…
576 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:08:37 ] >>575 C のスレと間違うならまだしも、まるっきりスレ違い。 阿呆は帰れ。
577 名前:575 [2006/04/28(金) 17:19:26 ] >>576 書き忘れましたが、C言語のソフトです・・・ あほですいません・・・orz
578 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:19:52 ] 初心者で本当にすみません scanf関数を使っていたときに、パラメータに"&"を付け忘れました 俺のPCはあぼーんですか?
579 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 21:30:13 ] >>578 心配なら再起動しろ。
580 名前:578 mailto:sage [2006/04/28(金) 23:13:51 ] >>579 ありがとうございます。 さっき電源落としたんで、後で立ち上げてみます。 授業でscanf習った時に先生に死ぬほど脅されてたんで正直ガクブルです
581 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 00:34:50 ] ワロタ
582 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 01:04:58 ] -|"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" bcc32.cfg コンフィグレーションファイル中の オプション間違い:-|"c:\Borland\Bcc55\include" というエラーが出てしまいます どうすればいいでしょうか? 教えてください。
583 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 02:22:18 ] |とIが区別出来るフォントを使えばいいと思うよ
584 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:16:12 ] >>583 ホントですか? 半角入力にですか。 テキストでは |とl の区別がなく書いてあるのでわかりずらいです。
585 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 12:28:03 ] >>583 ありがとうございました |とiの違いですね。
586 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 15:13:16 ] warota
587 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 11:27:23 ] >>580 死ぬほど脅すくらいなら、最初っから教えなきゃいいのになぁ。
588 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 13:47:17 ] LSI C-86 Ver.3.30 試食版のことでお尋ねします、OSはWindows2000です エスケープシーケンスを使いたいと思ってなんとか使えるようにはなりました。 しかし、カーソルを全角用の2文字分の長い方に変えるのはどうやってやったらいいでしょうか
589 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 15:34:00 ] ↑同じ質問を違うスレでしていますが、いろいろ試行錯誤した結果での話です 決してマルチをしようとしたつもりはございません 何なら無視して頂いてもかまいません
590 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 16:20:17 ] それ以前にスレ違いだ。 >>1 を読んでいないことがバレバレだぞ。
591 名前:デフォルトの名無しさん [2006/05/08(月) 16:23:18 ] >>1 よりもスレタイが重要だと思う。
592 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 17:36:16 ] だから間違えたって言ってるだろ
593 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 20:57:59 ] ttp://cgi.2chan.net/up2/src/f137696.txt このコードをCygwinでコンパイルした結果 $ gcc -o client client.c client.c: In function `main': client.c:14: error: storage size of `server_adrs' isn't known とエラー吐かれたのですが、修正方法が分かりません 修正方法教えていただけませんか?
594 名前:593 mailto:sage [2006/05/08(月) 22:09:10 ] すいません、ソースURL間違えてました ttp://namihei.zone.ne.jp/upup/up/56166.txt です、お願いします
595 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 11:45:14 ] >>593 だから激しくスレ違いなんだってばさ。 書き込む前に>1を読むとか直前の数レスを眺めるってこともできないのか? cygwinスレかネットワークスレ辺りで聞いて味噌。
596 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:49:10 ] スペースで区切られた文字列を分割する関数を作ります。 ・連続するスペースはひとつの区切りとしない ・スペースがない場合は全ての文字列を返す ・頭や後ろにつくスペースは無視 ・返す文字列がない場合はNULLを返す ・初期値の文字列はNULLを引数に与えている間に変更されないもとする ・#include<string.h>は使わない ですが、さっぱりわかりません。 どうか教えてください。
597 名前:596 [2006/05/09(火) 20:57:45 ] 引数は( char * , const char * )です。 第1引数は区切られた文字列の格納先 第2引数はスペースで区切られた文字列(次の文字列を探す時はNULLを指定) です。
598 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 20:59:26 ] 宿題なら宿題のスレッドへ行くが吉。
599 名前:デフォルトの名無しさん [2006/05/10(水) 00:11:15 ] #include <stdio.h> main(){ float x=0.0; double xx=0.0; long i,n=100000; for(i=1;i<=n;i++){ x=x+1/(float)(i*i); xx=xx+1/(double)(i*i); } printf("from 1/1^2 to 1/%d^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x); x=0.0; xx=0,0; for(i=n;i>=1;i--){ x=x+1/(float)(i*i); xx=xx+1/(double)(i*i); } printf("from 1/%d^2 to 1/1^2, x(dbl)=%f, x(flt)=%lf\n",n,xx,x); } 1/1^2+1/2^2+・・・+1/100000^2を計算するプログラムを作成せよという問題で、1/1から加えたときと1/100000から加えたときとそれぞれフロートとダブル型の4パーターン 比較する課題なんですが、実行するとバグってしまします。このプログラムのどこおかしいですか?コンパイラはborlandgccです
600 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:16:41 ] >>599 まずおかしいのはスレッドの選び方。ここはC♯のスレッドです。 次におかしいのは日本語。パーターンってなんです? またおかしいのはコミュニケーション能力。バグってしまうだけでは何も通じません。 更におかしいのはコンパイラ。borlandなのかgccなのかはっきりなさい。
601 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:13 ] >>600 すげー眠いのでもうだめです。今日はねます。すいませんでした
602 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:18:31 ] >>599 >>595 は見えてますか?
603 名前:デフォルトの名無しさん [2006/05/10(水) 00:23:46 ] ここをC言語のスレとして扱っちゃ駄目なのか? >>599 iが65536以上の時、i*iは32ビットでは表現できないので、オーバーフローしているんだろう。 (double)(i*i)の代わりに(double)i*iとすればいい。
604 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:31:29 ] >>603 動作するようになりましたが、結果がおかしくなりました
605 名前:デフォルトの名無しさん [2006/05/10(水) 00:54:51 ] >>604 ごめん、括弧が要る。 ((double)i*i)
606 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:57:38 ] >>603 >ここをC言語のスレとして扱っちゃ駄目なのか? じゃ、重複スレなわけね。
607 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 01:01:02 ] そういうことになるな。
608 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 13:23:27 ] じゃ削除だね
609 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 15:33:33 ] そういえば3月・4月のスレ削除依頼がまだ処理されてないな。
610 名前:デフォルトの名無しさん [2006/06/03(土) 01:37:14 ] f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める 初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力する方法を教えてください。
611 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:03:53 ] >>610 細かな調整は勝手にやれ #include <iostream> using namespace std; double f(double x){ double fx; fx = cos(x) - x*x ; return fx ; } double bisection(double a, double b,double (*)(double),int prc); int main(){ double a,b; double k; cout << " a : " ; cin >> a ; cout << " b : " ; cin >> b ; k = bisection(a,b, f,100); cout<<"cos(x) - x^2 := " << f(k) << " at " << k << endl; return 0; } (2分法は次)
612 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 11:04:35 ] 続き double bisection(double a, double b, double (*func)(double ),int prc){ if (func(a)*func(b) >= 0) return a; //意味ないし a で十分w double up, lo , m; if( func(a) > func(b) ){ up = a; lo = b ;} else { up = b ; lo = a; } double workprod; int workint ; int counter=0; while(1){ m= (up + lo)/2; workprod = func(m); workint = ((int)(workprod * 1000000)); // /100.0; if(workint==0){ cout << "counter value = "<< counter <<endl; return m; } if(workint > 0) up=m; if(workint < 0) lo=m; counter++; if (counter > 20000) break; } return 0.0; }
613 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:55:14 ] >>611-612 1.宿題に答えるのはスレ違い 2.>>1 も読めないカスは失せろ
614 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 23:02:06 ] >>613 1? 笑わせるなヨ ここは元々利用価値のないクズスレ 悔しかったら削除依頼出して来いヤw 612も読めねえクズが
615 名前:デフォルトの名無しさん [2006/06/03(土) 23:14:16 ] カススレ晒しage
616 名前:デフォルトの名無しさん [2006/06/03(土) 23:20:45 ] すいません、初心者なのですがdupという関数について教えてください。 openしたファイルポインタAをdupで複製?した場合というのはAをclose すれば複製したファイルポインタもcloseされるのでしょうか? dupの認識が違っていたらすいません
617 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:27:25 ] 単利計算と複利計算を行うプログラムについて、質問させてください。 環境はWindowsXP.VS.NET2003。Win32コンソールアプリケーションです。 void main() { float a,r,c;/*r:金利c:複利*/ int i,y,method; /*預ける年数*/ printf("いくら預けますか?"); scanf("%lf",&a); printf("何年間預けますか?"); scanf("%d",&y); printf("運用方法を設定してください。単利なら0,複利なら1を入力してください。"); scanf("%d",&method); if(method==0){ printf("金利はいくら(%%)ですか?"); scanf("%f",&r); for(i=1;i<=y;i++){ a +=a*(r/100); } printf("元本は%f円になります\n",a); } else if(method==1){ printf("複利はいくら(%%)ですか?"); scanf("%f",&c); for(i=1;i<=y;i++){ a = a*(1+r/100); } printf("元本は%f円になります\n",a); } else printf("終了します。\n"); } ですが、いざ元本を出そうとすると、Stack around the variable 'a' was corrupted. と表示されてしまいます。お力添えの程出来たらよろしくお願いいたします。
618 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 10:03:00 ] >>617 > scanf("%lf",&a); scanf系において%lfはdobuleを意味する。 floatを使う必要なんてない。全部doubleでいい。 そもそもお金が絡むのに浮動小数点数を使ってよいのかという問題もあるが。 void main()を使う必要もない。int main()でいい。
619 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 21:18:38 ] >>618 ありがとうございました。 単利の計算が間違っていた(複利と一緒だったorz)。 ので直しましたが、それ以外はうまくいきました。 小数点以下は二桁まで取ることにしました。 ありがとうございました。
620 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:02:45 ] scanf("%d",&r); scanf("%d",&h); A=ff (r,h); ff=f2; V=ff (r,h); printf ("表面積=%f 体積=%f",A,V); return 0; }(後は省略) この問題でhとrをよみこみたいんですけど こういうふうに書くとどんな数字を読み込んでも答えが0になって しまうんですけどどこが間違ってますかね・ ちなみにscanfのかわりにh=1とかって定義すればしっかり値はでます。
621 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:03:58 ] すいません途中しかコピペしてませんでした。こんな感じです #include <stdio.h> #define PAI 3.14159 double a,b,r,h,A,V; double f1 (double r2,double h2); double f2 (double r2,double h2); main(void) { double (*ff)(double r2,double h2); ff=f1; scanf("%d",&r); scanf("%d",&h); A=ff (r,h); ff=f2; V=ff (r,h); printf ("表面積=%f 体積=%f",A,V); return 0; }
622 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:14:35 ] うはぁ、突込みどころが満載だ。 ・doubleで計算したいならPAIは精度が足りない。 ・そもそもPAIってなんだよw ・変数は極力グローバルに置かない方がいい。 ・f1()とf2()が外部にあるなら、宣言はインクルードファイルで行なう方がいい。 ・関数名は特別な理由でもない限り、中身が判る名前にしよう。 ・main()の戻り値型は書くべき。 ・実験的にやってみたいだけなら止めないが、関数ポインタを使う必然性がない。 ・scanf()で型指定子を%dにするならint *を渡す必要がある。 ・逆に、double *を渡したいなら型指定子は%lfだ。 ・そもそもここはC♯の立て損なったネタスレだ。
623 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:19:13 ] ほんと、ごめんなさい でも解決しました><
624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:23:44 ] 愚かな俺に教えて下さいまし、みなさま・・・ BYTE byData = 0x0f; byData = byData << 4; (VC .net SP 適用なし) これ実行すると byData が 0 になる。 3 ビットシフトだとちゃんと 0x78 になるのに・・・。 なぜだぁぁぁぁぁ!!
625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:47:36 ] >>624 自己解決 VC .net のシンボルウォッチのバグですた・・・ おぃおぃ、VC6 から劣化してどーすんのよ MSさん〜〜orz
626 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 05:49:05 ] 2つ整数を入力して商と剰余を求めるんですが・・・ 20-6=14 14-6=8 8-6=2 3回引いたので商が3、剰余は2、というふうに求めろ、という問題です。 商は4、剰余4と出てしまいます。 #include <stdio.h> void main(void) { int a,b,c,d,e,f; printf("2個の正の整数を入力\n"); scanf("%d %d",&a,&b); if (b>=a) { c=b; b=a; a=c; } d=a-b; e=1; while (d>=0) { d=d-b; e=e+1; } printf("商%d 剰余%d",e,d); }
627 名前:デフォルトの名無しさん [2006/07/19(水) 07:17:44 ] d>=0だったら一回余分に計算しちまいますね・・・ 自己解決しました。スレ汚しすんません。
628 名前:デフォルトの名無しさん [2006/08/15(火) 08:13:19 ] 巨大な乱数ファイルの後ろから1文字ずつ消していき、 ファイルサイズを2GByteにすることってできますか? ファイルサイズを取得するまではいけたのですが、 1文字ずつ消す方法がわかりません。 消す方法はありませんか?
629 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:09:04 ] >>628 一文字ずつじゃなきゃいけないの? ファイルサイズを単純に切り詰めるだけでいいならbsd/POSIX系関数で truncate()/ftruncate()なんてのがあるけど。
630 名前:デフォルトの名無しさん [2006/08/15(火) 11:14:03 ] #include <stdio.h> void mystrcpy(char *strA, char *strB); int main(void) { char str1[11], str2[11]; puts("Input str1[11]"); fgets(str1, 10, stdin); mystrcpy(str1, str2); printf("str1 = %s\n", str1); printf("str2 = %s\n", str2); return 0; } void mystrcpy(char *strA, char *strB) { int i; for(i=0; *(strA+i); i++){ *(strB+i) = *(strA+i); } } strcpy関数を自分なりにつくっていたところ、上のようなものができました。 ですがコンパイルして実行すると文字列のコピーはうまくいっているものの、 変な文字列(文字化けした文字)も出力されてしまいます。 どこらへんがおかしいのでしょうか? (環境はWinXPHome、コンパイラがBorland C++ 5.1.1です) また、先週からC言語を勉強し始めたのですが、 ポインタを引数にしたり戻り値として利用するところが自分には少々難しいと感じています。 何かわかりやすい本やウェブサイトがあったら紹介していただけないでしょうか。
631 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:19:39 ] >>630 文字列の終端の'\0'をコピーしていない。
632 名前:630 [2006/08/15(火) 11:31:59 ] おお、まさにその通りです。 助かりました。 while(*(strB++) = *(strA++)); として解決しました。
633 名前:デフォルトの名無しさん [2006/08/15(火) 13:35:40 ] >>629 一文字ずつじゃなくてもいいのですが、 ケツから2MByteくらいを消したいんです。 学校の課題なんで、切り詰めるだけでもばれないとは思いますが・・・。 #もし乱数データじゃなかったらばれるか。 #でもメモリ足りなくて開けないし・・・。
634 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 11:48:34 ] ここってC#スレ?
635 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 08:22:41 ] CとC#を一緒にすんなヴォケ
636 名前:タイトルのシャープが剥がされることも知らないのだろうか mailto:sage [2006/10/15(日) 10:39:11 ] >>635 >1
637 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 10:46:47 ] 立てた奴の意図などどうでも良い。
638 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 14:28:51 ] >>633 き ゃ ぴりん ☆ き っく ! でググれ
639 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 13:56:33 ] 質問です。 const int getHoge(){ return m_nData;} というように、返り値にconstをつける意味はなにかあるのでしょうか? ポインタなどを渡している場合ならわかるのですが、intやshortの場合の必要性がわかりません。
640 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 16:38:07 ] >>639 製作者がconstなんだと叫びたいとき。 というのは冗談だが、Cではともかく、C++では違いが全然ないわけではない。 int foo(); const int bar(); template<typename T> void hoge(T& x); void f() { hoge(foo()); //エラー:xはint&になるが、非constな参照型のインスタンスは右辺値で初期化できない。 hoge(bar()); //xはconst int&になり、constな参照型のインスタンスは右辺値で初期化できるのでエラーにならない。 } まあ普通はこんなことを気にする必要はない。
641 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 17:04:47 ] >>640 ありがとうございます。 微妙な違いですね。 別のことを試してみたところ、const int getHogeは、 int n = getHoge() とできてしまいました。全然constじゃないじゃん! 「エラー値とかだから計算する必要ないでしょ!だからconst!」って使い方をしようかと思ったのですが…。 素直にエラーはenumで型つけてやるほうがよさそうです。 ありがとうございました。
642 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 18:50:47 ] >>641 そりゃぁ代入しちゃえばconst性は失われますがな。 でないと、int foo = 100;すらできなくなってしまう。
643 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 10:06:58 ] /libpathの指定でProgram Filesみたいな空白のある場合ってどうすればいいのでしょうか? #pragma comment (linker, "/libpath:\"/Program Files/XXX/lib\" ") としてみましたがうまく動いていないみたいです includepathの指定も#pragma でできないのでしょうか?
644 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 21:14:26 ] DrawStringでタブ"\t"を表現する方法を教えていただけないでしょうか 検索しようにも上記単語だと難しいので困ってます
645 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 11:40:13 ] 方法 : 描画されたテキストにタブ ストップを設定する msdn2.microsoft.com/ja-jp/library/2c6tzes6 (VS.80).aspx
646 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 12:51:09 ] >>645 ありがとうございます そちらの参照先のように、決められた形(というのでしょうか)で表現したいのではなく 1 \t 222 \t 333 44444 \t 555 と表示する場合に3と5の表示開始位置が揃うようにしたいのですが 方法はないでしょうか
647 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:26:01 ] 学校の課題で使うのですが、ガウスの消去法で4行4列の式を解くプログラム乗ってるサイトありますか? サイトから引っ張ってきていいと言われたので・・・ 探したんですけどいっぱいあってどれが正しいのかわかんなくて
648 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:37:54 ] 結果が正しければどれでもいいのでは
649 名前:131 [2007/01/25(木) 21:12:22 ] すみません、誰か分かる人はいませんか? どうしてもC言語でJPEG画像を表示したいんです。 おねがいします。
650 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:22:39 ] 適当に解凍してただのビットマップを取り出せばいい。
651 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:47:22 ] jpeglibとかあるだろ
652 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 22:01:39 ] 次に131がレスするのは2010年頃と予想