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


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

C言語なら俺に聞け(入門編)Part 94



1 名前:デフォルトの名無しさん [2011/12/23(金) 22:51:14.19 ]
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 93
toro.2ch.net/test/read.cgi/tech/1322866566/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 154代目
hibari.2ch.net/test/read.cgi/tech/1322562648/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

2 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 23:38:13.24 ]
printfの書式文字列で size_t や time_t や long long の数値を表示したい時は、どんなふうに書けば最も移植性が高いの?

3 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 23:38:49.15 ]
で、それをgettext のリソース中に書くにはどうしたらいいの?

4 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 23:48:19.00 ]
unsigned char const*const format_str =
#ifdef __GNUC__
"GNU式〜"
#elseif _MSC_VER
"MS式〜"
#elseif __BORLANDC__
"BCC式〜"
#elseif …
"…"
#else
"仕方が無い〜"
#endif
; /* close format_str */

5 名前:デフォルトの名無しさん [2011/12/24(土) 00:38:20.44 ]
#include<stdio.h>
int main(void)
{
char x;
x='A';
}

エラーが出た。
何で?

6 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 00:45:40.29 ]
エラーみりゃわかんだろ。

7 名前:デフォルトの名無しさん [2011/12/24(土) 02:41:29.07 ]
#include <stdio.h>
int main(void)
{
int ar[3];

printf("ar=%p\n", ar);
printf("&ar=%p\n", &ar);
printf("&ar[0]=%p\n", &ar[0]);
printf("(&ar)[0]=%p\n", (&ar)[0]);

return 0;
}

ar=0028FF14
&ar=0028FF14
&ar[0]=0028FF14
(&ar)[0]=0028FF14

これ何でみんな同じ場所になるの? 特に2、4行目とか

8 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 03:18:18.23 ]
int a = 0;
a = 0;
&a = 0xffffffff;
&a[0] = 0;
(&a)[0] = 0;
このうち&aは特別

9 名前:デフォルトの名無しさん [2011/12/24(土) 04:19:02.90 ]
#include<stdio.h>
int main(void){
char first, last;
first = "kojima";
last = "yosio";
printf("姓=%s\n", first);
printf("名=%s\n", last);
return 0;
}

これどこか間違ってるみたいだけど、わからないので教えてください><

10 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:23:40.13 ]
>>9
firstとlastを定義してるとこの型がおかしい



11 名前:デフォルトの名無しさん [2011/12/24(土) 04:44:40.52 ]
>>つまり、どうすればいいのですか?

12 名前:デフォルトの名無しさん [2011/12/24(土) 04:45:36.88 ]
11ミス
>>10
つまりどうすればいいのですか?

13 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:19:09.59 ]
>>9>>12
char first, last;

char *first, *last;

14 名前:9 [2011/12/24(土) 09:00:26.22 ]
ありがとうございましたm(__)m

15 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 09:03:56.78 ]
いえいえ

16 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 10:28:17.09 ]

 東京にある6つのキー局の内、製作から財務まで一貫して朝鮮人が行ってるテレビ局が1つ
 中国共産党から毎年大量の反日工作費が流れているテレビ局が2つ
 もろに北朝鮮と繋がっているテレビ局が1つ  
宮城県庁を訪問する谷垣禎一(自民党)と松本龍(民主党)
www.youtube.com/watch?v=5uF_aN-0fbQ

自民党と民主党の違いw


17 名前:デフォルトの名無しさん [2011/12/24(土) 15:48:05.16 ]
#include<stdio.h>
#include<math.h>
char *Parity();
int main(void){
int num;
char *pari;
printf("整数を入力してください。\n");
scanf("%d", &num);
pari = Parity(num);
printf("%s\n", pari);
return 0;
}
char *Parity(int nn){
char *parit;
if (nn % 2 = 0){
parit = "even";
}
else {
parit = "odd";
}
return parit;
}
ifの行にエラーが出るのだけど、どうしてですか?

18 名前:デフォルトの名無しさん [2011/12/24(土) 17:44:12.89 ]
mysqlでinsertをwhile文の中で実行すると、command out of sync;のエラーがでるのですが、
while分の中ではできないのでしょうか。
プログラムは以下のようになっています。


19 名前:デフォルトの名無しさん [2011/12/24(土) 17:45:49.24 ]
貼り忘れました。
connect = mysql_init(NULL);
if (!mysql_real_connect(connect, MYSQL_SERVER, MYSQL_USERNAME,
MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT,
MYSQL_SOCKET, MYSQL_OPT)) {
fprintf(stderr, "%s\n", mysql_error(connect));
exit(1); }
if (mysql_query(connect, "select * from mysql where ID!=1")) {
fprintf(stderr, "%s\n", mysql_error(connect));
exit(1); }
result = mysql_use_result(connect);
while ((row = mysql_fetch_row(result)) != NULL) {
      処理
sprintf(data,"replace into mysql values(%f,%f,%f,1)",a,b,c);
if (mysql_query(connect, data)) {
fprintf(stderr, "%s\n", mysql_error(connect));
exit(1);
}
mysql_free_result(result);
mysql_close(connect);
}while文の終了


20 名前:デフォルトの名無しさん [2011/12/24(土) 18:13:01.40 ]
>>14
配列の実体の変数に対し、&をつけてアドレスを取り出した時だけ、同じアドレスが取り出される(ポインタを挟んで参照すると、流石に変わる)みたいだけど、

int ar[N];
ar == &ar

Cではこういう規約みたいなものがあったりするのかな?
それとも偶々か。ちなみにGCC4.5とVC10で試してみた。



21 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 18:31:34.50 ]
>17
if (nn % 2 = 0){

if((nn % 2) == 0){

二重括弧いらないと思うが念のため。

22 名前:デフォルトの名無しさん [2011/12/24(土) 19:02:27.39 ]
>>21
助かりました
ありがとうございました。


23 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:00:49.79 ]
こんなこと聞くのもスレチな気がするんだけど
プログラミングの基礎力を上げるいい方法とか問題ってないかな?

C言語4年やってるけどまだまだわからないことが多すぎて不安になる。
友達に聞かれても迷うことが多くて最近自分が嫌になってきた。

24 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:44:12.73 ]
書いたり読んだりしたら良いとおもうよ

25 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:47:10.48 ]
バッチファイル便利だなぁ...


バッチジョブを終了しますか?ってのはWindows仕様なの?



26 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:51:09.97 ]
#include<stdio.h>
int main(void)
{

char *character;

character='c';

}

ってしたときに、characterの値を変えたい。
関数に渡してcをdに変えたい場合、関数は

char* characterkansu(char *x)
{
x='d';
}

でOK?
呼び出す時は
characterkansu(character);
でOK?

27 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:53:07.31 ]
どちらもNG.

28 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:54:39.08 ]
>>27
どこがダメでしょうか?...

29 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:56:49.14 ]
idef
endif
ってプログラマーじゃない限り知らなくていいでしょうか?
どういうときに使うのですか?

30 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 21:24:50.26 ]
>>26
#include<stdio.h>
int main(void)
{
char character;

character='c';
characterkansu(&character);
}

char* characterkansu(char *x)
{
*x='d';
}

コードがあるのに、これでいいでしょうかって動かす環境なしでやってるってこと?
覚えるのぜったい無理だと思う。



31 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 21:26:02.67 ]
>>23
「Cプログラミング診断室」とか「Cプログラミングの落とし穴」とか、
「C言語 FAQ 日本語訳 」とか「Unix Programming Frequently Asked Questions」とか読め。

32 名前:デフォルトの名無しさん [2011/12/24(土) 21:35:47.91 ]
18,19ですけど、
エラーを直せません。
どなたかアドバイスいただけませんか。

33 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 21:43:48.42 ]
>>19
dev.mysql.com/doc/refman/5.1/ja/mysql-use-result.html
をちゃんと読め

「また、mysql_use_result()が終了するまで、他のクエリーを発行してもなりません。」

回避するには mysql_store_result を使う。

34 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 22:26:49.65 ]
>>29
#ifdef / #endif のことか?
別に職業プログラマじゃなくても、趣味プログラマでも普通に使うぞ
他の条件コンパイル絡みのものとあわせて、例えば…

・デバッグ時だけ処理したい部分があるときに使う
・第二の範囲コメントとして使う
・1つのプログラムでソースファイルが複数になったときに、依存関係を解決するために使う
・複数のプログラムから共用されるようなライブラリを作るときに使う

など…まあ、ある程度の複雑さを持つプログラムを書くなら知っておきたいね

35 名前:デフォルトの名無しさん [2011/12/24(土) 23:08:11.96 ]
>>33
できました。
ありがとうございます。

36 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:15:37.83 ]
>>34
#ifdefや#endifみたいなのって関数っていうんですか?
他に#defineみたいなのは知ってますが、関数より#〜は
数が少ないですよね。

37 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:26:32.64 ]
>>36
関数ではなく、Cプリプロセッサへの指令。Cコンパイラを通る前に処理される。
Cプリプロセッサについて詳しく知りたいならググればいいと思う。

38 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:30:30.62 ]
>>37

#define
#include
とか以外に何かある?#〜


39 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:34:25.46 ]
#pragma

40 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:36:13.71 ]
>>38
あるが、そろそろ自分で調べようとは思わないのかい?



41 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:39:02.49 ]
>>40
#は記号だから日本語と違って調べても出てこない。

42 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:52:02.25 ]
せっかく「プリプロセッサ」という言葉を教えてもらったのに……。

43 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 23:55:45.47 ]
>>42
ありがとうございます。

44 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:14:55.58 ]
プリってどういう意味?

プリレンダリングとか
プリントとか。

45 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 00:35:25.39 ]
>>44
"pre-"で英和を当たれ。

46 名前:デフォルトの名無しさん [2011/12/25(日) 00:45:21.70 ]
microsoft visual studio2008 で"fprintf"の勉強をしています。
"fprintf"でメモ帳やエクセルなどを多量に作っています。
出力先を変更したいのですが、数が多いので手間と時間がかかってしまいます。
コードを一括に変更する方法がありましたら、ご教授をお願いいたします。

47 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:27:09.25 ]
つ[リファクタリング]

そろそろC++に移行する時期だな
出力専用クラスを作れば楽々

48 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:37:51.79 ]
すげぇな、エクセルを作っているのか。それも大量に。

49 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:21:48.58 ]
>28

>>26
>char *character;
>
>character='c';
型が合わない(ポインタ変数に数値(文字コード)入れちゃダメ)。

>char* characterkansu(char *x)
>{
>x='d';
>}
*x='d';
ならこの行でエラーは出ない。
だがchar *の値を返す関数として定義されてるのにreturnが無いのがいけない。
値を返す必要が無いならvoidにする。

50 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:35:30.70 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *character;
*character='c';
}
void change(char *x)
{}

コンパイル成功、実行stackエラー



51 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:39:01.56 ]
「プロセッサ」って言い方が気持ち悪い。
セッサってw
プロセッスとか言わないのに。
「投げキッス」みたいな?w


52 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:40:17.78 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *character;
char word;
word='c';
character=word;
}
void change(char *x)
{
}

これはコンパイルエラー。。。。

53 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:46:49.22 ]
>>50,52
おまえアホだろ
ポインタは「メモリ領域のアドレスを指す変数」なのだから、まずポインタがどのメモリ領域を指すのか初期化しないとダメ。

> *character='c';
初期化されていないポインタ character の指すメモリ領域に 'c' を代入してる。
どこかわからんアドレスにアクセスするのだから実行時に落ちても文句言えない。

>character=word;
式の左辺と右辺で型が異なる。

54 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:47:33.14 ]
>>50>>52
何をやってんの?
いや、何をやりたいのか?と聞いた方がいいか

55 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:48:18.25 ]
>>53
int a;
int *b;
b=&a;

int aa[10];
int *bb;
b=aa;

何故?

56 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:55:54.37 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *x;
x=NULL;

*x='c';

}
void change(char *x)
{
}

初期化したけど、コンパイル→成功、実行→スタックエラー

57 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 03:59:19.86 ]
>>56
やっぱおまえアホだろ。ヌルポインターについてちゃんと読んでこい。
www.kouno.jp/home/c_faq/c5.html

58 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:01:09.33 ]
#include<stdio.h>
void change(char* x);
int main(void)
{
char *x=0;

*x='c';
}
void change(char *x)
{
}

スタックエラー

59 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:02:36.70 ]
>>58
「どこも指していない」ことが保証されたポインタの指すメモリ領域に対して代入を行おうとしたんだから、
そうなるのが当然。

それがあなたのやりたかったことなのか?

60 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:04:35.88 ]
>>49

*x='d';
ならこの行でエラーは出ない。

に従いましたが...

どこが間違えてるでしょうか?



61 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:05:36.12 ]
>>60
あなたが何をしたかったのか分からないけど、プログラムはあなたの書いたとおりに動いているよ。

62 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:06:39.93 ]
>>59
char*型で作った変数aの中身を関数によって変えたいです。

char *a;


関数の戻り値はvoid




63 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:08:39.93 ]
>>62
もしmain関数がその関数を呼び出したいのなら、
変更されるメモリ領域をその関数に対して提示するべきだよな?

main(){
char c;
change( &c );
//FIXME: 変数cの内容を表示して、変更されたことを確認できるようにする
}

64 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:13:28.57 ]
形式的に

char *x;



*x='c';

でエラーでない時って
空の部分どうしたらいいですか?

65 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:24:38.99 ]
>>64
xの内容がヌルポインタだったかどうかチェックを入れて、もしそうなら呼び出し側にエラーを返す。
どのような形式でエラーを返すかはあなたが決めること。

また、ヌルポインタであることが「ありえない」と断言出来る場合にはアサートを入れて
開発版ビルドでのみチェックが行われるようにする開発手法もある。
www.geocities.jp/ky_webid/c/059.html

66 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:25:58.54 ]
char *x;

char d;

d='a';

x=&d;

*x='c';


答えは&ですね。
&以外だと絶対実行エラーでますね..

ありがとうございました。

67 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 08:03:15.23 ]
>>66
&以外でも出ません。

68 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:08:01.15 ]
char * x;
char d[1];
d[0] = 'a';
x = d;
* x = 'c';

69 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:37:04.49 ]
>>31
さんくす。
とりあえず片っ端から勉強してみる。

70 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:28:14.75 ]
総相 川端達夫 帰化人。 在日韓国人法的地位向上議員連盟
法相 平岡秀夫 帰化人。 在日韓国人法的地位向上議員連盟
文科相 中川正春 在日韓国人法的地位向上議員連盟
厚労相 小宮山洋子 帰化人。 在日韓国人法的地位向上議員連盟 自身の選挙区の太平建設と談合
国家戦略相 古川元久 パチンコ協会政治アドバイザー 

韓国人から賄賂を貰っている野田
韓国人の集いに参加している野田
野田は日本人じゃないだろ




71 名前:デフォルトの名無しさん [2011/12/25(日) 11:46:03.01 ]
>>68
配列の場合&いらんのか?ややこしいな...
関数で渡すならなおさらややこしい。

72 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:56:40.70 ]
下記URLに秀丸のDLLの作り方が書かれているのですが
これをVCで作る場合のdllのコンパイルの仕方をご教示おねがいします
ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html

73 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 11:57:19.27 ]
>>71
配列は、[ ] の数が合っていれば値を、
足りなければ配列のある場所を返すからな

74 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:17:06.85 ]
>>72
プロジェクトの構成の種類を ダイナミックライブラリ (.dll) にするだけだと思うが…

75 名前:72 mailto:sage [2011/12/25(日) 12:27:25.61 ]
>>74先生ありがとうございます
まじすか
やってみたのですがうまくいかず難しいです
もしよろしければgithubにhelloworldを返すdllのソースコードを公開していただけないでしょうか?

76 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:29:35.58 ]
>>75
クレ厨死ね

77 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:38:22.25 ]
>>75
>やってみたのですがうまくいかず難しいです

何をやって、どううまくいかないか書けよ。

て言うか、

char* SampleFuncStr() {
static char sz[100];
strcpy( sz, "test" );
return sz;
}

ぐらいは試したのか?

78 名前:デフォルトの名無しさん [2011/12/25(日) 12:38:34.81 ]
>>47
ありがとうございました。
「クラス」がすごく重要なんですね。
そこをしっかりと勉強します。

79 名前:72 mailto:sage [2011/12/25(日) 12:49:00.23 ]
>>77
コンパイルしてみたらVCの下の画面にエラーが出てしまいます

80 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:53:26.48 ]
>>72
エラーメッセージも読めないレベルの人なら、先に普通のアプリが作れるようになってからDLLとか書いた方がいいよ



81 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 13:15:23.36 ]
>>79
>コンパイルしてみたらVCの下の画面にエラーが出てしまいます

>> どううまくいかないか (=エラーの内容ぐらい) 書けよ。

82 名前:デフォルトの名無しさん [2011/12/25(日) 14:02:41.47 ]
ttp://ist.ksc.kwansei.ac.jp/~ibaraki/shokodo/select.c
このプログラム何ですが、実行エラーが出るのですが何故ですか?
皆さんはでますか?僕が間違ってるのでしょうか?
60

3

1
2
.
.
59
60
というテキストファイルを読み込みのために作りました。
コンパイルはエラーがないものの、実行時Segmentation faulが表示されます。


83 名前:72 mailto:sage [2011/12/25(日) 14:16:31.59 ]
すいませんエラーはこれです
>プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。

84 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:24:30.42 ]
HelloWorld.dllを実行しようとしてる?

85 名前:72 mailto:sage [2011/12/25(日) 14:34:08.22 ]
F5を押してdllを作ってます

ソースコードを載せるので添削お願いします
■hello.def
LIBRARY hello

EXPORTS
SampleFuncStr

■hello.h
extern int SampleFunc();

■hello.cpp
#include <string.h>

char* SampleFuncStr() {
static char sz[100];
strcpy( sz, "test" );
return sz;
}

86 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:48:46.32 ]
>>82
>n = 60
>A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
>3-th smallest element = 3

こういう出力が出てきて、正常に実行出来た。
関数selectの名前だけ変えたが。

87 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 14:52:36.32 ]
>>83
>>プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。

ちゃんと >>74 やった?

88 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:04:35.36 ]
>>87
プロジェクト作るときにやりました
defファイルもプロパティのモジュール定義ファイルにファイル名を書きました

またプロジェクトを作り直してF5ボタンでデバッグをやったらさっきのエラーと別に新たに↓のエラーがでました
>HelloWorld.exp : warning LNK4070: .EXP 内の /OUT:hello.dll ディレクティブの指定が出力ファイル名 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' と異なっています。ディレクティブは無視されます。


ソリュージョンのビルドをやると以下の1行しか表示されなくなりましたがdllが作られませんでした
========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ==========

89 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:16:36.69 ]
>>86
それでもスタックエラー出ましたが。
どうしてなんでしょうか....

文書作成ソフトはNotepadです。

3
2
1
2
3

この5行が中身なんですが、
要素数が3 pが2 要素が1 2 3です。


90 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 15:25:50.36 ]
>>89
実行環境は?
OSとコンパイラ名、それぞれのバージョンも



91 名前:デフォルトの名無しさん [2011/12/25(日) 16:21:23.16 ]
>>90

txt保存のとき"ファイル名"でOKでした。

他に自分が、k=l;のところをk=1;でした。

ちなみに、s.cというファイルを作ったとしたら
勝手にs1.cみたいに数字付きファイルが作られている事があるのですが
何故ですか?

92 名前:デフォルトの名無しさん [2011/12/25(日) 16:21:48.04 ]

これは必見
フジテレビ 生放送中に有志による怒りの抗議 (昨夜) (コメント欄に反日工作員が紛れているので注意)
www.nicovideo.jp/watch/sm16518699?user_nicorepo


93 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:26:56.17 ]
>>91
お前解決する気ないだろ

94 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:27:52.71 ]
>>93
解決しました、ありがとうございます。


95 名前:88 mailto:sage [2011/12/25(日) 16:44:52.34 ]
どうかたすけてください

96 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 16:59:39.30 ]
>>95
できてんじゃないの。
ない?

97 名前:デフォルトの名無しさん [2011/12/25(日) 17:02:41.25 ]
7ujm.net/C++/time.html(真ん中)
このページを参考に現在時間を取得しました。
10分後の時間を取得したいのですが、どのようにしたらよいでしょうか。
以下のように行ったところうまくいきませんでした。
sprintf(buff,"%d:%d:%d",pnow->tm_hour,pnow->tm_min+10,pnow->tm_sec);
結果、16:64:55
これを、17:4:55とでるようにしたいです。

98 名前:88 mailto:sage [2011/12/25(日) 17:06:25.11 ]
>>96
debugのところにはdllがあるんですけどソリュージョンでビルドをやったときにdllが作れませんn

99 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:08:17.41 ]
>>97
nowに10分足してからlocaltimeすればいんじゃね?

100 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:10:59.64 ]
>>97
now += 10*60;



101 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:12:54.79 ]
10年前にこの地球が存在していたことを証明するには
どこで計算ができますか?


102 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:15:54.70 ]
仮にこの地球が本物ではないのだとしたら
あなたはいったい誰なんですか?


103 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:16:27.61 ]
登大遊さんが1日に1万行ソース書いたとかいうエピソード見ましたが
凄くないですか?


104 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:17:58.17 ]
書くだけなら猿でもできるし

105 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:18:56.42 ]
1万行はすごいけど、5000行程度なら普通にいるよな。
つまり、すごい人は普通の人の2倍の能力を持つ。

106 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:19:29.23 ]
ttp://d.hatena.ne.jp/softether/20070324
 ↑
一ヶ月数百行???

helloworld出力のソースだけで、 5,6行あるんだが...
やっぱ職業プログラミングってhelloworldと違って複雑で難しいのかな。

107 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:22:10.03 ]
>>105
頭の良さってペーハー的に位置づけるらしいですね。

イメージだと、オイラーが10としたら,アインシュタインが8,シャノンが4くらいかな?

登大遊さんはどれくらいだろう。
少なくとも、彼程の天才今の大学生にいないでしょう。
周り見回しても。

108 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:24:11.85 ]
5000行の内何割くらいがアルゴリズムなんだろう....


109 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:31:58.95 ]
いまどき行数やステップ数で考える人がいるなんて。

110 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:33:46.75 ]
>>109
発注主がそうだと、しかたがないよね



111 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:34:04.84 ]
全くの0から自分の知ってる分野のプログラムを書くなら早いだろうけど
例えば今からEclipseのプラグイン作ってって言われて全く経験ない状態から24時間以内に5000行書いてみろよと

112 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:35:16.45 ]
行数抜きに考えることもまた難しい。

113 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:35:40.83 ]
>>109
ほかに物差しが無いんだから仕方ないだろ。
行数だしとけばお金が引き出せるんだから
むしろ積極的に利用した方がお手軽だぜ。

114 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:40:00.31 ]
#\
i\
n\
c\
l\
u\
d\
e\

とかやったらhello worldで60行くらいいけるな

115 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:44:09.44 ]
Ruby みたいのだと格安になっちゃうな。


116 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:52:38.05 ]
プログラミング環境としてはノートとデスクトップのどっちが
良いですか?やっぱりノートですか?速いし。

117 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:57:11.33 ]
個人で使いやすいもの使っとけよ

118 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:00:13.22 ]
Desktopだと疲れない?

119 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:04:12.63 ]
デスクトップよりタワーの方がいいよ。

120 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:04:16.58 ]
コーダーの上がプログラマの上がシステムエンジニアの上は?



121 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:08:52.16 ]
>>109
>いまどき行数やステップ数で考える人がいるなんて。

じゃあなんで考えるんだよ。

122 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:09:32.43 ]
マジな話すると、ラップトップの小さい画面より、
デスクトップで大きなディスプレイ使って大きめの文字で設定するのが良いよ。

ディスプレイは、やや見下ろす位置に配置、
ブライトネスは暗めに設定、部屋の証明は消さない。
キーボードは体に近付けすぎない、肘が鈍角になる位置まで離す。



123 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:12:07.95 ]
肘の位置重要だわ、死んだ人みたいに肘曲げて寝てる人いるけど、
あれありえないだろw疲れるw


124 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 18:45:07.82 ]

         
平松サイド       橋下サイド

民主党         大阪市民(ナマポ、70代以上の大半を除く)
自民党          
共産党
財界・関西電力
連合・自治労
日教組・公務員
毎日新聞・MBS
解放同盟・反日極左
朝鮮総連・韓国民団(野田の支持母体)
革マル派・中核派


125 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:04:36.56 ]
ノートで仕事すると5時間で死ぬな

126 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:31:39.07 ]
ITドカタやってて、今の現場はPC用意してくれなくて自分で持ち込みなんだけど、
でかいモニターを二つ持ち込んでるのって俺だけで、他はちっこいノートで作業してるから
浮いてて恥ずかしいわ。
eclipseとかあんなちっこい画面でよく使えるわ。

127 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:46:10.86 ]
void MergeSort(int x[ ], int left, int right)
{
int mid, i, j, k;
if (left >= right) /* 配列の要素がひとつなら */
return; /* 何もしないで戻る */
/* ここでは分割しているだけ */
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
/* x[left] から x[mid] を作業領域にコピー */
for (i = left; i <= mid; i++)
temp[i] = x[i];
/* x[mid + 1] から x[right] は逆順にコピー */
for (i = mid + 1, j = right; i <= right; i++, j--)
temp[i] = x[j];
i = left; /* i とj は作業領域のデーターを */
j = right; /* k は配列の要素を指している */
for (k = left; k <= right; k++) /* 小さい方から配列に戻す */
if (temp[i] <= temp[j]) /* ここでソートされる */
x[k] = temp[i++];
else
x[k] = temp[j--];
}

/* ソートされるデータ */
int x[ ] = {9, 4, 6, 2, 1, 8, 0, 3, 7, 5};

MergeSort(x, 0, MAX_DATA - 1);


これトレースして教えてくれ
再帰の部分がいまいちわからん

128 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:47:14.86 ]
URLこれな www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html

再帰の部分はどうやって処理するのかが不明

129 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 21:59:52.95 ]
>>128
説明かいてあるじゃん

130 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:05:38.75 ]
トレースお願い



131 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:34:12.19 ]
エレガントにな。

132 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:38:19.51 ]
ソーと関数の変数定義の後にこれ突っ込んどけ

static int n;n++;printf("呼び出し回数:%d left:%d right:%d\n",n,left,right);

133 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:53:24.54 ]
>>126
持ち込みPCって、情報漏洩(会社、個人とも)でヤバイんじゃないの?

134 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:00:52.06 ]
>>106
試行錯誤の結果行数かもしれない。
あと変幻自在の謎仕様、レガシーコード渡されて「ちょこっと変更すれば出来るだろ?」→解読に数日、とかも。

135 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:11:51.69 ]
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid);
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */

上のMergeSortを呼び出し終わったらどうするの?
最初0,9を渡して、割っていくんですが0,4 0,2 0,1 0,0
そして次のMergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
わかりません


136 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:26:04.04 ]
例えば猫が愛らしい猫なで声で鳴けるのは
猫自身が努力をして試行錯誤を繰り返した結果獲得したのではなく
単にもともと愛らしい猫なで声を身に付けて生まれてきた猫だけが人間に餌を貰えて子孫を残すことが出来たというだけで
愛らしい猫なで声を持たずに生まれてきた猫は人間に餌を分けてもらえず餓死して絶滅したというだけ
生物の進化というのはこういうことを言う
要するに駄目な奴は努力しても無駄だから死ねということ

137 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:29:54.28 ]
確かに努力しても無駄だと思わせる文章だ。

138 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:34:11.41 ]
努力しても無駄な人が書いた文章の見本になるな

139 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:41:52.70 ]
自己解決しました

140 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:22:56.93 ]
そういえばソースの良し悪しを決めるソフトとかってないの?



141 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:48:52.82 ]
こういうのか?
ttp://www.aicp.co.jp/products/codesonar.shtml

142 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:33:02.75 ]
うん

143 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:14:55.02 ]
hello worldを表示するだけのプログラムのexeが50KBもあるのはなぜでしょうか?
C#だと10Kb以下ですが

144 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:35:31.44 ]
ワイルドカード展開するためのプログラムとか入ってるからな。

145 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:46:45.28 ]
www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html
このマージソートがどうしてもわかりません
トレースはどのようになってるのでしょうか?
0 4
0 2
0 1
0 0で MergeSort(x, left, mid); /* 左を再帰呼び出し */0 0を呼び出した後


void MergeSort(int x[ ], int left, int right)
{
int mid, i, j, k;

if (left >= right) /* 配列の要素がひとつなら */
return; /* 何もしないで戻る */

/* ここでは分割しているだけ */
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
returnで何もしないで戻ったら次の MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */を呼び出すのでしょうか?

146 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:48:30.25 ]
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */

ここの下からの処理はいつ実行されるのでしょうか?
ずっと再帰でループしてるように思えますが

147 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:49:52.63 ]
>>143
clつかってるのなら、/MDつければ小さくなるよ

148 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 10:54:11.06 ]
>>145
なんかどっかのすれでも見た気がするけど、returnしてるところで終わる

149 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:01:17.75 ]
>>148
4回目でMergeSort(x, left, mid); これに0,0入れてますよね?
最初に0,9を入れてMergeSortを呼び出して mid=(left+right)/2
0 9
0 4
0 2
0 1
0 0

if (left >= right) return;
つまり 0>=0でreturnなんですが
このreturnを実行したらどうなるのでしょうか?
0 1が返されるのでしょうか?
このreturnがどこに返されるのかがわかりません
0 1を返してまた実行すると mid=(left+right)/2で mid=0
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
ここに入れる?わかりませんが 1 1と呼び出す いまいちわかりません
具体的に流れを教えてくれる方はいませんか?

150 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:10:58.90 ]
>>149
MergeSort(外側)のなかで呼び出したMergeSort(内側)がreturnすると、MergeSort(内側)のところに戻るので、その続きをする



151 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:13:20.73 ]
>>143
perl だと
たった20バイト程度だぞ。


152 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:14:42.69 ]
外側のMergeSortの変数は、内側のMergeSortの変数に影響をあたえないし、逆もしかり。
これはスタックという仕組みで実現されている。

もう少し簡単な再帰から練習したほうがいい。
void recursive_test(int i)
{
if (i > 0) {
recursive_test(i - 1);
}
return;
}
こういうので、いろんなところにprintf入れてみるとかで。

153 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:16:41.16 ]
>>151
斜めすぎだろ。
>>147書いたけど、それにつづけて小さいスタブに変えたらもっと小さくなるとか、せめてそういう方向でたのむわ。

154 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:18:17.75 ]
>>151
まじすか
俺の負けです

ちょっと今/MDつけてみたら6KBになりました
これすごいですね
/MDについて聞いたら怒られそうなので自分で/MDについて調べてみてこのページを見つけました
msdn.microsoft.com/ja-jp/library/2kzt1wy3(v=vs.80).aspx#
つまりこれは実行する環境にlibcpmt.libとmsvcprt.libとmsvcrt.libが入っていないと動かないということですか?
一般的なソフトは/MDつけてコンパイルされて配布されているものでしょうか?

155 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:18:21.21 ]
codepad.org/dAqEkNzj

156 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:36:58.50 ]
>>154
実行する環境にmsvcrt.dllが入ってないと動かない(そのlib群は不要)
んで、それはある程度新しいWindowsなら標準で入ってる
一般的なソフトがどうであるかは知らない

157 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:38:18.62 ]
なるほど勉強になりました

158 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:39:06.90 ]
ある程度新しいというのが気になるかもしれないけど、
ここ10年くらいのWindowsはこれに含まれる。

159 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:43:53.16 ]
MergeSortの回答ありがとうございます
参考にして見ます

160 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:44:28.14 ]
>151
バッチファイル
echo hello world
改行無しで16バイト。

BASICなら中間コード化でさらに小さく。



161 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:49:13.67 ]
>>154
VCで作ったプロジェクトだと、デフォのスイッチに含まれてるから、大半はついていると思っていい

162 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 11:49:14.54 ]
>BASICなら中間コード化でさらに小さく。
行番号で2バイト、
PRINTの中間コードが・・・2バイトか?
hello worldで11バイトだか、文字数とか範囲指定とか必要だろうからさらに数バイト。
16バイトより小さくはならんだろ。


163 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:08:14.58 ]
Hコマンド最強。

164 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:13:02.69 ]
Hボタン連打

165 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:26:32.71 ]
連打ッス!

166 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 14:05:35.06 ]
マージソートって難しくない?
再帰普段使わないし
見たけど難しいな

167 名前:デフォルトの名無しさん [2011/12/26(月) 14:19:20.24 ]
mySQLを扱う際に、whereを用いて制限をかけようと思うのですが、
セグメンテーション違反になってしまいます。
a=3;
if(mysql_query(connect,"select * from テーブル where ID >"+a)){
変数を扱うところが原因だと思うのですが、
どのように直したらよいのでしょうか。

168 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 14:20:16.26 ]
とりあえず基本的な理屈だけ覚えとけばいい。
どうせ実際に使う機会がある頃には記憶薄れて忘れちまってるからな。


169 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 14:33:08.55 ]
>>167
select * from テーブル where ID > 数値 という文字列を渡すことを期待しているようだが
C言語で 文字列の連結は + で表せないぞ

十分に大きい文字配列 buf があるとして
sprintf(buf, "%s%d", "select * from テーブル where ID >", a);
mysql_uery(connect, buf);
こうなる

170 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 14:57:45.96 ]
sprintf(buf, "select * from テーブル where ID > %d", a);
こっちの方がクエリパラメータっぽくていいかもしれんね。



171 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:03:35.41 ]
パラメータ中に printf フォーマット文字が入ったらいやーんな感じなので %s で受けるようにたけど
例題中じゃ出てこないから 後者で十分だったようだね

172 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:22:58.52 ]
一番初心者向きのC環境何ですか?
簡単なグラフィックが利用できたらいいなと思っています。
例えば、黄色い四角形を出力するプログラムとか作りたいです。


図書館でC関係のグラフィック関係の本漁りましたがWindows以前(1995年より前)
の本が7割くらいで……



173 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:26:02.93 ]
likeを使うとしても、%を含めてリプレイスするのが一般的だから、入ることはないかと。

174 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:26:06.69 ]
>>172
Turbo-C 2.01


175 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:28:09.67 ]
>>172
Visual C++ & glut


176 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:35:13.40 ]
今連結リストの方方向リストを使って入力した値をいれてっれ中央値を表示させようとしてるんですが、どうやって値をソートすればいいのでしょうか?

バブルソート使って、値が入力された時にソートしようとしているのですが、どうしてもできません。よろしくお願いします。

177 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:38:32.35 ]
できますよ。

178 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:38:37.06 ]
>>174
>>175
ありがとうございます。参考になりました。

179 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:14:58.06 ]
>>176
何ができないのか具体的に書け。
ソース全く出さずに、1から全部書いてもらおうとしているのか?

180 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:16:54.64 ]
>>179
どう考えても1から全部書いてもらおうとしてると思うけど、どう考えても質問に答えてもらえるとは思えない



181 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:18:12.85 ]
ここで>>180を覆す回答者が!CMの後で!

182 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:22:42.90 ]
                    , - , -─ - 、
                   /:::::::::::::::::::::::::::::::::`‐、
                 /::::::::::::::::::::::::::::::::::::::::::::::\
                /::::::::::;:ィ::::::::';:::::::::::`ヽ::::::::::::::ヽ
                ,'::::::;':::/ l:::i::::::ヽ:::\:::::::';:::::::::::::::',
                  i:::l::::i:/  ';:::';:::::::',\::ヽ:::::::::::☆:::
                l::l::;イ__, ヽ、ト、::::ヽ、\:',ヽ〃l::::::   >>176さん
                  ';l l::l      ` ‐-   l:::::l::::::  こ、ここ、これ読んで下さいっ!
                 l::::l == 、    ,.ィ== l:::::l:::::::::
                 l:::::li //////////// l:::::l::::::::::    
               , -ーl::::lヽ、  r....::´`ヽ /l:::;'> 、:::::
           , -ー 、'´`ヽl::::l// ` ‐-r‐ァ' ´ ,':/ー、  ';
            /  , ノ `   l::::l   li /ニく /⌒ヽ  \.i
        , └ '´  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / ノ__  ',  ,イ:
      /     \ (⌒⌒)       ,  └ '´ /   i/
    /            ヽ / ー '       /  /,.イ
   ∠ __                    /  / /
          ̄ ̄ ̄プ ー r── -------/-‐'´ /

      | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
      |                    |
      |                    |
      /    ̄ ̄ ̄ ̄      /_____
      /   お断りします    /   //
    /      ハ,,ハ        /  / /
    /     ( ゚ω゚ )     /  /  /
   /   ____     /  /  /
  /             /  /  /
/             /    /  /

183 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:47:33.78 ]
#include <stdio.h>
#include <time.h>

int main(void){
time_t t;
time(&t);
printf("%s", ctime(&t));
return 0;
}
を実行したら↓みたいになってエラーがでるんですけどこれはコードをどう直したらよいのでしょうか?

------ ビルド開始: プロジェクト: Test, 構成: Debug Win32 ------
test.c
d:\source\vc++\projects\test\test\test.c(7): warning C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 10.0\vc\include\time.inl(86) : 'ctime' の宣言を確認してください。
Test.vcxproj -> D:\source\vc++\Projects\Test\Debug\Test.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

184 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:50:33.38 ]
>>183
エラーじゃないよ。

警告 ctimeはあぶないのでctime_sを使ったほうがいいです。この警告がうっとうしかったら _CRT_SECURE_NO_WARNINGS を定義してくださいな。

ってかいてる。

185 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 16:57:08.62 ]
ありがとうございます
書き方はこんな感じでよいでしょうか?
直すところがございましたらご指摘お願いします

#include <stdio.h>
#include <time.h>

int main(void){
time_t t;
char c[26];
time(&t);
ctime_s(c,sizeof(c),&t);
printf("%s",c);
return 0;
}

186 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:04:07.20 ]
ctime_sとかってvisual studioのみでしか使用できないんじゃなかったっけ
つまり問題ないから直さなくていいって感じで記憶してるけど
警告がうっとおしいと思うなら_CRT_SECURE_NO_WARNINGSを定義するって感じで

187 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:06:45.42 ]
値比較後の要素交換の記述
双方向のリストなら単純にいけそうだけど、単方向リストだと自分の1個前が欲しくなるから面倒

(ex. i番目 j番目の交換が発生 リスト繋ぎ変えでi-1 と j-1 が欲しくなる

188 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:10:14.02 ]
他環境に移植できなくするためのMSの罠だよ。

189 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:16:22.88 ]
visual studioとかvisual C++って無償?


190 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:28:03.88 ]
ありがとうございます
セキュリティーコードということを検索して理解しました
メモリが汚れるのはいやなので警告をオフにしたいと思いますが
検索してttp://sunrisebyeast.blogspot.com/2011/07/crtsecurenowarnings.htmlにたどりついたのですが
#pragma warning(disable:4996)をtest.cの1行目に書いたんですが警告が消えません
僕が使ってるのはVC++2010なんですが2008念のバージョンじゃないとダメってことですよね?
今VC2008のバージョンがないので探しているのですが見当たらず、2010でも警告を消す方法ってございませんか?



191 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:38:12.54 ]
すいませんプロパティのプリプロセッサに_CRT_SECURE_NO_WARNINGSを書いたら出来ました
ttp://tiano.cocolog-nifty.com/tears_diary/2007/09/vc_2005_6591.htmlを参考にしてできました

192 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 17:51:17.46 ]
>>189
無償版もある。てかそれくらいはぐぐってください

193 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:07:11.17 ]
実行すると tarou.name = "tarou";の部分で
error C2106: '=' : 左のオペランドが、左辺値になっていません。
ってエラーがでます
どこが問題でしょうか?
#include <stdio.h>

struct profile {
int age;
char name[10];
int sex;
};

int main(void){
struct profile tarou;
tarou.age = 21;
tarou.name = "tarou";
tarou.sex = 0;

printf("%d - %c - %d", tarou.age, tarou.name, tarou.sex);
}

194 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:23:32.71 ]
strcpy()使え

195 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:37:32.17 ]
>>194
strcpy使ったら出来ました
なんでstrcpy使わないとだめなのですか?

196 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:47:36.17 ]
せめて入門書の一冊も読んでからにしてくれないか?

197 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:48:31.78 ]
struct profile tarou = {21, "tarou", 0}なら出来るとおもう

198 名前:196 mailto:sage [2011/12/26(月) 18:52:20.68 ]
言い過ぎたごめん

199 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:53:20.28 ]
tarou.nameはポインタだから、そのプログラムだと初期化するかstrcpyするかじゃない
ユーザーに入力を促すようなものだとscanfつかって出来る

200 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:54:05.41 ]
あと%cじゃなくて%sね



201 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 18:57:45.25 ]
>>199
勘弁してくれ

202 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:03:04.04 ]
ああ、tarou.name[0] = 't';って一つ一つ入力する方法あるか

203 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:10:37.55 ]
初心者スレなのに適当なことばかり。

204 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:11:25.98 ]
>>199
tarou.nameは確かにポインタを生み出すコードではあるけれど、tarou.nameは配列と言うべきタイミングだろ。
ということを>>201が言いたいんだろうので同意。

205 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:15:03.11 ]
って置いてけぼりにするところだった。

>>195
一般に、配列(文字列=文字配列)に配列を代入することはできないため。
それをしたい場合は、memcpy、特に文字列をコピーしたい場合にはstrcpyを使う。

初期化の場合は別だし、構造体でラッピングしたものを利用して代入を行うこともできるけれど、それは後から覚えればいい。

206 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:25:01.72 ]
リテラルを書き換えられない設計にしてるのがおかしい

207 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:26:59.45 ]
× ポインタ
○ ポインター


208 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:28:04.87 ]
JISはまだ変わってなかろ。

209 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:34:11.15 ]
JASに従えよ。

210 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:37:38.30 ]
tarou.nameは配列の先頭要素へのポインタであって配列ではないよね



211 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:43:38.03 ]
>>210
構造体のメンバ名だよ。って返せばいいのか?何をしたいのかわからん。

212 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:44:41.11 ]
struct {
char *taro;
char hanako[10];
};

213 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:50:37.68 ]
>>210
tarou.name自体は配列
ポインタとして解釈される場合に配列の先頭要素へのポインタに変換されるだけ
sizeof(tarou.name)の結果を考えてみろ

214 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:59:09.61 ]
そりゃ型が違うだけ。
char[10]型ってことだろ。

215 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 00:59:53.58 ]
テトリス作りたいのだが、time関数はいるわけ?
テトリスが落ちる時間ってtime関数だよな?

216 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:02:19.02 ]
mySQLって具体的にどんな用途があるの?
聞いたことあるけどイマイチ利便性が分からない。

217 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:09:53.98 ]
>>216
データ管理で重宝してる。
機能をCで一から組んだら大変だと思う。

218 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:24:24.37 ]
>>217
は?ライブラリみたいな?

219 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:27:59.19 ]
組み込み用途ならSQLiteのほうが使い勝手はいいよ

220 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:40:04.03 ]
テレビとかイメージでも会社でパソコン打ってる風景って良く見るけど、
あいつらってプログラム組んでるの?何してんだろ。



221 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 01:46:26.97 ]
パソコン使う仕事って全部プログラミング?

222 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:07:02.67 ]
プログラマ以外でずっとパソコンに向かってる仕事ってデザイナーとかCADとかのイメージがあるな

223 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:10:32.94 ]
経理とか総務とかは思い浮かばないの?

224 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:14:45.19 ]
丸一日向かい合うほど経理するとは想像できなくて

225 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:24:49.58 ]
ホワイトカラーなら、今時はどんな職種でもPCに向かって仕事すんじゃねーの?

226 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:30:36.14 ]
何をするのかがわからんってのに、向かうだろって言われてもなぁ。
ホワイトカラーでPCに向かわない職種なんてくさるほどあるし…

227 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:48:20.41 ]
仕事せずに、サーフィンしてるのかもしれない

228 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:52:21.78 ]
天皇さまですらPC使ってるのに

229 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 05:21:29.11 ]
明らかにキーボードだけをカタカタカタカタしてるよな。
テンキーもマウスも使う素振りもない。

230 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 05:54:32.60 ]
日がな一日書類を書いていたら殆どマウスに触る必要もないが、
一般事務職でそこまでショートカットに精通している奴は少ないと思う。



231 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 06:00:14.70 ]
それはそうと、pthreadを使ったスレッドプールの手頃なサンプルないかな。
pthread_cond_wait()が意外に使い難くて参った。

232 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 06:48:49.97 ]
引きこもりが熱く語る「僕の考えるパソコンを使った事務仕事」とか笑えるわ

233 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 07:17:16.15 ]
>>232
>230のことを言っているなら、それを書いたのは会社員の私だ。

234 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 09:13:32.51 ]
>>231
www.google.co.jp/search?q=pthread_cond_wait+%E4%BD%BF%E3%81%84%E6%96%B9

235 名前:231 mailto:sage [2011/12/27(火) 09:34:21.72 ]
>>234
それで見つかるところは大抵最低限の使い方だけなんだよね。
この板のマルチスレッドのスレでも同じように梃子摺っている質問は幾つか見つかるのに、
具体的な回答が見つからないし。

236 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 13:10:19.29 ]
具体的に何をしようとしてどうなったか書いてないと答えようがなくね?

237 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:56:47.40 ]
>>215
clock()のほうが良いと思いmath

238 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:58:54.71 ]
clock は精度が秒の環境もあるぞ。

239 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:53:33.36 ]
WindowsならtimeGetTime()かQueryPerformanceCounter()を使うしな

time()はかなり機種依存的性格を持っている

240 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 16:57:23.48 ]
DOSの時は走査線待ち。



241 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:31:40.69 ]
ヒープソートを書いたのですが
codepad.org/gQnTXtfr
最後の20 10が整頓されません
どうすれば昇順になるのか教えてください

242 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:48:08.47 ]
自己解決しました
for(i=N; i>2; i--)あるべきでした

243 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:11:58.83 ]
C言語でこのスレに書き込めるプログラム教えてください

244 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 20:34:02.21 ]
平松邦夫/民主党
大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ
・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞
・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派

VS

橋下徹/維新の会
大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫
 様子見:公明


245 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:50:51.04 ]
>243
ttp://www23.atwiki.jp/psp_2ch/
適当に選べ。

246 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:17:50.61 ]
Windowsでコンソールプログラムで右下にバルーンを表示させたいのですが
それだけのシンプルなほどシンプルな本当に登竜門なサンプルで公開してるページありませんか?

247 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:01:39.93 ]
つくってみよう−タスクトレイアプリケーションの作成
ttp://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html


248 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:06:02.01 ]
ダブルポインターのコピーについての質問です。
二次元配列の文字列をコピーしたいのですが、コピー元の二次元配列は
ヒープメモリの確保が必要になりますが、コピー先のメモリも動的に確保しようと
コメントアウトの部分を外すと、メモリエラー(ヒープの破壊)が起こりますが、
コメントアウトした状態の実装で、メモリの使い方は間違っていないでしょうか?
#include <stdio.h>
#include <stdlib.h>
char **getString();
char **strSrc;
int main()
{
char **strDst;
// コピーされる側はヒープメモリの確保は必要ないのか?
//strDst = (char **)malloc( sizeof(char * ) * 2 ) ;
strDst = getString();
printf("%s\n", strDst[0]);
printf("%s\n", strDst[1]);
free( strSrc );
//確保していないので、解放は当然不要なわけであるが・・・・
//free( strDst);
return 0;
}
char **getString()
{
strSrc = (char **)malloc( sizeof(char * ) * 2 );
strSrc[0] = "ABCD";
strSrc[1] = "1234";
return strSrc;
}

249 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:08:45.08 ]
>>246
NOTIFYICONDATA NIF_INFO
でぐぐれ

250 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:15:53.20 ]
再帰って関数内が終わったら自動でreturnされるの?
codepad.org/dAqEkNzj このコードみたんだけど
HeapSortの中に--reetcountってあるけど
関数の最後でreturnが自動で呼ばれてるんですか?



251 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:19:28.01 ]
そう。

252 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:23:26.60 ]
この場合戻り値がvoidなんですが
returnっていうより
最初の if (left >= right) {
--reentcount;
return;
}
で条件に引っかからず一番したの処理まできたら
自動で前の処理の再帰に戻すってこと?
returnって書けば戻るんだけど
終了には--reetcount(カウント数)だけだよね
自動で前の再帰に戻るの?

253 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:26:14.43 ]
voidって値を返す必要がないのに
どうやって前の再帰に戻ってるんだろう

void HeapSortだけど
voidの場合でも関数終了時に再帰が残ってる場合は前の再帰に戻してくれるの?

254 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:27:37.30 ]
いや、あたい返しても返さなくても仕組みは一緒だろ…

255 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:27:40.69 ]
>>248
ポインタの基礎ができてない悪寒。
>248の場合、strDstにメモリ確保しても、それをgetString()の戻り値で上書きしてしまっている。
なので、free(strSrc)で解放したメモリ空間をfree(strDst)で更に解放しようとして異常終了している。

そもそも、何がしたいのか判らんが勉強中はグローバル変数は使うな。

256 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:28:33.27 ]
>248
strSrcとstrDstが同じポインタ値になってる。

free( strSrc );
//確保していないので、解放は当然不要なわけであるが・・・・
free( strDst);
同じメモリを2回開放しようとしてる。

>strDst = (char **)malloc( sizeof(char * ) * 2 ) ;
>strDst = getString();
やるなら
strDst = (char **)malloc( sizeof(char * ) * 2 ) ;
memcpy(strDst,getString(),sizoef(char * ) * 2 ) ;
だろう。


257 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:30:12.51 ]
>>253
例えばこういうコードがある。
--
void subFunc()
{
puts("subFunc()");
}

void someFunc()
{
puts("before sub");
subFunc();
puts("after sub");
}
--
このとき、どう出力されるかは判るかい?

258 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:34:08.14 ]
before sub
subFunc()
after sub
ですか?
なんかひねって
before sub
1
after sub
だったりしそうですがわかりません

259 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:38:47.32 ]
#include <stdio.h>
int main(void)
{
int i=1;
printf("%c\n",a());
return 0;
}
int a(){
}

これだと1って返されますね
void a()に変更するとコンパイルエラー
だけどcodepadの再帰はVoid型なのに関数ブロックの最後になったら前の再帰が返されてる
再帰はVoid型とか関係なくコードブロックの終了に返されるってこと?

260 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:43:06.17 ]
>>258
値を返すとかなんだとかを脇において、処理がどう推移するかを考えろ。
1を出力しているところはどこにもないぞ。



261 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 12:53:17.58 ]
>257の例で、処理がどう流れているかを処理される順番で表現してみた。
# main()はないが、someFunc()を呼んでいると仮定。
--
void subFunc() // 5
{ // 6
puts("subFunc()"); // 7
} // 8

void someFunc() // 1
{ // 2
puts("before sub"); // 3
subFunc(); // 4...9
puts("after sub"); // 10
} // 11
--
subFunc()の途中にreturn文があれば、こうなる。
--
void subFunc() // 5
{ // 6
return; // 7
puts("subFunc()"); // この文は実行されない。警告レベルを上げると警告されるはず。
} // 8

void someFunc() // 1
{ // 2
puts("before sub"); // 3
subFunc(); // 4...9
puts("after sub"); // 10
} // 11
--
これで判るかねぇ。

262 名前:155 mailto:sage [2011/12/28(水) 15:12:32.15 ]
>>252
意図は MergeSort() の入り口でカウントアップ 出口でカウントダウン して、
再帰の深さがいくつになってるかを分かりやすくしたかっただけ

できるかぎり元ソースの形(>>145 リンク先)を維持したまま追加したので
途中脱出の部分で --reentcount してるけど

void MergeSort(int x[ ], int left, int right) {
 /* ... */
 ++reentcount;
 if (lest < right) {
  /* 本体 */
 }
 --reentcount;
}

こういう記述にしたほうが良かったかな?

263 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:21:23.52 ]
C言語で逆引きサンプルでいいサイトありませんか?

264 名前:デフォルトの名無しさん [2011/12/28(水) 15:39:11.42 ]
コンパイル時に、
 % gcc -DHEX=12 a.c
とやって、ソースを
 int hex = 0x12;
としたいのだけど、どう書けばいいんだっけ... ("0x"を追加したい)
 int hex = 0x00##HEX;
じゃだめだよね..


265 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:55:16.80 ]
VCでしか確認できてないけど、↓じゃだめ?
#define HEX_VAL(arg) 0x##arg
int hex=HEX_VAL(HEX);

266 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:59:39.30 ]
それだとgccじゃだめなんだな...
って、確かgccはその書き方じゃダメだったような気がしてきた。
コンパイラ別にするのイヤだから別の方法で回避するわ。

267 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 16:11:10.19 ]
ああ シンボルHEX の実体展開がなされるかどうか か

2段にすれば解決するんだっけ
#define HEX_VAL(arg) 0x##arg
#define HEX_V(arg) HEX_VAL(arg)

過去 ttp://pc11.2ch.net/test/read.cgi/tech/1144824670/139,143

268 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:14:57.72 ]
お前らマージソートを何も見ないでかける?
難しくない?再帰といい処理といい
マージソートなんて使う意味あるのか?

269 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:31:29.27 ]
>>268
マージソートはクイックソートと同じO(NLogN)オーダーの速度を持ちながら安定なソート
だからstable_sort()に使われる

欠点としては多量の記憶域が必要な事と、クイックソートの約2倍の時間が掛かる

安定でなくてもいいならクイックソート、安定で速度が必要ならマージソート

270 名前:デフォルトの名無しさん [2011/12/28(水) 17:33:47.68 ]
ふうん



271 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:04:35.58 ]
教科書に載ってるようなくらいのC言語しかしたことないんだけど
仕事でC言語って行ったらどんなことするの?

272 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:33:08.35 ]
>>271
個人的な感想ですが、担当者レベルだと、ひたすら、
ビジネスロジックを設計(詳細設計)して書く、
そして、コーディング規則は現場によって違うけど、
厳しい方が後々良い。けど、書いているときはすごく面倒。
で、大体、テンプレート(見本のソース)を誰かが作ってくれて、
それを、自分のビジネスロジックに合わせて記述する。

ビジネスロジック意外の定番のロジックは大抵、
テンプレートを先輩が作っておいてくれるから、
C言語的には、基本は知っておけば良い。
っていうか、ポインタ程度の理解はすごい重要。
で、よほど、性能を優先する処理以外は、
「他の人がメンテナンスしやすい(理解しやすい)処理を書く」が
基本、というのが自分の大昔の大雑把な経験。

他の人(後任)が理解できない記述やロジックは嫌われる。
もちろん、処理速度を優先する場合は仕方ないけど・・・。

273 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:47:24.27 ]
>>272
ポインタをどのくらいまで理解すればいいの?

274 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:55:07.18 ]
ポインタを「このくらいは理解できた」なんてのは妄想。
理解できたか、理解できていないか、どちらかしか有り得ない。

面接で「ダブルポインタは大丈夫ですが、トリプルポインタは自信がありません」なんて
言っているような輩は、実際ポインタを理解できていない。

275 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:55:45.50 ]
トリプルポインタなんて使う場面はほとんどないけどな
大抵ダブルポインタまで

276 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:14:22.51 ]
ダブルポインタなんて言われた時点で「きっと理解できてないんだろうなぁ」と思っちゃう
この単語は使わない方がいい

277 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:33:09.97 ]
そもそもそんな質問する面接があんの?
今時Cの仕事ってなにがあるんだろうか。
8bitとかのワンチップマイコンくらい?

278 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 19:34:00.92 ]
パチンコ

279 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:22:22.00 ]
■民主党政権になって放送禁止になった言葉一覧■
[道義的責任・進退問題・発言のブレ・閣内不一致・派閥・プライマリーバランス
空気が読めない・庶民感覚・国民目線・バラマキで人気とり・国民に信を問うべき・OECDの貧困率
ワーキングプア・ネットカフェ難民・世襲・料亭・漢字・読み違え・直近の民意・国民の生活が一番、政権交代が最大の景気回復策、公務員改革
ガソリン値下げ、景気回復策、解散総選挙、ホッケの煮付け
世襲制廃止、地域主権、議員定数削減、地球温暖化対策]


280 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:24:40.34 ]
NGワード情報ありがとう



281 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:48:58.32 ]
カーナビ除く車載ソフトはだいたいC言語


282 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:58:45.07 ]
>>275
execv*() の引数 char **p を malloc() で確保する場合に、
それが子関数を呼び出して呼び出し先で確保して親関数に戻ってくる場合には、
途中で char ***, が出現しないだろうか?
codepad.org/EhhHbMVZ

283 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:39:07.02 ]
ぼくも先輩方のような立派なCプログラマーになりたいのですが
今は大学で学んだ程度の基本的なC言語の文法くらいしかわかりません。
この先はどのように学習していけば良いのでしょうか?

284 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:42:44.85 ]
>>283
一口にC言語って言っても、それを使って何をやるかってのはすごく幅広い
そして目的によって全然ノウハウは違ってくるから、実際みんな得意分野不得意分野がある
具体的に目標となる分野を決めて、その分野のプログラミングの勉強をすればいいんじゃないかな

285 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:57:38.97 ]
>>284
Webプログラミングに興味あります

286 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:01:07.81 ]
C言語はLinuxをかじっとけば大体大丈夫になる

287 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:05:44.32 ]
>>285
じゃあC言語ではないが、HTML と CSS は覚えておいて欲しいな
Webプログラミングと言っても細かく分けると色々あるから
その後に何をやるのかは知らんが、何れにしろその辺の知識は役に立つはずだ

あとWebプログラミングなら専門板もあるんだぜ

WebProg
kohada.2ch.net/php/

288 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:28:13.34 ]
なんでWebって文理不問なの
やっぱ組み込み系の方が賢いんですよね

289 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:28:56.60 ]
流石にC言語の質問から離れ過ぎでしょそれは

290 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 00:33:45.06 ]
大学で1年間プログラミングを習い、文法やポインタや構造体などを理解し、
簡単なCUIプログラミングをいくらか演習したようなレペルです

amazonのレビューで好評だったんで
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル
www.amazon.co.jp/dp/4434124234
この本を買ったんですが、難しすぎです
こんな自分に、おすすめの書籍かサイトを教えてくださいませ



291 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 01:06:00.17 ]
webweb言ってる香具師はweb板いけばいいのに

292 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 03:44:07.66 ]
>>272
ああ、同意だわ。
後続が理解しやすい、には、他のソースと程度をあわせることも含まれるね。
いかに当たり前のような記述であったとしても、その書き方が他のソースでされていなければ「何だこの小難しいコードは」と思われてしまう。
C++をベターC(…)として使っているプロジェクトでstd::vector使っただけでその洗礼を受けた。

293 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 07:04:39.91 ]
例えばみんな手作業でマグロの一本釣りしてるのに一人だけ全自動リール使って楽してたら
空気読めない奴だと思われて村八分にされるのが落ちだろ
全自動リールってすごいね俺も今度からそれ導入しよう!とは絶対にならない
日本とはそういう国だ

294 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 07:29:09.68 ]
PHPを開発の主において、C/C++をアセンブラに翻訳するように
PHPをCに翻訳して使えば良いと思う。
生産性的に。
そういうコンパイラがあるが、winで動かず確認してない。

295 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:25:52.21 ]
なんでその程度の知識と技術しかないのにえらそうに言うの?

296 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:54:28.71 ]
× ポインタ
○ ポインター


297 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 08:56:53.53 ]
アクセントは「ポ」

 ̄\___
ポインター


298 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:05:03.26 ]
ポリンキーか!

299 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:11:51.70 ]
犬かよ。
理系ならJIS使え。

300 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:46:23.09 ]
CRCを計算するソース。

#define CRC32_POLY 0x82F63B78 // CRC-32C (Castagnoli) #define CRC32_POLY 0xEDB88320 // CRC-32-IEEE 802.3
class CrcCalculate {
public:
unsigned int crc32table[256];
void make_crc_table();
CrcCalculate() { make_crc_table(); }
friend unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal);
} CrcCalculate_;

void CrcCalculate::make_crc_table() {
unsigned int i, j, x;
for (i = 0; i < 256; i++){
x = i;
for (j = 0; j < 8; j++) if(x&1) x=(x>>1)^CRC32_POLY; else x>>= 1;
crc32table[i]=x; }}

unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal) {
unsigned int i; unsigned char *p = (unsigned char *)ch;
for (i = 0; i < byte; i++) cal = (cal >> 8) ^ CrcCalculate_.crc32table[(cal ^ p[i]) & 0xFF];
return cal; }

unsigned int crc32 (void *ch, unsigned int byte) {return crc32base( ch, byte, 0xFFFFFFFF ) ^ 0xFFFFFFFF ; }
unsigned int crc32 (const std::string &ch) { return crc32( (void *)&ch[0], ch.size()); }



301 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:01:48.33 ]
>>300
荒らし市ね。

302 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:04:48.42 ]
CRC32は重要な割に、標準関数に組み込まれてないから、簡単に使えるように貼ったんだよ。

303 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:09:43.25 ]
頭悪そうだな。

304 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:20:16.19 ]
チェックサムで十分

305 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:23:17.43 ]
Cでもないもの貼るな。

306 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:25:37.35 ]
つーか、CスレにC++貼るとか頭に蛆でも湧いているのかと。

307 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:41:44.93 ]
C++をやるとバカになるっていう見本を、身をもって示してくれてるんだよ

308 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 13:45:31.04 ]
お前ら、プログラミング以外だとイキイキしてるなw

309 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:02:11.94 ]
c99の可能性は考えないのか。

310 名前:309 mailto:sage [2011/12/29(木) 15:02:54.34 ]
俺が悪かった。



311 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:20:39.12 ]
C99禁止って職場は、レガシー以外の理由があるのかな?

312 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:46:10.20 ]
大抵は低レベルに合わせるためだと思うけどな。
それ以外だと互換性か。

313 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:59:30.55 ]
C99を導入する理由がそもそもないだろ

314 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:00:30.91 ]
c99禁止と言いながら、//コメントやブロック先頭以外での変数の宣言は使う顧客もいるにはいる。

315 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:25:21.48 ]
windowsではfopenは同時にオープンできる数に制限がある。
オープン、クローズを繰り返して使うか、APIを使うしかない。

316 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:25:59.03 ]
大体は職場がターゲットにしてるコンパイラの問題だと思うけどね。
例えば、VC++はC99非対応。

まぁ、コーディング規約があって、上司が老害な可能性は否定出来ない。

317 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:33:17.25 ]
>>315
windows以外だと制限がないの?

318 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:34:41.06 ]
FOPEN_MAXで分かる。
windowsでは50になってた。
しかし47あたりで開けなくなる。

319 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:37:35.02 ]
標準入力や出力というものがあってだな。

320 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:37:48.58 ]
>>318
そりゃデフォで3つディスクリプタつかうもん。



321 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:39:36.03 ]
移植性をたもちつつWindowsのUTF-16に対応できる_wfopenが良いと思っていたが
ファイル数の問題にぶち当たるとAPI使うしかなくなるな。

322 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:43:22.77 ]
移植性のために、UTF-16(UNCODE)対応とファイル数制限を外した
fwopenなどの関数群はないものか。自作しかするしかないか。

323 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:43:58.90 ]
つーか、なんでそんなにたくさん同時オープンしたいん?

324 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:04:38.17 ]
そんなに沢山オープンしていると却って管理が面倒な飢餓。

325 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:07:55.94 ]
そのオープン数の制限はスレッド単位? プロセス単位?
どっちにしろ、子スレッドなり子プロセスなりを立ててやらせたらいい。

326 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:23:44.04 ]
#include <windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {
printf("てすと");
MessageBox(NULL , "Error" , "エラー" , MB_OK);

return 0;
}

失礼します。
メッセージボックスを出して、かつコマンドプロンプトにも文字を出力させたいのですが
上記のプログラムではメッセージボックスしかできません。どうすればよいのでしょうか?

327 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:33:02.27 ]
Win32API質問箱 Build100
toro.2ch.net/test/read.cgi/tech/1323365008/

328 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:19:33.98 ]
>>326
>editbin /subsystem:console hoge.exe

329 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:03:01.03 ]
>>322
UTF-16なんて普通にfopenでいいじゃん
ファイル数制限も普通に解除できるし

330 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:13:10.32 ]
>>327
そこのスレすごくこわい



331 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:17:46.19 ]
W32を敵視する奴がいるから

332 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:32:34.93 ]
>326
プロジェクトをWin32コンソールアプリケーションで作成する。

333 名前:290 mailto:sage [2011/12/29(木) 20:42:25.03 ]
おすすめサイトや書籍の質問は駄目なのか?

334 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:27:20.85 ]
すいません  

#include<stdio.h>

int main(void)
{
int a, sum=0;


for(a = 1; a <= 10; a++ );{
sum= sum+a;
}
printf("1から10の数の和は・・・%d", sum);

return 0;
}


だとなぜか11になるのですが
なぜでしょう

335 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:30:55.69 ]
>>334
);{

336 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:58:09.79 ]

| ┏━━━┓   従軍慰安婦は反日朝日新聞の捏造でした。
| ┃借収安┃    デマだらけの報道に注意しよう
| ┃三三婦┃
| ┃○○大┃
| ┃○○募┃
| ┃○圓集┃
| ┃圓以  ┃
| ┃迄上  ┃_
\┃可   ┃ \
  ┗━━━┛  \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
img04.ti-da.net/usr/wishcomestrue/t02200190_0220019010786142693.jpg


337 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:42:56.45 ]
int n = 1234;
↑のような数字の各桁を上から取り出す方法はあるでしょうか?
最初に1を取り出し、次に2を取りだしていくような感じです。
nの桁数は決まっていません。
よろしくお願いします。

338 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:44:53.84 ]
>>337
遅くても良いなら sprintf してから一文字ずつチェック

339 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:56:00.70 ]
むしろsprintfでいい

340 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:58:20.03 ]
桁数が決まってないなら無理。
実装上の int や long の最大数を制限値とするならできる。




341 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:04:26.96 ]
いやどっちにしろできるだろ。

342 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:08:42.62 ]
>>340
どういう形であれロジック中で表現されているのに、それを取ることができないと断言するのはいかがなものか。

343 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:16:50.59 ]
>>337
ほらよ。
codepad.org/XhObtVpm

344 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:17:59.15 ]
皆さん意見ありがとうございます。
桁数の方は2桁のときも4桁のときもありますが
最高は6桁で抑えれそうです。
引き続きsprintfを調査します。

345 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:18:20.93 ]
桁数が決まってないってどんな状態だよw
そんなもん扱えるわけねーだろw


346 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:19:15.50 ]
>>345
もういいから。

347 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:22:13.36 ]
実る前の林檎を食べることはできない。
時空を超越してる。


348 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:24:00.49 ]
>>347
そんなことはない。>>343

349 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:25:53.41 ]
>>343
凄いスマートなコードですね。
ありがとうございます。

350 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:26:13.53 ]
codepad.org/Mr8A4yOo



351 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:29:22.16 ]
まぁsprintf()の中で同じことをやっているわけだが。
>>350
せめてlimits使え。

352 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:37:02.91 ]
関数形式マクロの展開で、
#define max(x,y) (x>y?x:y)


printf("max(x,y) = %d\n",max(x,y));


この場合""内のmax(x,y)が置換されないってのがいまいちしっくりこないんですが
""中の文字列は、定数としてメモリ上に取っておかれるようなイメージであってるでしょうか?

353 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:38:18.26 ]
limits.hに最大桁数がマクロ定義されてるの?

354 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:42:33.87 ]
>>348
>>343

f()を呼び出すときに桁数決まってるじゃん。


355 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:49:09.72 ]
じゃぁ桁数決まってない場合を書いてみろよ。

356 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:49:39.72 ]
>>353
そんなこともわからんのか?

357 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:51:58.95 ]
>352
なんか難しく考えてないか?
コンパイラが文字列にはマクロを適用しない様にしてるってだけだろ。

358 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:53:12.66 ]
>>355
だから桁数決まってないと無理ってんじゃん。

359 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 00:54:20.95 ]
>356
なんだ、適当に反論したいだけか。

360 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:03:47.30 ]
>358
元の要求は
int n = 1234;
なんだから問題ないだろ。



361 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:04:24.41 ]
>>359
アホは黙ってろって。

362 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:13:03.12 ]
環境が書かれていない以上intの最大値(最大桁数)も決まっていない。
よって桁数が決まっていない。


363 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:14:25.96 ]
つ アホは黙ってろって。>361

364 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:15:54.85 ]
>>362
で、その場合、>>343だと何の問題があるわけ?

365 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:18:41.99 ]
そいつと俺は違う人。

366 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:19:40.90 ]
>>343 が桁数を決めずに処理できる良い例ってことだろ。

367 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:20:50.71 ]
桁数が決まってない = 値が決まる前
これを扱うのはこの四次元時空においては不可能。


368 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:23:15.96 ]
>>360
なんだからintの上限に決まってるだろ、アホ。

369 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:24:02.86 ]
おこちゃまは寝る時間だぞ

370 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:25:21.77 ]
intの最大値と最大桁数は違うと思うの。たとえ計算で求めることが出来るとしても。



371 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:26:59.27 ]
最大値がわかれば桁数もわかるだろ。
どこの世界に住んでんだよお前は。

372 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:31:27.50 ]
                           ( <.   | l     //
                   __      ヽ\,.ィ´ .ニニェ‐、//
                  〈〈〈〈 ヽ      >、.く^┘  `) 〈
                  〈⊃   }    // ´ , -‐-、 〈,ヘヘ
           ∩___∩  |   |    | l  <丶`Д´>  l |
           | ノ      ヽ !   !     | l  ヽ、__.ノ  /./
          /  ●   ● |  /  ,,・ ヽヽヘ、____,,..ィ,ン′
          |    ( _●_)  ミ/, ’,∴ ・¨  `/`'‐--ヽ''´
         彡、   |∪|  / 、・∵ ’   /、//|/  ̄ヽ
        / __  ヽノ /       /   // 異常 /\ 〉
        (___)   /       /    // TV/\ /


373 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 01:53:44.48 ]
>371 子供は寝る時間だよ。

374 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:02:38.61 ]
>371
アスペ乙

375 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:08:21.14 ]
低脳乙。

376 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 02:53:38.46 ]
>>355
桁数の決まってない数字を出力するから、入力が終わっている状態を示してくれ

377 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:21:47.78 ]
>>376
getchar()が-1を返したら終わり。

378 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:30:43.88 ]
1休さんかよw
屏風の虎w

379 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:32:30.81 ]
>>377
ttp://ideone.com/2jocf

380 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:08:52.51 ]
>>379
それだとnがINT_MAX越えたらAUTO。



381 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:12:14.92 ]
INT_MAXを超える桁数ワロタ

382 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:15:28.48 ]
元々そういう話だろ、何言ってんだお前。

383 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:18:34.50 ]
元々そういう話ワロタ
元々はちげーだろw

384 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:24:14.62 ]
INT_MAX桁以上の数を扱うのってどういうときだろう
天文学的な数字っていうのもせいぜい数十桁だろうに

385 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:30:02.86 ]
そんな話だったのならとっくに終わってるってこと。

386 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:30:42.41 ]
>>384
intが16bitならいくつかわかるか?

387 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:33:11.05 ]
DXライブラリってどこでダウンロードすべき?

388 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:34:54.76 ]
>>387
homepage2.nifty.com/natupaji/DxLib/

389 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:36:54.45 ]
有限でない数を内部で扱うのはむりだろ、それで結論?

>>386
3万ぐらいでしょ

390 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:59:09.72 ]
>>375



391 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:02:45.24 ]
>>388
dクス

392 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:15:34.07 ]
ファイル数制限を外して、UTF-16LEに対応するためにここまでできた。関数の中身はこれから調べて作る。



typedef void _WOFILE;
_WOFILE* _WOfopen( const wstring &fn , const wstring &mode){}
int _WOfseek(_WOFILE *fp, long offset, int origin){}
long _WOftell(_WOFILE *stream){}
size_t _WOfread(void *buf, size_t size, size_t n, _WOFILE *fp){}
size_t _WOfwrite(void *buf, size_t size, size_t n, _WOFILE *fp){}
int _WOfclose(_WOFILE *fp){}
int _WOfeof(_WOFILE *fp){}

#define FILE _WOFILE
#define _wfopen _WOfopen
#define fseek _WOfseek
#define ftell _WOftell
#define fread _WOfread
#define fwrite _WOfwrite
#define fclose _WOfclose
#define feof _WOfeof

393 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:34:29.35 ]
C言語で無限大の数を扱うにはどうしたらいいですか?

394 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:34:36.77 ]
>>392
ファイル数制限を超えてしまうような設計は考え直した方がいい

395 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:35:11.50 ]
>>393
"無限大"って文字列でおk

396 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:45:29.90 ]
>>393
n = 1/0;

397 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:48:32.05 ]
C言語で桁数の不明な数を受け取って表示するにはどうしたらいいですか?
何桁になるかは全くわからず、制約もつけられませんが、受け取り終わってから表示したいです

398 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:00:25.04 ]
どんな方法にせよ、上限は必要

399 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:08:57.78 ]
結論が出ました

400 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:09:10.99 ]
>>397
まだやってるのかw



401 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:11:07.84 ]
>>393
IEEE754に定義があるからそれ使え。大抵の実装で使える。

402 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:26:35.95 ]
>>397
toro.2ch.net/test/read.cgi/tech/1313183984/22

403 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:40:01.02 ]
最近「頭悪い質問で釣ってみた」の投稿多いな。

404 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:40:58.52 ]
冬休みで暇なんだよ
面白いTV番組も無いし

405 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:27:10.92 ]
>>404
これでも解いてろ
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0120

制限時間1秒以内 メモリ32MB 以内だからな

406 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:30:14.66 ]
>>392
違ってたら悪いんだけど、先頭4KBの人?

407 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:32:02.05 ]
>>405
AOJって問題が日本語で書かれてるからか、ここ最近よく見るようになったね。
海外サイトならお金くれたりするのにね。。

408 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:39:00.44 ]
日本語で書かれていても条件の見落としが多いのに
英語だと問題文何回も読み直さなきゃいかんのがしんどい

409 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:42:55.01 ]
>>408
ちなみにAOJ、英語設定で解いていくと条件の翻訳不足で詰む問題がいくつかあるんだぜ

410 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 16:46:00.99 ]
まちまちな大きさのロールケーキをたくさん作るケーキ屋さんなんて、ない。



411 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:19:35.70 ]
>>407
マジで金くれるの?
未解決問題でもコンテストでもないのに?

412 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:25:20.52 ]
メールで鍵を交換するソフトのことなんですが
質問いいでしょうか

413 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:26:50.35 ]
スレタイとどう関係あるかを説明できたらな。

414 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:55:44.49 ]
sscanfで、一度読んだところは飛ばして次から読むような方法って何かありますか?
char *str = "1 2 3 4";
while(sscanf(str,"%d",&i))
で4回ループして1〜4を読むような感じのことがしたいです

415 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:57:30.52 ]
ポインタ(アドレス)を進める

416 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:58:24.26 ]
>>414
%n ってのを調べればおk

417 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:59:45.84 ]
【フジテレビ】東日本大震災を体験した人々の証言を集め、
被害の実情を検証 『わ・す・れ・な・い〜東日本大震災・命の記録』
12月30日(金)午後6時〜午後8時54分放送
prtimes.jp/main/html/rd/p/000000251.000000084.html

418 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:05:49.40 ]
>>415-416
%nで取得した分だけポインタを進めることでできました
ありがとうございます

419 名前:デフォルトの名無しさん [2011/12/30(金) 19:29:27.09 ]

朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。
捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。

Domain Information: [ドメイン情報]
a. [ドメイン名] ASAHI-NP.CO.JP
e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ
f. [組織名] 株式会社 朝日新聞社

−「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」−
これはおそらく週刊誌さえ書けない。
「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ 09.3



420 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:30:59.82 ]
ロールケーキの問題わからんなあ
普通に総当りしたら時間切れになるし
どういう考え方で並びを求めるんだろう?



421 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:57:01.68 ]
凸凹になるようにする。
たとえば半径5と5をつなげると、距離20を使ってしまう。
凸凹だと節約出来る。

422 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:59:26.05 ]
そうね、一番凸凹になる並びを求めて入るかどうか調べればいいんでないか。
つまり、隣同士の半径の差の合計を最小にする問題かな。

423 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 20:59:38.68 ]
あ、最大ね。

424 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:19:52.33 ]
うむ、一番凹凸になる並びとはどのように求めるのかわからん

425 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:34:47.35 ]
てんさいです

【東京都渋谷区】 12/31(土) 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!
年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ!

12時00分 渋谷駅ハチ公前広場 「街頭演説」(〜13時30分)
13時30分 移動
14時00分 渋谷公会堂前 「街頭演説」(〜14時45分)
15時00分 代々木公園・NHK横「イベント広場」
「年忘れしてはならない!紅白桜祭」
抗議集会・コンサート・炊き出し等々
盛りだくさんでお送りします!(〜21時00分)

426 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:36:22.19 ]
誰も行かないだろ

427 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:04:10.36 ]
動的計画法にすればよいことが分かり
保持すべき結果も分かったつもりなのにacceptされない。。。
どこが悪いのか指摘ください
ttp://ideone.com/uWKcO

数時間かけてできないなんて俺やばいなあ

428 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:00:44.90 ]
>>427
何やってるのかさっぱり分からん
俺やべー

429 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:00:55.97 ]
>>427
printf("%d %.5f¥n",width,min);
↑の行が余計とか?

430 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:27:09.54 ]
>>427
while(sscanf(buf+offset,"%d%n",&cake[num],&oftmp) > 0){

↑ケーキ12個の場合、cake[12]をアクセスしているみたいだが。



431 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:55:23.02 ]
#include <stdio.h>

int main()
{
printf("円の面積計算機\n");
printf("半径を入力してください\n");
double pi,hankei,S;
pi=3.1415926535;
scanf("%f",&hankei);
S=hankei*hankei*pi;
printf("面積は%fです",S);
return 0;
}

結果が0.000000になるんだが



432 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:58:56.20 ]
%fはfloatへのポインタじゃないとだめ。

433 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:59:55.64 ]
scanf("%f",&hankei);

scanf("%lf",&hankei);

434 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 03:15:15.47 ]
printfでは%fでも大丈夫だからscanfでも大丈夫だと思ってた
ありがとう


435 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:37:07.48 ]
printf()系とscanf()系には色んな点で互換性が無いから要注意。
互換性があるかのごとく書いてある入門書で勉強した人は特に。

436 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:21:54.70 ]
scanなんとかは型とサイズの指定が必須という事でいい?

437 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:39:54.94 ]
>>397
長さを問わないということは、文字列だという想定で。
終わりの検知(EOFとか)の仕方があれば、人間がタイプできる長さくらいは受け取った後で表示できる。


438 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 11:43:04.99 ]
>>436
正確には、ISO/IEC 9899:1999 6.5.2.2.6。
可変長引数では float -> double の型変換が行われる。だから printf() に float と double の区別は不要。
scanf()系にわたるのはポインタだから float->double は不可能であり区別しなければならない。

439 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:49:43.19 ]
>>397
pastebin.com/jN5Mbsut
realloc 使ってあとは上限を処理系にまかせるのがラク。
もっと厳密にやるならヒープ管理とか双方向リストとか、reallocの必要ない形式のバッファ管理を行うことになる。
オンメモリや仮想メモリに収まらない長さまで想定するならmmap とかも使う

440 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:09:34.26 ]
>>439
それだとcapaがINT_MAX越えたらAUTO。



441 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:12:03.88 ]
>>438
floatとdoubleの違いも知らないやつが出てくるなよ。

442 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 13:16:54.04 ]
>>441
ほう。
>>438 のどこに問題が?

443 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:27:45.55 ]
>>441じゃないが、まぁ別に不可能じゃないわな。
float=doubleの処理系もあるし。

444 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:29:16.49 ]
>>440
>>439じゃないが、同じようなのを考えてた。
一般論としてINTの上限は、取得できるメモリの最大長だったっけ?

445 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:32:24.67 ]
INTの上限=コンパイラの仕様
取得できるメモリの最大長=OSの仕様

446 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 13:33:58.93 ]
まぁ今時64bit OSも多いし、そんな一般論はないわな。


447 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:01:37.70 ]
コマンドライン引数で、コマンドのオプション処理のところなんですが

if(**(++argv)=='-'){
 switch(*++(*argv)){
  case 't':
 }
}
のように++(*argv)のポインタの移動で、argv[1][0]→argv[1][1]の処理が出来るのに、
double型4*3の配列の行ごとの合計を求めて表示する関数
void sum(double z[][3],int n){ //nは行数=4
で受け取って
for(i=0;i<n;i++){
 for(j=0;j<3;j++)
  sum+=*++(*z);  //←ここでエラーが出ます
 printf("%d行めの合計は%f\n",sum);
 z++;
}
だとコンパイラからは「インクリメントの被演算子として左辺値が必要です。」とエラーが吐かれます
"sum+=**z;"は通りますが、その次に"++(*z);"を入れると、「二項演算子 + への無効な被演算子です (‘double[3]’ と ‘int’)」とエラーが出ます
そこで、該当個所を
「sum += *(*z+j);」にするとコンパイラも通り、期待通りの挙動をしてくれるのですが
配列z[i]の要素の、配列の要素z[i][j]を指すポインタをインクリメントするといったことはできないのでしょうか?
上の例で、それができる理由などはありますか?

448 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:13:52.63 ]
int a[10];
a++;

449 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:21:13.88 ]
初心者はC++のstringつかってしょりしろ

450 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:42:12.76 ]
>>448
なるほど・・・まさしくな例ですね
それができないというか明らかに見慣れないのは分かるのですが
int a[10]; a++;が出来ないのは内部的にどういう理由なんでしょうか?

ポインタzが配列z[0]〜z[3]の先頭アドレスz[0]を指すのに対し
*zはx[0]のエイリアスで、
*zは配列z[0][0]〜z[0][2]の先頭アドレスz[0][0]を指す
とは単純に言えないのですかね・・・

それと
if(**(++argv)=='-'){
 switch(*++(*argv)){
  case 't':
 }
}
ができるのはchar型特有なんでしょうか?



451 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:46:14.72 ]
int a[10]は配列。
int *aはポインタ。

452 名前:450 mailto:sage [2011/12/31(土) 15:48:10.79 ]
すいません、>>450に追記すると
int a[10];に対してaのアドレスをint *ptrとして別の関数に渡してやれば
ptr++;の操作はできることと
a++;との差異は何なのでしょうか

453 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:50:08.40 ]
別の関すに渡しているのは値。
その関数ではポインタで受けてるから操作できるってだけ。

454 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:52:30.61 ]
>>451
あぁ、aは配列なのに対して、>>452で言うならint *ptrはポインタですもんね
なるほど、zはポインタで、*zが配列を指しているってことですか
確かにコンパイラのエラー表示がしっくりきました
ありがとうございます

455 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:54:57.70 ]
ほう、飲み込みが早いな。
もうこれでQZを越えたぞ。

456 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:59:50.53 ]
constなのか書き換え可能なのか考えろよ。
char a[]="0123";でa+1はできるだろ。
a=a+1は無理だろ。
何で無理なのかはそういう仕組みで作ってしまったからだな。

457 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:05:05.60 ]
文字リテラルと書き換え不可能とは別の事柄だな。

文字列リテラル - mkubara.com
mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB



リテラル文字列は適切な const char[] 型を持つ
msdn.microsoft.com/ja-jp/library/16c4s7yy(v=vs.90).aspx



文字列リテラルと char* (C++ 移行ガイド)
docs.oracle.com/cd/E19957-01/805-7888/z4000220f2c4c/index.html

458 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:10:08.03 ]
char a[]="0123";のアドレスが書き換えられないのは、
コンパイラが確保した変数のアドレス配置を書き換えられないって事だな。
例えば
int n=1;のアドレスは&nだが、&n=&n+1とはできないのと一緒だな。

459 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 16:11:57.47 ]
>>447
複数の点ではまっているようだ。

(1)
double[][N] は double ** と可換ではない。
コマンドライン引数の内容が格納されている *argv[] は決して char[][] にはならないことと同様。
codepad.org/SNGc1UiK

(2)
>>448
×double z[][3] で z++;

(3)
×sum+=*++(*z);
○sum+=*((*z)++);

460 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:17:03.58 ]
またわけのわからないことを言い出したな。



461 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:18:13.28 ]
char str[]="0125634";

char str[]="3120456";
のように、0から6までの半角の数字を重複する事無く全て含んでいるかチェックしたいと思っています。
現在、forループ中で
if(str[i]-'0'==3)flag3=TRUE;
のように一つずつチェックしているのですが、もっとよい方法はありませんか?


462 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 16:19:20.37 ]
>>457
char *p = "0123"と char p[] = "0123" とを混同していないか?

463 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:19:21.30 ]
>>461
qsort使えば?

464 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:21:37.95 ]
>>456
なるほどなるほど・・・
確かにいろいろ繋がりました
constと書き換え可能の視点で見ると良さそうですね

>>457のサイトをちらちら読ませてもらいましたが
コマンドライン引数として受け取った、文字列リテラルに関しては
配列で実現する文字列というより、ポインタで実現する文字列として扱っているから
*argvは配列ではなくポインタであるんだろうと気づきました(違ってたら言ってください

>>459
++も*も右結合の優先順位は同じですから(3)に関してはどっちもエラーが出ました


465 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:24:24.97 ]
>>461
用途は?

466 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:25:30.52 ]
面白そうだからやってみよう。
でも、if(str[i]-'0'==3)flag3=TRUE;
と大差なさそうだな。

int n = 0;
for (int i = 0; str[i]; ++i) {
 n |= 1 << (str[i] - '0');
}
if (n == (1 << 7) - 1) { }

ちゃんと動くか確かめてない。
それに、速度的には全然ダメだろう。

467 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:25:41.36 ]
>>459
(3)
それに関してはコード自体が間違ってました、すいません
しかしエラーという点では同じです

いろいろと考えることありそうなので、少し吟味させてもらいますねー


468 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:29:09.99 ]
>>461
もっといいかはわからんが、俺ならこうする。

int counts[7];
int i;
const char *p;
for(i = 0; i < 7; i++){
 counts[i] = 0;
}
for(p = str; *p != '\0'; p++){
 assert('0' <= *p && *p < '7');
 counts[*p - '0']++;
}
int ok = 1;
for(i = 0; i < 7; i++){
 if(counts[i] != 1){
  ok = 0;
  break;
 }
}


469 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:29:47.47 ]
>461
char chk[7]={0};
flag = FALSE;
...
if( (++chk[str[i]-'0']) >1) {
/*重複あり*/
flag=TRUE;
}


470 名前:デフォルトの名無しさん [2011/12/31(土) 17:07:19.61 ]
◆QZaw55cn4cって昔は質問者に対しては敬語だったのに、何か上からになったな。

あ、
ttp://mentor-diamond.jp/blog2/kokusai/?p=1017
この子が言ってる計算機科学なんだけど、こういうのって
プログラミングできないと勉強とか研究できないものなの?






471 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:14:51.70 ]
ゲームクリエイターってゲームのインターフェースだけを考えて
プログラムは全くできなくてもいいんですか?

472 名前:デフォルトの名無しさん [2011/12/31(土) 17:19:21.90 ]

cp2.uh-oh.jp/read_img/index/ab83e09400ff17d99f45ceee15a37e09.jpg
cp2.uh-oh.jp/read_img/index/a58c2ddc9cdbe45529ef0d58c95cc232.jpg

テレビに騙されるな(自称街の人-台本読んでるだけの業者)


473 名前: ◆QZaw55cn4c mailto:sage [2011/12/31(土) 22:46:36.69 ]
>>455
>>447 の根本的な問題がまったく指摘できていない件について

474 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 22:47:05.77 ]
>>440
べつにsize_tでもlong long でも使えばええがな

475 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:01:57.23 ]
>>471
そりゃボードゲームとかカードゲームとか作るのもいるし

476 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:17:43.23 ]
>>471
そりゃそうだろ。ザクっとデモとかモックアップ持ってける人は強いと思うけど。
映画監督がセット全部建てられる必要は無いだろ。

477 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:34:53.55 ]
>>461
codepad.org/7bb5M4x6

478 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:45:33.44 ]
>>474
それだとcapaがLONGLONG_MAX越えたらAUTO。

479 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 00:30:29.22 ]
あけましておめでとう!
Javaプログラマーの私が初書き込みを獲らせて頂きますね^^

480 名前: 【大吉】 【1860円】 mailto:sage [2012/01/01(日) 00:43:45.15 ]
派遣でCやってた俺の初カキコ。
学校でCを習ってたころに、このスレを発見できればよかった。



481 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:33:27.67 ]
C言語さん今年もよろしく頼むよ

482 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:34:29.10 ]
おう、まかせとけ。

483 名前:461 mailto:sage [2012/01/01(日) 02:37:00.06 ]
皆様、回答ありがとうございます。
そして明けましておめでとうございます。

まさかこれ程の答えてくれる方がいらっしゃるとは...それぞれ確認していきたいと思います。



484 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:44:50.76 ]
まだ明けてねーだろ馬鹿。
一日の始まりは日の出からだ馬鹿。


485 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:52:25.06 ]
新年早々何キレてんだ坊主

486 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 02:58:52.45 ]
>>484
一年の始まりは1月1日 0:00 からだ、ボケ。

487 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:01:07.54 ]
>>484
それが何の仕様かは知らんが、2chの仕様としては0:00からじゃね?

488 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:28:00.45 ]
一日の始まりが日没からだった暦では、「クリスマス・イブ」はクリスマス日の始まりを意味してたけどな。

489 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 04:47:24.46 ]
printf("ba------ka\n");

490 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 06:16:00.89 ]
>>478
そのまえにヒープが足りなくなるからどうでもいい。



491 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 10:38:43.33 ]

「経世会(旧田中派)」VS「清和会」>
(田中派)田中角栄   逮捕 ロッキード事件 (←東京地検特捜部)
(経世会)竹下登    失脚 リクルート事件 (←東京地検特捜部)
(経世会)金丸信    失脚逮捕 佐川急便献金・脱税 (←東京地検特捜部&国税) 
(経世会)中村喜四郎  逮捕   ゼネコン汚職 (←東京地検特捜部)
(経世会)小渕恵三   急死(←ミステリー)
(経世会)鈴木宗男   逮捕 斡旋収賄 (←東京地検特捜部)
(経世会)橋本龍太郎  議員辞職 日歯連贈賄事件 (←東京地検特捜部)
(経世会)野中広務   議員辞職 日歯連贈賄事件 (←東京地検特捜部)
(経世会)村岡兼造   逮捕   日歯連贈賄事件 (←東京地検特捜部)
(経世会)小沢一郎   西松不正献金事件 (←東京地検特捜部)
(経世会)二階俊博   西松不正献金事件 (←東京地検特捜部)
(清和会)岸信介    安泰  A級戦なのに釈放。
(清和会)福田赳夫   安泰  清和会を創設
(清和会)安倍晋太郎  安泰  国際勝共連合、統一教会に深く関与
(清和会)森喜朗    安泰  子息の押尾事件関与疑惑ほか
(清和会)塩川正十郎  安泰  小泉構造改革の旗振り役
(清和会)小泉純一郎  安泰  郵政米営化、りそな問題他、疑惑の総合商社。
(清和会)尾身幸次   安泰
(清和会)中川秀直   安泰  統一協会(=米国福音派)に祝電   
(清和会)安倍晋三   安泰  統一協会(=米国福音派)に祝電


492 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 11:48:18.18 ]
一年の計は元旦にあり
ですよ。
自由でなんというか救われてなきゃあダメなんだ 独りで静かで豊かで・・・

493 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:11:57.53 ]
unsigned int n = 0 ;
n -= 1 ;
if(n == UINT_MAX) { /* proc */ } else { /* error */ }

これって環境によらずprocのブロックに行きますか?

494 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:15:54.15 ]
いいえ。

495 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:21:12.12 ]
何がやりたいかわからない。

496 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 17:26:32.84 ]
>>470
丁寧語にしても上から目線だといわれ、丁寧語をやめて常体にしても上から目線といわれるのであれば、今後は敬体にするしかないですね。

497 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:30:45.95 ]
(unsigned int)-1はUINT_MAXになるように規格に決まってたはず
だからこの場合も常に正しいんじゃないかな

498 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:31:03.13 ]
>494
たとえばどんな環境だと駄目なの?

499 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 17:33:17.03 ]
以下のスレの最後のほうでC言語もまじって議論になってますが本当ですか?


【PHP】下らねぇ質問はID出して書き込みやがれ 113
kohada.2ch.net/test/read.cgi/php/1322564127/

500 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 19:43:13.35 ]
JISに記載はあるが、減算のオーバーフローの場合”剰余”ってのはどうなるんだろう?
(引用 JISX3010 6.2.5 型)
「符号無しオペランドを含む計算は,決してオーバフローしない。
すなわち,結果を符号無し整数型で表現できないときは,
その型で表現しうる最大値より1 だけ大きい数を法とする剰余を結果とする。」



501 名前:デフォルトの名無しさん [2012/01/01(日) 19:58:44.67 ]
だからオーバーフローしないって、そこに書いてあるだろ

502 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:55:21.28 ]
>>470
符号化とか純理論でもいけると思うけど。

503 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:02:51.91 ]
>>499
phpは昔数か月だけやったので、覚えていないけど。
php等の言語が当たり前にサポートされている機能が、C言語ではサポートされていないことも多いから。
だから、知識として必要なアルゴリズムは別なはずだよ。

504 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:05:03.10 ]
>>503
>C言語ではサポートされていないことも多いから。

C言語使う奴は、サポートされてなければ自分でどうにかするもんだ

505 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:15:14.23 ]
負数の剰余ってなにか数学的な定義があるのか?
ないとしたらC言語でも環境依存?

506 名前:デフォルトの名無しさん [2012/01/01(日) 21:17:48.83 ]
符号なしがどうやって負数になれるんだよw

507 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:30:24.04 ]
符号なしの演算結果が負数になるときが
「結果を符号無し整数型で表現できないとき」
じゃないの?

508 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 21:31:10.01 ]
>>505
除法における剰余は実質的に厳密に定義されているわけではないからなあ。
wikipedia ja.wikipedia.org/wiki/%E9%99%A4%E6%B3%95#.E5.AE.9A.E7.BE.A9 では、正剰余、負剰余、最小非負剰余、絶対値最小剰余、等があるようで、その場その場で便利であるように解釈されていると思います。
で >>500 の場合は、正剰余と考えるのが妥当でしょう。

509 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:33:14.95 ]
>>505
C言語では負数の剰余の決め方が定められているとさ。
www.bohyoh.com/CandCPP/FAQ/FAQ00134.html
知らなかった。

510 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:13:50.93 ]

           ______
          r〃〃〃 f7⌒ろ)
           l‖‖‖ ||   f灯
            |‖‖‖ ||   | |
            |儿儿儿._」⊥厶
           〔__o____o_≦ト、
.          i / ⌒  ⌒  ヽ )
          !゙ (・ )` ´( ・)   i/
          |  (_人__)    | \
          \  `ー'    /  / ー- 、
.          ,ィ(⊆≧リ≦⊇)〃   /     rク\
.       /   | ̄r少}¨ ̄〃   /    /′ ヽ
      〃 l   |  l| | l| 〃    /     /    └ヽ
     /    l  |l | |l/″   /      !  厂    \
    く,  Y   ! l」fレト!    /       | /        1
    丿  |   | 丿} じ’  /      | /         |
   /     l   | `¨      /      レ′        |

             真の思考停
    (在位 2009年9月16日〜2010年6月8日)

   民主朝の初代考停、言行不一致、虚言、脱税、
   そして外交において巨大な負の遺産を築いた。



511 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:31:27.24 ]
>>508
今調べたのにそんな言い方するから恥をかくんだよ?

512 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:42:08.29 ]
-7÷3
って、
0 あまり -7
であるべきだろ。

513 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:55:02.19 ]
またバカが沸いた。

514 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 22:56:23.57 ]
>>511
え?>>500 を読むかぎりどう考えても >>508 の解釈(正剰余)しかあり得ないんですけれども‥‥‥。
じゃあ >>500 はどう解釈するんですか?具体的に記述願いますね。
あと>>511文中の「?」の使い方がよくわからないんですけど。まさか語尾上げを表意しているとかですかね?最近のはやりですか?

ISO/IEC 9899:1999 6.2.5.9
A computation involving unsigned operands can never overflow,
because a result that cannot be represented by the resulting unsigned integer type is
reduced modulo the number that is one greater than the largest value that can be
represented by the resulting type.

ISO/IEC 9899:1999 6.5.5.6
When integers are divided, the result of the / operator is the algebraic quotient with any
fractional part discarded. 88)
88)This is often called ‘‘truncation toward zero’’.

515 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:58:12.64 ]
語尾に?を付けるのは、自分の言う言葉に自信がないから

516 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:58:57.80 ]
500を読む限りって...
全部読んでないのかよ。

517 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 22:59:09.00 ]
元を。

518 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 23:07:41.00 ]
>>516-517
え?>>514 に元とやらの関連部分を丸々コピペしたのですが、これだけで判断もできないの?
そちらの >>500 の解釈を具体的によろしく。

しまった、これはわすれてたなあ。
ISO/IEC 9899:1999 6.5.5.6
If the quotient a/b is representable, the expression (a/b)*b + a%b shall equal a.

519 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:12:15.48 ]
>>511文中の「?」の使い方

子供に言い聞かせるときのオカンの口調であろ

520 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:17:27.90 ]
コテハン名乗ってる割には、些細なことにうるさいやつだな。
コテ禁止スレが多いのもわかる。



521 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:19:52.99 ]
>>509のページを読んでもよくわからなかったんだけど
規格にも書いてある「代数的な商」ってどういう意味?

522 名前: ◆QZaw55cn4c mailto:sage [2012/01/01(日) 23:30:01.06 ]
>>521
-7 ÷ 3 ならば、普通に電卓等で割り算すると、-2.3333......。これが代数的な商でしょうね。文脈からの推測だけれども。
で、C99 ならば、-7 / 3 = -2
したがって、C99 の余りは = -7 - ( -2 * 3 ) = -1 でこれしかない。
でもね。C99 の剰余演算子の定義と、規格の中で使われている単語「剰余」、英語では modulo は違うと思うんです。違うとしないと意味をなさないですから。

523 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:30:41.42 ]
>>521
代数の定義そのままだと受け取ったけど。
語弊があるように言えば、数字を変数を使って処理しきれる数学の事じゃ。

524 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:39:33.47 ]
そもそも「割り算」ってなんなのよってことだ。

「−7個の林檎を3人で分けたら1人分はいくつになりますか?」

答えは「ゼロ」だよ。


525 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:40:47.50 ]
>>520
こいつは都合が悪くなるとすぐコテ外して自演するから性質が悪い。
レベルも低いが。

526 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:41:05.13 ]
逆算できるようにしましょうねって事じゃないの?

527 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:43:12.14 ]
>>522
ダリぃ。

そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。
んな瑣末な解釈は入門スレで長々グダグダやってんな。
JISの6.3.1.3でも読んで今日は寝ろ。
起きてもまだ気になるなら、あとはガチ規格スレでやれ。

528 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:45:23.66 ]
(-7 % 3) + (-7 / 3) * 3 の評価結果が -7 に戻ればオケ ってことかの

529 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 23:59:26.20 ]
負債の概念が無いとか何処の途上国人だよて話しだ

530 名前: ◆QZaw55cn4c mailto:sage [2012/01/02(月) 00:10:03.48 ]
>>527
それが、C99 では % の意味が変わっている(正確には今まで処理系依存だったのが規格にのった)んですね。その点を教えてもらったことは >>509 に感謝。

>そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。
確かに教えてもらった場所 ISO/IEC9899:1999 6.3.1.3.2 に的確に書いてますね。納得したので寝ます。おやすみなさい。

>>528
たぶん。



531 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:01:21.25 ]
トイレに行きたい気分をcで表すとどうなりますか?

532 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:02:34.27 ]
表さない
これが真理

533 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:30:49.63 ]
ccc

534 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 07:04:20.35 ]
>>532
大変参考になりました
>>533
死ね

535 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 07:53:48.16 ]
cね

536 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:19:01.01 ]
>>534
答えはCCだな。

537 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:36:02.85 ]
乱数で出した数の重複を防ぐ以下のソースを書いたんだけど、重複が出てくる。
何が悪いの?

srand((unsigned) time(NULL)); /* 乱数の初期化 */
for (i = 0; i <= 5; i++) {
ra = rand() % 42 + 1; /* raに1〜42を入れる */
if (ra == r[i]) { /* raとr[i]が同じなら */
i--;
} else { /* それ以外なら */
r[i] = ra;
}
}

538 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:40:48.45 ]
i未満の全ての要素とraを比較しましょう

539 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 04:46:25.76 ]
>>537
そりゃ今まで出した乱数を全くチェックしてないからな
チェックしてるのは今から入れようとしてる場所だけ

540 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 05:41:29.69 ]
>>538,539
数値が入ってないものと比べることになってたのか。
ありがとう。数値が入った後で比べるようにする。



541 名前:デフォルトの名無しさん [2012/01/03(火) 17:55:34.69 ]
C言語で皆が元気になるモリモリプロジェクトを作成するにはどうしたらいいですか?

542 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:58:32.52 ]
Hello,World!から始めて
四則演算、配列、条件分岐(if,switch)、繰り返し(for,while)、関数の宣言は一通りできるようになったし、
スコープ、ポインタ、構造体もある程度理解したつもりなんだが
未だにソフトウェア開発とかゲーム制作とか夢のまた夢
どうしたらその段階にいけるの

543 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:03:34.51 ]
向いてないから死ね

544 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:17:33.29 ]
>>542
既に出来るよ。
ブロック崩しとか、インベーダー風ゲームとか、
とりあえず作ってみなよ。
多分できるから。


545 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:46:12.37 ]
初めて作ったゲームは課題で作ったcursesでのブロック崩しだったなぁ


546 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:25:55.19 ]
>>542
ゴリ押しでいいならそのままでもできる
良い設計を心がけようとするとあと数年かかる

547 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:26:58.59 ]
良い設計が学べる書籍やWEBサイト教えてください

548 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:33:49.59 ]
>>542
こういう事ができるソフトが欲しいとか、
そういうのを考えて作ってみる。

549 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 19:53:33.96 ]
>>547
まずは自分で探す事を学べ

550 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:29:06.78 ]
>>547
人さまのソースを見る。
オープンソースで規模のあるコードは、それなりに上手くできている。
ソフト開発って、作りたいものを作ればいいだけ。
こんなフリーウェアほしいってのを、自分で作ればいい



551 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:34:08.11 ]
夕飯の時間に食卓に座れば食事がやってくる
そうじゃないとダメだしそうあるべきなんです

552 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:38:14.65 ]
良い設計なんかできなくてもソフトウェア自体は作れる
作りたいものが何もないのが致命的なんだよ
作りたいものさえあれば馬鹿でも経験が無くても必死に調べて
試行錯誤しながらも完成にこぎつけるんだよ

553 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:43:40.75 ]
なんだ、致命的って。
死ぬのか?
お前、死ぬのか?

554 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:43:57.89 ]
うざい

555 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:48:39.32 ]
どうやら屍のようだ。

556 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:52:39.14 ]
>>553は既に死んでいる

557 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:07:02.74 ]
>542
標準ライブラリ以外のライブラリ使用に挑戦。
グラフィック描画やパッド入力など。

558 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:49:45.36 ]
とりあえず socket.h かWinSock じゃね?

559 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 04:17:16.63 ]
>>542
OSをWinと想定するが、Win32API覚えると良いよ
面倒くさかったらC#で.netでもいいけど
文法と規格に準じた標準ライブラリ覚えたんなら、環境依存のライブラリの使い方覚えれば、もぐら叩きやじゃんけん位はすぐに作れる



560 名前:デフォルトの名無しさん [2012/01/04(水) 04:19:18.69 ]
Google電卓機能だと
-2%10=8
-2%-10=-2
-7%3=2
-7%-3=-1
C言語もこうであって欲しかった



561 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 07:23:27.43 ]
なんでC言語ってアロー演算子使うんだろう?
型判ってんだからドットでいいじゃないか

562 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 07:43:59.00 ]
なんでこの板ってアスペばっかなんだよ(´・ω・`)

563 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 08:41:41.86 ]
>>561
そりゃポインタと実体は全然別物だからね。

別に無理してC使わなくていいんじゃね?

564 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:40:06.22 ]
>>561
それだとプログラマの方が混乱するだろ


565 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:54:39.57 ]
いやならアロー演算子を使わなければいいじゃない

566 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:50:29.55 ]

           ______
          r〃〃〃 f7⌒ろ)
           l‖‖‖ ||   f灯
            |‖‖‖ ||   | |
            |儿儿儿._」⊥厶
           〔__o____o_≦ト、
.          i / ⌒  ⌒  ヽ )
          !゙ (・ )` ´( ・)   i/
          |  (_人__)    | \
          \  `ー'    /  / ー- 、
.          ,ィ(⊆≧リ≦⊇)〃   /     rク\
.       /   | ̄r少}¨ ̄〃   /    /′ ヽ
      〃 l   |  l| | l| 〃    /     /    └ヽ
     /    l  |l | |l/″   /      !  厂    \
    く,  Y   ! l」fレト!    /       | /        1
    丿  |   | 丿} じ’  /      | /         |
   /     l   | `¨      /      レ′        |

             真の思考停
    (在位 2009年9月16日〜2010年6月8日)

   民主朝の初代考停、言行不一致、虚言、脱税、
   そして外交において巨大な負の遺産を築いた。

567 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 20:37:13.22 ]
日本を滅亡に導いた人物である

568 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:04:46.44 ]
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0004
この問題なんですが、

ideone.com/iUQaM
この解答でWrongAnswerと出ます
間違っている部分がさっぱりわかりません
宜しくお願いします

569 名前:デフォルトの名無しさん [2012/01/04(水) 21:52:51.59 ]
ユーティリティーって何?
参考書見てたら、ユーティリティーの作成ってあった。

570 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:55:43.36 ]
utilityは便利な小道具の詰め合わせみたいな感じ



571 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:33:19.98 ]
は?

572 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:39:55.70 ]
>>569
なんで辞書引かないんだ?
なんでググらないんだ?

573 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:42:23.31 ]
辞書をひくごとに寿命が1分縮んでいることに気が付かないのか

574 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 22:47:55.78 ]
ググれば分かることを聞いてるのは、コミュニケーションをとりたい寂しいPG。
冷たくすんな。

575 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:06:58.54 ]
ソープにでも行けよ

576 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:17:38.87 ]
邪悪です!

577 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:24:25.57 ]
>>568
入力例と出力例が一致しただけじゃ足りない場合がよくあるよ

578 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:34:39.32 ]
>>568
四捨五入の処理入ってる?

579 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:35:55.52 ]
>>578
実際にやってみればわかると思うが、この問題で引っかかるとこはそれじゃなかったよ

580 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:41:42.03 ]
>>579
あ、わりい。



581 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:43:16.72 ]
>>577-579
四捨五入はprintfがやってくれるので問題ないみたいです
+0/-0が関係あるのかと思って-0を+0にしたりしてみたんですがダメみたいですね

582 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:48:12.56 ]
>>581
1入力(a b c d e f)で1出力ではなく、複数入力に複数出力では?
sample inputは2個の入力に対して、2個の出力を表示してる。

583 名前:デフォルトの名無しさん [2012/01/05(木) 00:08:20.53 ]
今までunsignedの付く変数型を使ったことが無かったので,試しに使ってみたのですが…
例えばunsigned int型なら,負の値は使用できないはずですよね?
int a = 100;
int b = 200;
unsigned int c = a - b;
とすると,cの値がマイナスになるのでエラーでも出るのかと思ったのですが…
問題なく c = -100 と出てしまいました.何故でしょうか?
codepadの仕様…?
codepad.org/GRuREQwD

584 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:10:36.33 ]
>>583
c = %u

585 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:12:14.37 ]
そりゃ "%d" って指定したら、そうなるだろうね。

586 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 00:45:29.78 ]
>>581
あれ、-0だとおもってたが、、、他に特に特殊な処理は入ってないけれど

587 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:35:53.02 ]
>>568
おそらく+0 -0の問題なんだろう
if(x==0)x=0;としたら通った
+0.0とするのでは対応できないということか

588 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:52:39.42 ]
いや、別途-0を+0にするロジックを入れてるっぽい書き方だけどね。>>581

589 名前:デフォルトの名無しさん [2012/01/05(木) 08:16:34.51 ]
以下のスレの >>69に、
hayabusa2.2ch.net/test/read.cgi/morningcoffee/1325667058/69

「マイナスになる可能性がないものは全部unsignedにしろ」というレスがあったのですが、
これの理由って何なのでしょうか。

590 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:37:51.07 ]
>>589
面倒だからそこは読んでないけど、負の値を扱わない保証がある場合はunsignedの方が値域を広く取れる。
しかし、どの道入門レベルでは細かいことまで気が回らないだろうから
signedで適切に組めるようになることを目指した方がいいかもしれない。
つまり、「マイナスになる可能性がないものは全部unsignedにしろ」と言うよりは
signedかunsignedかは適材適所、I/Fをよく考えて決めるべき。



591 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:58:50.47 ]
大きさが足りないとかビット演算したいとかの理由がなければ常にsignedでいいよ
unsignedだと小さな負の整数が大きな整数に変わっちゃうから下限チェックで問題が発生する

592 名前:デフォルトの名無しさん [2012/01/05(木) 09:10:05.79 ]
ありがとうございます。

593 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:21:45.78 ]
codepad.org/5x9nSXmX
↑の18行目以下の解説をどなたかお願いできませんか?

594 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:30:49.93 ]
>>593
へったくっそなコードだな。

595 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:34:57.22 ]
>>593
解説:
なんでstrstr()使わねーの? 馬鹿じゃね?
strstr()相当を作る課題なら、match_str()の中でstrlen()も使ってないのに
strncmp()使っている辺りが大間抜け。

596 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:53:16.74 ]
C言語今から勉強しようと思うんだけど初心者にオススメの本教えて下さい

597 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 16:57:44.09 ]
>>596
www.amazon.co.jp/dp/4756100716

598 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:38:08.09 ]
>593
ファイル開いて
一行づつ読み込んで
検索する文字列を探す。

標準文字列関数の動作の勉強かと思ったがstrncmpは使ってるんだよなぁ。

599 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:26:00.00 ]
#include <stdio.h>
#include <string.h>
#include <process.h>
#include <stdlib.h>

int main(){
printf("%s",INPUTj3g());
return 0;
}

char INPUTj3g(){
    char filename[30];
    int strnum;
    printf("Input file name>");scanf("%s",&filename);
    strnum = strlen( filename );
    if(filename[strnum-1] != 't'){
       filename[strnum-4] = '.';
       filename[strnum-3] = 't';
       filename[strnum-2] = 'x';
       filename[strnum-1] = 't';
       filename[strnum] = '\0';
    }
return filename;
}

上のような文字列を返すユーザ関数を作りたいのですがどうすればよいのでしょうか?

600 名前:デフォルトの名無しさん [2012/01/05(木) 19:30:22.16 ]
どうすればよいのだおうね



601 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:35:05.64 ]
>>599
突っ込みどころがありすぎ
ここで訊くより入門書読んだほうが早いレベル

602 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:45:58.68 ]
>>599
INPUTj3g()を抜けた時点でfilenameは使えなくなるから、呼び出す側で用意したほうがいいかな。
あとそれだと3文字以下の入力のときに、バッファの外に書き込むことになるね。
最後の文字が't'以外のときに強制的に".txt"に書き換える仕様もどうよって感じ。

#include <stdio.h>
#include <string.h>
#include <process.h>
#include <stdlib.h>

int main(){
char filename[100];
printf("%s",INPUTj3g(filename));
return 0;
}

char INPUTj3g(char* filename){
    int strnum;
    printf("Input file name>");scanf("%s",filename);
    strnum = strlen( filename );
    if(filename[strnum-1] != 't'){
       filename[strnum-4] = '.';
       filename[strnum-3] = 't';
       filename[strnum-2] = 'x';
       filename[strnum-1] = 't';
       filename[strnum] = '\0';
    }
return filename;
}

603 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:56:44.36 ]
>>602
ありがとうございます、ではもし拡張子が入力されていなかったら
プログラムで付け直させるにはどうすればよいでしょうか?

604 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:02:53.96 ]
>       filename[strnum-4] = '.';
>       filename[strnum-3] = 't';
>       filename[strnum-2] = 'x';
>       filename[strnum-1] = 't';
>       filename[strnum] = '\0';
strcpy(filename-4,".txt");
遅くてもこう書き直したい。

605 名前:604 mailto:sage [2012/01/05(木) 20:07:18.24 ]
>strcpy(filename-4,".txt");
俺ってバカ…
strcpy(&filename[strnum-4],".txt");


606 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:08:11.48 ]
>>603
if (strchr(filename, '.') == NULL) { /* '.'がないから拡張子が入力されていない */
 strcat(filename, ".txt"); /* 拡張子を追加 */
}

↑みたいな感じでいいと思う。
ファイル名をフルパスで入力されてディレクトリに'.'が含まれている場合とか
には対応できない。
バッファの最大長を超える長さで入力された場合とか、まじめに作るとけっこう面倒。

607 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:17:54.08 ]

>>604-607
ttp://codepad.org/ZnGnm8NK
エラー 19: 移植性のないポインタ変換(関数 INPUTj3g )

まだダメみたいです・・・orz

608 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:21:42.98 ]
>>607
INPUTj3g()は
char INPUTj3g(char* filename)じゃなくて、
char* INPUTj3g(char* filename)だった。

609 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 20:25:07.59 ]
>>604-607>>608
できました、ありがとうございます!

610 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 21:30:03.51 ]
マツコ 「K-POPはパクリ」 
ikura.2ch.net/test/read.cgi/news/1325760245/

★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 3
ikura.2ch.net/test/read.cgi/news/1325765534/

★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 3
ikura.2ch.net/test/read.cgi/news/1325765572/

★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 2
ikura.2ch.net/test/read.cgi/news/1325763378/

★マツコ「韓国人でてけ!日本が嫌だったら!出てけ」 
ikura.2ch.net/test/read.cgi/news/1325760720/

↓そーす
c3413260.r60.cf0.rackcdn.com/20s00002017.jpg
c3413260.r60.cf0.rackcdn.com/20s00002018.jpg
c3413260.r60.cf0.rackcdn.com/20s00002019.jpg
c3413260.r60.cf0.rackcdn.com/20s00002020.jpg
c3413260.r60.cf0.rackcdn.com/20s00002021.jpg
c3413260.r60.cf0.rackcdn.com/20s00002028.jpg
c3413260.r60.cf0.rackcdn.com/20s00002027.jpg
c3413260.r60.cf0.rackcdn.com/20s00002023.jpg
c3413260.r60.cf0.rackcdn.com/20s00002024.jpg



611 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:45:21.11 ]
全ての行にコメント書くとさすがにくどい?

612 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:51:15.19 ]
>>611
意味があればいいけど。

613 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 04:39:17.13 ]
>>611
よほど全編に渡ってトリッキーなやり方してるコードとか
説明のためのサンプルコードとかなら分かるが
基本的にはコメントの内容を疑ってしまうかな…
どんなコメントなんだい?

614 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:08:08.98 ]
何故エラーが出るかわかりません。

replace = strstr(ptemp,"テスト(XXXX年XX月分)");
sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]);
strncpy(replace,monthfilename,sizeof(monthfilename));

fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー

monthfilenameには201110っていう文字が入ってる。
fp2のファイルポインタはfopenした時にNULLじゃなかったから正常なファイルポインタのはず。
どんな原因が考えられますか?

615 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:54:42.66 ]
>>614
>monthfilenameには201110っていう文字が入ってる。
monthbufの間違いだよな?
それにしたって変数名からするとmonthfilenameでfopenしそうなもんだが
”テスト(2011年10月分)”って名前のテキストファイルつくんの?
もうちょっとコード出そうよ。

616 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 08:58:57.38 ]
>>614
ファイルのオープンモードの間違い
ポインタの指している先が無効
ここに書いてない部分が変なアドレスを書き換えている

617 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:03:06.00 ]
>>615
monthbufの間違いです。
わかりにくかったですね。

char monthbuf[30];
char monthfilename[50];
//日付書き換え用ポインタ
char *replace;

//月取得
puts("指定した月をyyyymmddの形式で入力して下さい");
scanf("%s",monthbuf);

sprintf(monthfilename,"%s.html",monthbuf);

fp2 = fopen(monthfilename,"w");

replace = strstr(ptemp,"テスト(XXXX年XX月分)");
sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]);
strncpy(replace,monthfilename,sizeof(monthfilename));

fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー


ptempには大量の文字列が入っています。
replaceのポインタはNULLじゃないことは確認してます。
わかりにくいですが、monthfilenameはただ使いまわししてるだけです。
よろしくお願いします。

618 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:07:15.82 ]
>>617
sizeof が問題だな
終端文字を破壊してるんだろう

おかげで読んじゃいけない部分を読んだ

619 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:16:39.45 ]
>>618
ありがとうございます
sizeofって終端文字を破壊するんですか?
よく意味がわからないんですがどうやって解決すればいいですか?
strlenにしてもだめでした。

とりあえずやりたいのは、
ptempの中にある「テスト(XXXX年XX月分)」という文字列を
ちゃんと数字の入ったものに置き換えたいんです。

620 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:01:35.06 ]
>>619
「sizeofが終端記号を破壊する」のではない。
sizeof(monthfilename)で50が得られるが、本当にreplaceしたいのは”テスト(XXXX年XX月分)”
の部分だから、50ではなく”テスト(XXXX年XX月分)”の長さが必要。

X sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)",
O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */

X strncpy(replace, monthfilename, sizeof(monthfilename));
O strncpy(replace, monthfilename, strlen(monthfilename));



621 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:16:42.62 ]
まだエラー出るじゃねーかw
もう一回自分で調べてみるわ

622 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 10:45:30.61 ]
*ptemp = "....."とかやってんじゃねーの?

623 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:23:51.71 ]
>>619
strncpy()の挙動はちゃんと調べた?
曖昧にしていると嵌るぞ。
monthfilenameに文字列を作ったら、memcpy(replace, monthfilename, strlen(monthfilename))でいいべさ。


624 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:29:38.54 ]
そもそも、replaceが見つかった時点で
const int year = sizeof("テスト(") - 1;
const int month = sizeof("テスト(XXXX年") - 1;
replace[year] = monthbuf[0];
replace[year + 1] = monthbuf[1];
replace[year + 2] = monthbuf[2];
replace[year + 3] = monthbuf[3];
あ、面倒だ。以下同様に。或いはmemcpy()を使って。
memcpy(replace + month, monthbuf + 4, 2);
ってこったろ。
monthfilenameなんて要らないじゃん。

625 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:30:29.67 ]
>>620
> O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */
えっ

626 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:40:53.45 ]
>>624
後でメンテが面倒だからその方法はあえて避けた

で、memcpyの関数を見て、「あれ?俺何でstrncpy使ってんだ?」と思ったんで、
memcpy(replace,monthfilename,strlen(monthfilename));
って書いてみたら一発でいけました
strncpyは最後に終端文字が自動的に付加されないことは知ってたから、
使ったのに何でダメだったんだろう?
あくまで文字列コピー用の関数だからかな?
まあとりあえずmemcpyでいけましたんで良しとします。

ご迷惑をおかけしました。
ありがとうございました。

627 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:44:25.52 ]
確かに>620は間が抜けている。

>>604
strcpy()は遅くないよ。

628 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 11:52:13.36 ]
>>626
sizeof使ってたからじゃなくてか?

629 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:17:00.56 ]
>>628
sizeofをstrlenにしても、strncpyを使ったらだめでした

原因分かる人が居るなら教えて欲しいものですね

630 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:20:55.01 ]
fputs で落ちてるんじゃなくて strncpy の内部で落ちてるんでないかい?

replace の器が 丁度 ,"テスト(XXXX年XX月分)" で終るような場合
sizeof(monthfilename) = 50 で複写すると器の範囲を突破するもの



631 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:27:02.05 ]
エスパー試験か。

632 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:31:48.07 ]
>>630
残念
replaceの器であるptempで該当の文字がある部分は、終端よりも大分前だ。
たぶん終端よりも2000バイトぐらい前。
わかる人いない?
このスレならレベル高そうだから誰かわかると思ったんだけど。
いや、別にバカにしてないよ

633 名前: ◆QZaw55cn4c mailto:sage [2012/01/06(金) 12:37:10.20 ]
codepad.org/
話はそれからだ。

634 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:37:53.90 ]
>>632
コードを全部あげてみなよ。

635 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:42:10.40 ]
ptempの文章はあるテキストファイルから読み込んでるから無理
他のコードはvector使いまくってて絶対読めないよ
あと身バレしそうだし。
再現できるコード作ってみるわ。余裕があれば。

636 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:47:50.21 ]
>>635
釣だろうけど手空きだったので。
codepad.org/QjXEQX0c


replace = strstr(ptemp, "テスト(XXXX年XX月分)");
で結果NULLの対策サボってるためとエスパーしてみた。

637 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:56:15.99 ]
>>636
実行したら最後に数字の8が書き出されたぞ
あとなんで改行文字入れてるのか理解できん。必要か?
結果NULLについては事前に調べて問題なかったから、
あえて書いてないだけ。

638 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:00:48.51 ]
配列のサイズが実は50ではない、ファイル名のプレフィクスが実はテストではない
strncpyしたあとの文字列を標準出力に出してみるとかデバッガで見てみるとかしたらどう

639 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:01:52.78 ]
ああでもmemcpyならうまくいったのか。
wchar関係とかは

640 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:03:28.82 ]
>>637
再現コードを作ってからにしろ、低脳が。



641 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:08:30.36 ]
ていうか、replaceの位置自体、ptempの終端から2000バイト以上も前の位置なんだから、
そこにもし50バイト書き込んでもちょっと上書きされる部分が増えるだけで、
別に不正な領域に書き出してるわけじゃないじゃん?
もしおかしい領域に書き込んでたら、strncpyの時点でエラーが出るはずだしね。
fputsでエラーが出る理由がわからん。
0x0000000へのアクセス違反っぽいエラーだけど。
なぜmemcpyに変えるだけで、fputsでエラーが出なくなるのかが意味不明。
別に書き換えてる領域は変わんないんだし。

面倒になってきたからゆるーく考えるか、スルーして下さい。
再現コードも作る時間ないかもしれんから

642 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:09:33.30 ]
分かったよ
再現コードは必ず作るから一日ぐらい待っててくれ。

643 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:10:33.20 ]
>>641
実はC++/CLIでpin_ptr使ってないからってこともないんだよね。

644 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:12:05.31 ]
糞CLIなんか使わないよ

645 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:12:28.81 ]
vectorの内部を直接触ってるとか

646 名前:614 mailto:sage [2012/01/06(金) 13:13:58.28 ]
ptempはただの動的確保したバッファだし、
書き出し部分ではvector関連は一切触ってない

647 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:14:02.61 ]
どっかで文字列終端コードを破壊しちゃってるような感じのコケ方だなあ

648 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 13:37:29.65 ]
再現しないコード
codepad.org/VLVofCEN

649 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:16:16.30 ]
もしLinuxで書いてるなら、614はvalgrind とかの使い方を覚えるべき。

650 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:19:38.96 ]
なんでvgrind?と思ったがそんなのがあるのか。



651 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:40:50.89 ]
strlenは無条件にバイト数を返して、strncpyの引数3は文字数な環境だとか。

652 名前:614 mailto:sage [2012/01/06(金) 15:50:59.85 ]
すいません
strncpyでもいけました。

ですが、monthfilenameのバッファを適当な別のバッファに変えて、

sprintf(tempbuf,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]);
strncpy(replace,tempbuf,sizeof(tempbuf));

ってしないとだめでした。
monthfilenameを使うとやっぱりエラーが出ます。
まあmonthfilenameっていう使わなくなったバッファを使いまわした罰だと思いますが、
sprintf実行した時点でちゃんと終端文字が付加されるので、
おかしくなるはずはないと思うんですが何でですかねぇ。


653 名前:614 mailto:sage [2012/01/06(金) 15:55:40.77 ]
それとLinux使ってないってかさっぱりわからないです。
ありがとうございました。

654 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:56:45.68 ]
で、再現コードは。
どこまで低脳なんだ。

655 名前:614 mailto:sage [2012/01/06(金) 15:59:49.90 ]
再現コードは作れませんでした
今は元コード使って実験してます。
だって再現しないんだもん

656 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:11:27.36 ]
fopen に渡したファイル名のポインタを暗に保持してて、書き換え不可な処理系とかのオチだったりして
 char name[] = "hogehoge";
 FILE* fp = fopen(name, "w");
 strcpy(name, "a");
 fputs("tekitou", fp); これだけで沈

657 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:17:46.01 ]
まったく、どっからそんな妄想がわいてくるんだよ…

658 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:35:50.94 ]
つか最初から処理系を書けよ。

659 名前:614 mailto:sage [2012/01/06(金) 16:44:44.43 ]
VC2008 express editionとwin 7のコンビです

660 名前:614 mailto:sage [2012/01/06(金) 16:46:02.01 ]
>>656
あ、これかもしれないです。
ちょっと待ってて下さい。



661 名前:614 mailto:sage [2012/01/06(金) 16:49:32.60 ]
あーでも再現コードでやってみても再現しないですね。
元コードでは相変わらずエラー。
何が違うんですかこれ

662 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 16:55:53.28 ]
すでに他のところでヒープかスタックがぶっこわれてるに10ジンバブエドル

663 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:03:26.64 ]
>>614フィルターを通すと出てくる情報がすべてゴミになるなw
身バレ云々バカじゃね

664 名前:614 mailto:sage [2012/01/06(金) 17:04:02.24 ]
でも原因は明らかに>>656ですよね
ファイル名として使ったバッファは使いまわさないようにします。
ありがとうございました。

665 名前:614 mailto:sage [2012/01/06(金) 17:04:52.46 ]
バカというかマヌケですね
ありがとうございました

666 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:08:46.22 ]
>>656 で落ちる処理系なんてどんな行儀の悪いコンパイラだよ
そのゴミみたいなコンパイラの名前を知りたいもんだ

667 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:23:28.39 ]
いや、馬鹿だよお前
プログラムやめるべき

668 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:31:23.37 ]
>>665
落ちるコードの全体ってどこにあります?
未解決なら見てみたいんだが。

669 名前:614 mailto:sage [2012/01/06(金) 17:34:37.76 ]
>>666
>>659に書いてますが

>>667
自分用のプログラムだから手抜いて作ったんだよ
配布するやつはちゃんと作ってるから安心しろ

>>668
全体のコードは>>614の50倍ぐらいの長さもあるから無理
身バレの可能性あるし

670 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 17:52:40.25 ]
>>656が原因とも確認してねーんだろ?
だいたい、年を書くのに%c%c%c%cとか使うとこから程度は知れてるがな。




671 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:01:28.93 ]
>>670
いや、だから再現するために>>656のコードと同じことしてみたけど再現しなかったんだって
>>661で言ってるよ
元コードだと起こって、再現するために書いたコードでは起こらなかった
コード量による違いでもあるのか?

672 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:02:46.49 ]
>>670
別に普通だろ。
それに自分用のプログラムだから動けばいい程度でしか作ってないし

673 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:05:55.10 ]
>>672
これが処理できるか確認してもらえますか?

int main(void){
char buf[] = "aaa";
buf[1] = 'b';
puts(buf);
}


674 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:07:33.29 ]
>>673
できた
aba


675 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:07:43.12 ]
>>672
じゃぁ>>664は何なんだよ。
頭腐ってるだろ、お前。
>>673
それに何の意味があるんだ。

676 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:08:04.43 ]
>>674
ごめん。

677 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:11:00.13 ]
>>675
>>664はそれ以外原因が思いつかないからそう書いたんだよ
一番筋が通ってるし、なんか聞いたことある気がしたしな

678 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:18:07.50 ]
なんだその理由は。
これがゆとりが進化した形なのか。

679 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:19:09.05 ]
少なくともお前よりはゆとりでない自信はある

680 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:24:00.19 ]
じゃぁなんで>>662の指摘は無視なんだ?
デバッガ使ったことあるか?



681 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:26:13.91 ]
デバッグなんてとっくの昔にやってるわ
それでもわからんからここに来たんだろーが

682 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:29:34.15 ]
ゆとり乙。

683 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:30:51.12 ]
>>682
はいはい
クソガキは寝てろ

684 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:42:33.72 ]
デバッガの使い方も知らないでよく言うな、まったく。

685 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:48:51.15 ]
今回のはデバッガを使っても分からない問題だろ
だからここに来た
それだけ

686 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:53:10.35 ]
なんのためのデバッガだよ。
printfだけでもわかるだろ。

687 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:54:55.88 ]
わかんねーよ
printfするまでもなく、ブレークポイントしかけて変数の中身見てるわ
それでもわかんなかったんだよ

688 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:55:47.73 ]
それはお前が低脳なだけ。
再現コードも出さずに迷惑なだけ。

689 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:55:53.74 ]
先に俺の実力とどんなデバッグをしたか書いとけばよかったな
個別に黙らせてると疲れるわ

690 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:56:50.13 ]
再現コードがかけないんだから仕方ないだろ
まだはっきりと原因特定できてないんだから
めんどくせーからまた後でくるわ



691 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:58:11.07 ]
いやいや、すごいよ、お前は。
落ちる場所までわかってるのに理由がわからないとか。
しかもデバッガ上で再現してんだろ?
ほんと、すごいわ。

692 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:04:31.37 ]
元コードのデバッガ上で再現してるよ
変数見てもおかしくないんだから原因わかるわけねーだろ

693 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:07:03.13 ]
>>692
問題のソースは>>636のやつか?

694 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:16:44.35 ]
つか最初からmonthfilename使い回そうとかバカ確定なんだからさ

695 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:17:11.92 ]
しかし、よくそんなレベルでこんなこと>>689言えるね、おれもびっくりするよ。

696 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:20:46.07 ]
>>693
問題のソースは>>617です。
ですが>>652のように、monthfilenameを使わずに、
別のバッファを使えば問題なく処理できました。

それともう一回検証してみたところ、memcpyでもstrncpyでも>>617のソースでやればエラーがでました。
「memcpyならいけた」という私の発言は間違いです。失礼しました。

>>617のソースは全体のソースの一部です。
再現しようと>>617のソースを切り取って、
適当な文字列を作ってptempに代入してやってみたら、何故かエラーが出ませんでした。
ですので原因がはっきりと特定できていない状況です。

でも状況からして>>656の方が指摘していただいてることが
一番可能性が高いと個人的には思っています。

そろそろウザイと思われてると思いますので、
スルーしてくださって結構です。

697 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:22:13.73 ]
>>694
お前は人のレス読んでるのか?
自分用のプログラムだから手抜いて作ってるって言っただろが
めんどくせーから使いまわすか、って気持ちで作ってたんだよ
だからそんなとこ突っ込んでも意味ねーよ

698 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:22:43.71 ]
はいはい、低脳乙。

699 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:23:45.56 ]
マジメにレスしてくれた方はありがとうございました。

その他のクズの皆さんは死んでください

以上。

700 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:25:13.29 ]
迷惑かけるだけかけて、ほんとゆとりな上にクズが何言ってるんだか。



701 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:30:40.02 ]
>>696
妙なところを書き換えてない限り
>>656 で落ちるのはありえないんだよマヌケ

702 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:32:32.06 ]
>>701
再現コードでは落ちなかったんだよ
元コードだと落ちるんだよ
俺も原因わからねーよ

703 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:35:02.17 ]
で、まだ>>689なの?

704 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:44:33.81 ]
>>699
win7でvc++2008で試してみたが。。。
表記されていないptempを「テスト(XXXX年XX月分)」にして、
strncpyの第三引数をstrlen(monthfilename)にすると普通に動いた。

705 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:50:20.27 ]
こんな聞きかたしてるバカは死ねってことか。了解。

706 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:17:17.89 ]
早く>>689頼むよ。
どんだけすごいのか教えてちょ。

707 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:52:48.43 ]
>>689
当たり前だろ。
質問するときは、どういうことを調べたかとか試したかとか書けよ。
プログラムの技術以前の問題だ。

708 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:05:14.27 ]
どこがおかしいか特定できないのに、ここがおかしいはずだって思い込むアホが多すぎて困る

709 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:11:25.65 ]
思い切りから不具合を見つけることもあるんだが。
こいつCの仕様を丸暗記してるのか?

710 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 21:15:55.85 ]
思い切り?
こいつってどいつのことだ。
普通、わからなかったら仕様書確認するだろ。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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