5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C言語なら俺に聞け! Part 105

1 :デフォルトの名無しさん:05/03/18 12:38:14
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンク、関連スレは>>2-13あたり

C言語なら俺に聞け! Part 104
http://pc5.2ch.net/test/read.cgi/tech/1110099763/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/


2 :デフォルトの名無しさん:05/03/18 12:38:40
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.cygwin.com/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm

3 :デフォルトの名無しさん:05/03/18 12:41:05
修正は次スレ移行お願いします

4 :デフォルトの名無しさん:05/03/18 12:41:28
>>3
何語だ俺

5 :デフォルトの名無しさん:05/03/18 12:45:48
>>1
乙。隔離されなくなったね。

6 :デフォルトの名無しさん:05/03/18 13:07:46
ねずみ,うし,とら
という文字列を
ねずみ
うし
とら
の3つに分割するにはどうすればいいですか?

7 :デフォルトの名無しさん:05/03/18 13:25:16
CSV
宿題っぽ

8 :デフォルトの名無しさん:05/03/18 13:32:35
>>6
strtok を使う。但し、日本語文字列が入っている場合は誤分割する可能性もあるので注意。

9 :デフォルトの名無しさん:05/03/18 13:37:12
>>7,8
説明が下手なので、自分なりに分かりやすく書いたら
宿題っぽくなってしまいました・・・すみません
ありがとうございました

10 :デフォルトの名無しさん:05/03/18 14:43:37
>>6
use sscanf()

11 :デフォルトの名無しさん:05/03/18 15:09:34
>>10
使っても文字列は分割されない。

12 :デフォルトの名無しさん:05/03/18 19:02:03
>>11
','で分割することはできるよ

13 :デフォルトの名無しさん:05/03/18 20:09:54
>>12
私の環境では出来ませんでした。

【ソースプログラム】
/* separatebycomma.c */
#include <stdio.h>

int main(int argc, char** argv)
{
char* str = "ねずみ,うし,とら";
char s[3][7];
int i;

sscanf(str, "%s,%s,%s", s[0], s[1], s[2]);
for (i=0; i<3; i++)
printf("%s\n", s[i]);
return 0;
}

【実行結果】
>separatebycomma
ねずみ,うし,とら
うし,とら


>

14 :デフォルトの名無しさん:05/03/18 21:05:23
こんなでできた、けど、実装依存?

#include <stdio.h>
char s1[7], s2[5], s3[5]; /* '\0'が入らないのでここ */
main()
{
sscanf("ねずみ,うし,とら", "%6c,%4c,%4c", s1, s2, s3);
printf("[%s|%s|%s]\n", s1, s2, s3);
}

15 :デフォルトの名無しさん:05/03/18 21:09:10
>>14
うし,ねずみ,とら に変更するにはソースを書き直さないといけないのか
汎用性のかけらも無いソースだ

16 :デフォルトの名無しさん:05/03/18 21:12:33
>>13
sscanf(str, "%[^,],%[^,],%[^,]", s[0], s[1], s[2]);

>>14
仮名一文字が2バイトとは限らない。

17 :13:05/03/18 21:23:00
>>16
実行結果は変わりませんでした。

全角文字の入った文字列に ','(コンマ)に該当する文字コードが含まれているか、
そうでなければ sscanf で文字列を区切り文字で分割すること自体が出来ないのでは?
後で Linux 環境でも試してみます。

strtok を使って、

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

/* 中略 */
char* str = "ねずみ,うし,とら";
char* ptr;
・・・・・・

ptr = strtok(str, ",");
while (ptr) {
printf("%s\n", ptr);
ptr = strtok(NULL, ",");
}

/* 以下略 */

とすれば問題なく出来ます。

18 :デフォルトの名無しさん:05/03/18 21:30:20
Win2000 Borland C++ 5.5.1
普通に出たが。

19 :10:05/03/18 21:37:28
しかし、なんでこんな初心者向けネタ引き摺ってるんだ?

>>17
>全角文字の入った文字列に ','(コンマ)に該当する文字コードが含まれているか
確認してから書け。

>sscanf で文字列を区切り文字で分割すること自体が出来ないのでは?
憶測を書くな。

>実行結果は変わりませんでした。
試したソースを貼ってみろ。

20 :デフォルトの名無しさん:05/03/18 21:55:36
>>19
Please Use your head and skill , Show me your nice code.


21 :デフォルトの名無しさん:05/03/18 22:04:51
もう出てると思うが・・・
あふれるからniceとは言わないけど。

22 :415:05/03/18 22:15:29
>>19
>>全角文字の入った文字列に ','(コンマ)に該当する文字コードが含まれているか
>確認してから書け。
確認したところ、少なくとも SJIS では「ねずみ」「うし」「とら」のいずれにもコンマに該当するコードがないことを確認しました。

>>sscanf で文字列を区切り文字で分割すること自体が出来ないのでは?
>憶測を書くな。
現に私の環境では出来なかったので、少なくとも C の標準的な仕様(ANSI等)では保証されていないことだけは確かです。
そうでなければ、私の持っている C コンパイラに欠陥(仕様に違反しているなど)があるのでしょう。

>>実行結果は変わりませんでした。
>試したソースを貼ってみろ。
すみません、コンマとピリオドを間違えていたので今訂正して再びコンパイル・実行しました。
(長くて1レスに入りきらなかったので、ソースコードと実行結果は次レスに書きます)

23 :415:05/03/18 22:19:21
続きです。

【ソースコード(separatebycomma2.c)】
#include <stdio.h>

int main(int argc, char** argv)
{
char* str = "ねずみ,うし,とら";
char s[3][7];
int i;

sscanf(str, "%[^,]%[^,]%[^,]", s[0], s[1], s[2]);
for (i=0; i<3; i++)
printf("%s\n", s[i]);
return 0;
}

【実行結果】
>separatebycomma2
ねずみ


>
【以上】

実行結果は変わりましたが、期待通りの実行結果にはなりませんでした。
よって、C言語の仕様上 sscanf を使った文字列分割は保証されていないと言えます。
後で Linux 環境でも試してみますが、おそらく正常に実行されないでしょう。

24 :デフォルトの名無しさん:05/03/18 22:22:54
sscanf(str, "%[^,],%[^,],%[^,]", s[0], s[1], s[2]);
糸冬了

25 :デフォルトの名無しさん:05/03/18 22:25:56
>>23
まず最初に自分を疑えよ・・・


26 :デフォルトの名無しさん:05/03/18 22:35:44
人の意見も聞かず自分だけの世界に閉じこもって
仕様仕様って……

27 :415:05/03/18 22:51:47
>>24
どこがおかしいんですか?

>>25
少なくとも文法上は間違っていないはずです(コンパイラを通ったので)。
問題があるとすれば
s[0] -> &(s[0][0])
とかだと思いますが、この場合 s[0] と &(s[0][0]) は同じもの(アドレス)を指します。

>>26
人の意見をちゃんと聞いて、それに忠実に従ってプログラムを書いてコンパイル・実行した結果が
おかしいのですが・・・
もし私が人の意見を聞いていないというならば、具体的にどの意見を聞いていないかを
教えていただけますか?
もしどなたかの意見を聞いていなかったり何らかの間違いがあれば素直に認めます。

自分の正当性を意地でも主張するつもりはありません。
ただ、私の環境で>>16さんのコードなどを実行した結果正常に動作しなかったという事実を伝え、
その原因が
>>16さんのコードが標準的なC言語の仕様で期待通りの動作が保証されていない(たとえ多くの場合問題がないとしても)
・当方の環境に問題がある(インストールしたCコンパイラ(フリー)のバグなど)
のいずれかであると考えている、と言っているだけです。

28 :13:05/03/18 22:53:03
>>27の名前欄は入力ミスです。すみません。

29 :デフォルトの名無しさん:05/03/18 22:53:35
>>27
一 字 一 句 間 違 え ず に 打 て ! !

30 :デフォルトの名無しさん:05/03/18 22:58:35
(・∀・)ニヤニヤ

31 :デフォルトの名無しさん:05/03/18 23:04:13
printf("%p\n", (void *)0);
これって仕様としては何が出力されるのが正しいのですか?

32 :デフォルトの名無しさん:05/03/18 23:05:57
>>27はわざと間違えて釣りを楽しんでるんだろ
暇なこった

33 :27:05/03/18 23:15:11
>>29
すみません、sscanf の第2引数の文字列を写し間違えました。
コンマが多くて見づらかったので、つい間違えてしまいました。
コピペして再び試してみたら、正常に実行されました。

(自分で設定したフォントの環境で)見づらいプログラムをコピペしないで書き写してしまったのが
ミスの原因でした。すみません、お騒がせしましたm(_ _)m

34 :デフォルトの名無しさん:05/03/18 23:21:55
>>31
%pの出力形式は処理系定義。「正しい出力」はコンパイラによって違う。
(出力するのが[ナ|ヌ]ルポインタかどうかには関係ない。)

35 :27:05/03/18 23:27:32
>>31
0 だと思いますが・・・
当方の環境では「00000000」と表示されました。

ヌルポインタは、それを指しているポインタ変数に値を入力しない限り、
ただの 0 です。

FILE* fp;

if ((fp = fopen("something.txt", "rt")) == NULL) {
/* エラーメッセージを表示 */
exit(0);
}

とかで、fopen に失敗したら fp に NULL(= 0) が代入されることを考えれば、
ヌルポインタ の値(この場合は fp )は 0 で、それを指すもの(この場合は *fp )は存在しない、
という解釈でいいと思われます。

>>32
釣りではありません。(目が悪いから)小さな記号を見落として、それに気づかなかったんです。

36 :デフォルトの名無しさん:05/03/18 23:38:16
>>1


37 :デフォルトの名無しさん:05/03/18 23:39:13
>>27 が釣りでないのは信用しても良いが、
>>35 はどう見ても釣りにしか見えん。

38 :デフォルトの名無しさん:05/03/18 23:46:33
あんま関係ないが、自分がよく使う環境の printf() は
printf("%s", 0); とすると「(null)」なんて結果になるな。


39 :35:05/03/19 00:18:02
>>37
試しにフォントを「MS Pゴシック 9pt」にして>>16の前半を読んでみて下さい。
どれだけ見づらいかが分かりますから。

40 :デフォルトの名無しさん:05/03/19 00:31:31
言い訳スンナボケ


41 :デフォルトの名無しさん:05/03/19 00:32:43
コンマではなくカンマだ ぼけ

42 :デフォルトの名無しさん:05/03/19 00:45:19
0.01
レイコンマレイイチ(水泳とかで)

43 :デフォルトの名無しさん:05/03/19 00:47:48
さかさまからよんでみろ!

44 :35:05/03/19 00:58:44
>>40
言い訳じゃなくて、「釣りではない」と言っただけです。

>>41
ttp://www.excite.co.jp/dictionary/english_japanese/?search=comma&match=beginswith&dictionary=NEW_EJJE&block=36172&offset=4
発音記号を見ても「カンマ」と「コンマ」の2通りあるから、「コンマ」が間違いとは言えません。
「コンマ」の方がよく使われるし分かりやすいと思ったから「コンマ」と書いたんです。
NULL の正しい読みを「ナル」だと思っている人が多いけど実はドイツ語だから「ヌル」が正しいように、
もしかしたら comma も英語以外の言語が由来で「コンマ」が正しい、という可能性もあります。
日常生活でよく使うほうを使えばそれでいいじゃないですか。

45 :デフォルトの名無しさん:05/03/19 01:00:54
自分のミスを正当化したいだけだろ

46 :デフォルトの名無しさん:05/03/19 01:01:23
もう、コンマじゃなくてマンコって呼べばいいじゃん。

47 :デフォルトの名無しさん:05/03/19 01:02:10
comma==カンマ
null==ナル
だ、それぐらい おぼとけ ぼけ

48 :デフォルトの名無しさん:05/03/19 01:02:38
> NULL の正しい読みを「ナル」だと思っている人が多いけど実はドイツ語だから「ヌル」

いいえドイツ語じゃないです。

49 :10:05/03/19 01:02:40
やっと帰れた。

>>39
自分が如何にプログラミングに向いていないか理解できたかね。

50 :デフォルトの名無しさん:05/03/19 01:04:21
英語のnullは、フランス語もしくはラテン語のnullusが語源。
だから「ナル」が正解。ドイツ語はそれからの派生。

voidはフランス語が語源。


51 :デフォルトの名無しさん:05/03/19 01:32:51
ウソをウソと・・・・

52 :デフォルトの名無しさん:05/03/19 01:39:39
いい加減見苦しい。

53 :デフォルトの名無しさん:05/03/19 01:40:44
おまえがな

54 :35:05/03/19 01:43:11
>>45
ミスについては私が悪かった、その原因は文字が小さくて読みづらかったから、と言っているだけです。
「釣りではない」というのが「自分を正当化している」と解釈される方が不思議です。

>>47
>comma==カンマ
これは間違っていません。でも、「コンマ」も間違っていません。

>null==ナル
それは英語の発音です。書店で独和辞典を立ち読みして null を調べれば載っていますし、
発音が「ヌル」だと分かるはずです。ドイツ語は基本的にローマ字風に発音するので。

ドイツ語の null(ゼロの意味) → 英語圏に伝わって「ナル」と読まれる → 日本に伝わって、null は英語由来だと思われる

だから、null==ヌル が本当で、null==ナル は本来の読み方ではありません。

>>48
ドイツ語の授業で習ったので間違いありません。null は「ヌル」と発音し、意味は「0(ゼロ)」です。

>>49
プログラミングのスキルと視力は別問題です。

>>50
>英語のnullは、フランス語もしくはラテン語のnullusが語源。
>だから「ナル」が正解。ドイツ語はそれからの派生。
それは知りませんでした。調べてみます。

>voidはフランス語が語源。
それはうろ覚えですが聞いたことがあります。

55 :デフォルトの名無しさん:05/03/19 01:48:55
ソースに書かれている意味を理解しようともせず、視力のせいか。
スキルも無いし、見苦しい。

56 :デフォルトの名無しさん:05/03/19 01:48:59
> でも、「コンマ」も間違っていません。

いいえ。カンマです

57 :デフォルトの名無しさん:05/03/19 01:49:49
> ドイツ語の null(ゼロの意味) → 英語圏に伝わって

こういうデマを平気でいうのが ぼけ
フランス語や英語が先。
ドイツ語があと

58 :10:05/03/19 01:51:17
>>54
漢字コードについて、調べもしないで憶測で書く。
調べるとなったらコード全体について調べずに該当文字のみを調べる。
コードについて、コピペせずに自分で入力する。
巧く動かないとなったらコピペも試さず他人の指摘を間違いと思い込む。
挙句自説に拘泥する。
枚挙に暇がないが、どれもこれもプログラマ(というよりはモノ作り全般)に向かない資質だと思うがね。

59 :デフォルトの名無しさん:05/03/19 01:53:34
> 向かない資質

こいつぼけ。向くのは「資質」だか、
向かないのは資質とは よばん。

おまえぼけすぎ

60 :デフォルトの名無しさん:05/03/19 01:54:11

こんまつけだく

61 :デフォルトの名無しさん:05/03/19 01:58:54
>向くのは「資質」だか
?

62 :デフォルトの名無しさん:05/03/19 02:08:35
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void hoge(char* str, char *foo[]);
int main()
{
char foo[2][8];
char str[256] = "123,abc";
hoge(str, (char**)foo);
printf("%s:%s\n", foo[0], foo[1]);
return 0;
}
void hoge(char *str, char *foo[])
{
char* temp;
temp = strtok(str, ",");
puts(temp);
strcpy(foo[0], temp);
temp = strtok(NULL, ",");
puts(temp);
strcpy(foo[1], temp);
}

writtenになることができないとエラーが出ます
どうにかしてください

63 :デフォルトの名無しさん:05/03/19 02:16:15
>>62
どうにもする気にはならんが、fooの関数への渡し方が間違い。

64 :デフォルトの名無しさん:05/03/19 02:19:43
void hoge(char* str, char **foo);
void hoge(char* str, char ***foo);
どっち?

65 :27:05/03/19 02:21:49
>>55
視力のせいにして自分を正当化してなんかいません。
見慣れないコードだったから読み間違えてしまったのです。
それに、私が悪かったと認めました。
言い訳ではなく、ミスしてしまった原因を書いただけです。
コピペすればミスを防げたのに、それをしなかった私に落ち度があることは認めました。
どうしてそこまで「言い訳」にこだわるのですか?

>>56
カンマも正しいですが、コンマも間違いではありません。
その証拠として、excite へのリンクを貼りました。
発音記号が読めればコンマも正しいことが分かるはずです。

>>57
>フランス語や英語が先。
フランス語はともかく、英語が先だとは思えません。
アメリカが出来たのは 1776 年で、ドイツはそれより以前から存在します。
英語が世界に広まったのは、アメリカが力を持つようになったからではないですか?

>>58
>漢字コードについて、調べもしないで憶測で書く。
漢字コードには主にJIS,SJIS,EUCの3種類が存在することや、それぞれの特徴も知っています。
コード変換のプログラムも作ったことがあります。
調べなかったのは、問題が発生する可能性が低く、あえて調べる必要がないと判断したからです。

>調べるとなったらコード全体について調べずに該当文字のみを調べる。
この問題については該当文字を調べれば必要十分だからです。

>コードについて、コピペせずに自分で入力する。
それは私の落ち度でした。

66 :デフォルトの名無しさん:05/03/19 02:26:43
>>65
あなたは人を不快にする才能があるな
自分の書き込みを読みかえせ

67 :デフォルトの名無しさん:05/03/19 02:29:42
ついでに、煽り耐性が低いことや言い訳がましいこともプログラマ向きじゃないね。
つーか、2ch向きじゃないというべきか。

>釣りではありません。(目が悪いから)小さな記号を見落として、それに気づかなかったんです。
>視力のせいにして自分を正当化してなんかいません。
何をかいわんや。

68 :35:05/03/19 02:33:57
>>58
>巧く動かないとなったらコピペも試さず他人の指摘を間違いと思い込む。
指摘の意図が分からなかったからです。

>挙句自説に拘泥する。
確かにその傾向はあると自覚しています。それは私の悪い癖の一つですが、
高校の頃に数学の授業や問題集の解答に誤りが多く、それをよく指摘していたことがあったので、
その頃の癖を未だに引きずってしまっているのが原因だと思います。
でも、自分が間違っていることが納得できれば素直に認めます。

>枚挙に暇がないが、どれもこれもプログラマ(というよりはモノ作り全般)に向かない資質だと思うがね。
向かないも何も、現にプログラマをやっていますが。

69 :デフォルトの名無しさん:05/03/19 02:35:35
うわー、頼むから漏れと同じプロジェクトで仕事しないでね。

70 :デフォルトの名無しさん:05/03/19 02:36:46
>>68
もう来るな。

71 :デフォルトの名無しさん:05/03/19 02:37:09
他人の間違いを指摘する前に、自分に間違いがないか検証する習慣がなくてよく社会に適合でき・・・てないのか(プ

72 :35:05/03/19 02:40:04
>>66
攻撃的なレスが多いからです。

>>67
>ついでに、煽り耐性が低いことや言い訳がましいこともプログラマ向きじゃないね。
現職のプログラマにプログラマ向きじゃないと言うのはおかしいと思いますが。
プログラマ向きじゃないのに、どうしてプログラマになれたんでしょうかね。

>つーか、2ch向きじゃないというべきか。
2chで煽りや荒らしがよくあるのは知っています。
煽りだと判断したレスは無視しています。
それとも、あなたも煽りですか?

73 :デフォルトの名無しさん:05/03/19 02:42:14
雉も鳴かずば撃たれまいに・・・

74 :デフォルトの名無しさん:05/03/19 02:44:15
犬も歩まざれば棒に当たるまいに・・・

75 :35:05/03/19 02:46:56
>>69
ご心配なく。(おそらく)会社が違うから同じプロジェクトを担当することはまずないでしょう。

>>70
あなたに言われる筋合いはありません。

>>71
多くの場合、自説に間違いが無いかどうか十分に検証しています。
自説を検証して間違いが無いと判断し、かつ相手に誤りがあると確信したときに
初めて相手の誤りを指摘します。
それに、現に社会に適合しているから会社で何の問題も無く働いているのですが。

76 :デフォルトの名無しさん:05/03/19 02:56:47
おー面白い奴が来ているからage

77 :デフォルトの名無しさん:05/03/19 03:07:14
なんだ。終わったのかよ。
やだねえ、自尊心のかたまりは。

78 :デフォルトの名無しさん:05/03/19 03:10:52
丸い卵も切りようで四角
ものも言いようで角が立つ

79 :デフォルトの名無しさん:05/03/19 03:54:38
「自分は間違っていない」

「自分が間違えたのは○○のせいで、仕方がない。嘘だと思うなら試してみろ」

「自分は社会に適合している。周りに煙たがられてなどいない」

80 :デフォルトの名無しさん:05/03/19 05:13:54
くそうぜーな、長文レスなんとかしてけろ・・・

81 :デフォルトの名無しさん:05/03/19 07:03:37
>>31 >>35 >>38
C99の規格書はもってないので、
kandrから関係ありそうなところをしらべてみた。

APPENDIX A7.10
Equality operators
...
a pointer may be compared
to a constant integral expression with value 0, or
to a pointer to void.

APPENDIX A6.6
Pointers and Integers
...
An integral constant expression with value 0,
or such an expression cast to type void *,
may be converted,
by a cast, by assignment, or by comparision,
to a pointer of any type. This produces a null pointer...

APPENDIX A7.3.2 Function Calls
...
The order of evaluation of arguments is unspecified;
...
However, the arguments and function designator
are completely evaluated,
including all side effects,
before the function is entered.

あと、APPENDIX A7.17代入式, APPENDIX B 表B-1 Printf変換あたり。

82 :デフォルトの名無しさん:05/03/19 07:30:18
NULL がオールゼロビットとは限らないなんて事
プロならみんな知ってるだろ

83 :デフォルトの名無しさん:05/03/19 10:12:04
ですなぁ。

84 :デフォルトの名無しさん:05/03/19 11:07:43
>>82
ANSI とかの規格では NULL をゼロと定めていないかもしれないけど、
世界の C コンパイラの99%は stdio.h とかで
#define NULL 0
と定義されているはず。
もし NULL != 0 というCコンパイラが実在したらソースよろ。

85 :デフォルトの名無しさん:05/03/19 11:46:10
煽り耐性がないのはお前らもだろ。
自説に固執するのは、お前らもだろ。
なんて見苦しいスレだ。

86 :82:05/03/19 11:47:08
>>84

>>35あたりからの流れを読んでレスしてくれよ…

87 :デフォルトの名無しさん:05/03/19 12:27:04
>>84
過去ログも読んだ方がいいよ

88 :デフォルトの名無しさん:05/03/19 12:42:54
つ ttp://www.kouno.jp/home/c_faq/c5.html#5

89 :デフォルトの名無しさん:05/03/19 13:06:23
コンピュータ内部表現のヌルポインタは0とは限らない
しかしC言語でのNULLは0(または(void*)0)であり
処理系に応じたヌルポインタにしてくれる

90 :デフォルトの名無しさん:05/03/19 13:14:19
いつまでもぬるぽなことやってんじゃないよ〜

91 :デフォルトの名無しさん:05/03/19 13:24:12
>>90
ガッ

NULL PO

92 :デフォルトの名無しさん:05/03/19 14:33:22
配列a[ ]とb[ ]の値を交換するのに

#include <stdio.h>
#include <math.h>
int main (void)
{
int a[100],b[100];
int *p=a,*q=b,*r;
int i,j;

for (i=0 ;i<=99 ; i++){
a[i]=i+1;
b[i]=100-i;
printf("a[%d]=%d,b[%d]=%d\n",i,a[i],i,b[i]);
}

a=q;
b=p;

for (i=0 ;i<=99 ; i++){
printf("a[%d]=%d,b[%d]=%d\n",i,a[i],i,b[i]);
}
}

ではなぜ駄目なのでしょうか?

93 :デフォルトの名無しさん:05/03/19 14:39:13
>>92
「中身の交換」という言葉のとおりに書いて味噌。
君は中身ではなく、入れ物だけ入れ替えて誤魔化そうとしている。

94 :デフォルトの名無しさん:05/03/19 14:39:35
自分の胸に聞いてみろ。

95 :デフォルトの名無しさん:05/03/19 14:45:08
> コンピュータ内部表現のヌルポインタは0とは限らない

ナルだろ ぼけ

96 :デフォルトの名無しさん:05/03/19 14:47:30
> ANSI とかの規格では NULL をゼロと定めていないかもしれないけど、
> 世界の C コンパイラの99%は stdio.h とかで
> #define NULL 0
> と定義されているはず。

こいつおおぼけ。Kusakabe先生が「NULLが0なんじゃなくて0がNULLなんです」と
教えている通り、NULLのビットパターンは0じゃなくても、
ポインターに代入したり比較したりする文脈に書かれる「0」はNULLの意味になるという
Cの基本的性質から、NULLのビットパターンに変換されるんだよ ぼけ
だからNULLがたとえばFFFFというビットパターンのマシンでも、
定義は#define NULL 0 でいいんだよ ぼけ

97 :デフォルトの名無しさん:05/03/19 14:49:24
> >フランス語や英語が先。
> フランス語はともかく、英語が先だとは思えません。
> アメリカが出来たのは 1776 年で、ドイツはそれより以前から存在します。

はあ? こいつはぼけ。英語はアメリカでできたんだと思ってるらしい。

98 :デフォルトの名無しさん:05/03/19 14:50:59
> 漢字コードには主にJIS,SJIS,EUCの3種類が存在することや、それぞれの特徴も知っています。

ぼけ、主流はEUC-JP、ISO-2022-JP、UTF-8の3つだよぼけ。ShiftJISなんてのは主流ではない。

99 :デフォルトの名無しさん:05/03/19 14:52:53
>>97
君は知識が有るねぇ。尊敬するよ。ここまで凄いと、僕・・・ハァハァ


100 :デフォルトの名無しさん:05/03/19 14:53:02
またageぼけ厨が出たか

101 :デフォルトの名無しさん:05/03/19 14:53:09
>>92
そんなことが可能だったら配列のメモリ開放はどうやるんだ?

102 :デフォルトの名無しさん:05/03/19 14:55:36
> 開放は

ぼけ

103 :デフォルトの名無しさん:05/03/19 15:00:01
>>27がぼけなのは既知。これ以上荒らすな。

104 :デフォルトの名無しさん:05/03/19 15:19:55
いや おまえがいちばんぼけ

105 :デフォルトの名無しさん:05/03/19 15:20:14
102 :デフォルトの名無しさん :05/03/19 14:55:36
> 開放は

ぼけ

かならず出てくるね( ´_ゝ`)

106 :デフォルトの名無しさん:05/03/19 15:23:46
iya- meiThreaddane

107 :デフォルトの名無しさん:05/03/19 15:52:20
日下部いい加減にしろ(苦笑)

108 :デフォルトの名無しさん:05/03/19 15:59:09
ーーまとめーー
NULLは
おそらくどこかのヘッダで定義されている怪しい定数で、
プリプロセッサがたいてい0か(void *)0に展開して、

その定数が、代入や初期化の式の
真中の代入演算子 = からみて
右側のオペランドの位置にあり、そのとき、
左側のオペランドが、都合よくポインタであると、

その式の評価の結果、ポインタの値にぬるぽが入って、
そのぬるぽがどんな表現なのかは、実装依存。

109 :デフォルトの名無しさん:05/03/19 16:05:15
ごめん、条件反射

  Λ_Λ  \\
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_Λ∩
  _/し' //. V`Д´)/
 (_フ彡        / ←>>108


110 :デフォルトの名無しさん:05/03/19 16:09:24
> その式の評価の結果、ポインタの値にぬるぽが入って、

ナルだろ ぼけ

111 :デフォルトの名無しさん:05/03/19 16:10:50
> 日下部いい加減にしろ

こわいものはぜんぶKusakabeにみえてしまう症候群 ;-)

112 :デフォルトの名無しさん:05/03/19 16:11:13
NULLの話がでてきたのでちょっと質問。
これって誰が正しいの?

896 名前:風の谷の名無しさん@実況は実況板で[sage] 投稿日:05/03/19 00:19:48 ID:Jg/N2N2N
NULLって0でもなく1でもなく、何も無い状態なんだがなぁ

897 名前:桃色頭脳 ◆C5EKtMD8/k [] 投稿日:05/03/19 00:26:11 ID:8D6ZP6Xt
何も無いじゃないんだな、これが
決まってない、なんだな

898 名前:風の谷の名無しさん@実況は実況板で[sage] 投稿日:05/03/19 00:26:23 ID:ZRcR+c9F
>896
自分解釈乙。
英和辞書引け。

113 :デフォルトの名無しさん:05/03/19 16:11:52
↑こわがりすぎー ってやつですね

114 :デフォルトの名無しさん:05/03/19 16:12:24
> NULLの話がでてきたのでちょっと質問。
> これって誰が正しいの?

わたしが正しい。


115 :デフォルトの名無しさん:05/03/19 16:13:22
わたしが正論です。

--スリランカ首相ウィクラマシンハ

116 :デフォルトの名無しさん:05/03/19 16:16:07
教えてくれない。・゚・(ノД`)・゚・。

117 :デフォルトの名無しさん:05/03/19 16:16:36
わたしが正義です!!

--ソフトバンク社長 孫

118 :デフォルトの名無しさん:05/03/19 16:24:21
そんなの、想定の範囲内でしょう、どこがおかしいの?

119 :デフォルトの名無しさん:05/03/19 16:24:55
> NULLって0でもなく1でもなく、何も無い状態なんだがなぁ

ぼけ。NULLが0なんじゃなくて、0がNULLなんだよ ぼけめ

120 :デフォルトの名無しさん:05/03/19 16:26:09
>>112
C言語の話をしているのなら3人とも間違ってる。
哲学的意味を語っているなら3人とも正しい。
英単語の辞書的意味が知りたいなら898の言うとおり。

121 :デフォルトの名無しさん:05/03/19 16:27:03
堀江先生の言う事には、ルールに書いてなければどれでも正しいんじゃないの?

122 :デフォルトの名無しさん:05/03/19 16:27:56
このスレはC言語スレです。
C++と混同してる馬鹿はお帰り下さい。

123 :デフォルトの名無しさん:05/03/19 16:29:58
要は可読性の問題らしいよ。;)

124 :デフォルトの名無しさん:05/03/19 16:31:06
> C言語の話をしているのなら3人とも間違ってる。

いや。わたしが規格的に正しい。
あとはまちがい

125 :デフォルトの名無しさん:05/03/19 16:36:33
春なのか。

126 :デフォルトの名無しさん:05/03/19 16:37:06
NULLって恐い…ぽ
NULLは便利だけど、恐い…ぽ
NULLつかうと実行時に型が違ったりして…ぽ
NULL…ぽ

127 :デフォルトの名無しさん:05/03/19 16:38:04
>>126
ガッ
ガッ
ガッ
ガッ

128 :デフォルトの名無しさん:05/03/19 17:15:21
http://www.kouno.jp/home/c_faq/c5.html#4

129 :デフォルトの名無しさん:05/03/19 17:19:59
明示的なポインタって要らないね。

130 :デフォルトの名無しさん:05/03/19 17:24:30
ポインタは要らないが、アドレスは必要。

131 :デフォルトの名無しさん:05/03/19 19:06:43
ANSI準拠 ポータブル...なのか?

??=include<stdio.h>
main()
??<
char test??(??) = "a-tesutesu";
puts(test);
??>

$ gcc -Wall -ansi test.c -o test
test.c:1:1: 警告: トライグラフ ??= は # に変換されました
test.c:3:1: 警告: トライグラフ ??< は { に変換されました
test.c:3: 警告: return type defaults to 'int'
test.c:4:11: 警告: トライグラフ ??( は [ に変換されました
test.c:4:12: 警告: トライグラフ ??) は ] に変換されました
test.c:6:1: 警告: トライグラフ ??> は } に変換されました
test.c: In function 'main':
test.c:6: 警告: control reaches end of non-void function

132 :デフォルトの名無しさん:05/03/19 19:55:25
?

133 :デフォルトの名無しさん:05/03/19 21:33:33
ださ... > -ansi

134 :デフォルトの名無しさん:05/03/19 21:34:32
常識的に
alias cc gcc -Wall -std=c99 -O3
だ。

135 :デフォルトの名無しさん:05/03/19 21:35:25
> 明示的なポインタって要らないね。

そういう日本語はない > 明示的
英和辞典用語だ。

136 :デフォルトの名無しさん:05/03/19 21:37:24
>>135
広辞苑に載ってるよ

137 :デフォルトの名無しさん:05/03/19 21:43:03
#も{もちゃんとあるlocaleで??=や??<をつかえばgccはウォーニング出すよ。
そんなのあたりまえじゃん。
おまえ馬鹿か?

138 :デフォルトの名無しさん:05/03/19 21:44:37
そもそも辞書に載ってる、載ってないじゃないしな
アホらし

139 :デフォルトの名無しさん:05/03/19 21:45:49
では、日本語かどうかってどうやって判断しているの?

140 :デフォルトの名無しさん:05/03/19 21:46:33
> そもそも辞書に載ってる、載ってないじゃないしな

はあ? おまえぼけか。辞書には載ってるんだよ。だから「英和辞典用語」だろうが ぼけ
あたまわるいなーこいつ

141 :デフォルトの名無しさん:05/03/19 21:47:45
>>140
>>138が辞書に載ってないとでも言ったのかい?

142 :デフォルトの名無しさん:05/03/19 21:50:10
>>138
辞書に載っていない日本語もあれば、載っていない日本語もある、ということ?

143 :デフォルトの名無しさん:05/03/19 21:50:49
× 載っていない日本語もあれば、
○ 載っている日本語もあれば、

144 :デフォルトの名無しさん:05/03/19 21:51:24
どっちみち載ってないのか。

145 :デフォルトの名無しさん:05/03/19 21:51:32
>>140は素で恥かいたっぽいな

146 :デフォルトの名無しさん:05/03/19 21:54:44
>>140=天然ぼけ

147 :デフォルトの名無しさん:05/03/19 21:56:41
誰にでもかぶりつくから恥かくんだよ、くそじじい

148 :デフォルトの名無しさん:05/03/19 21:57:25
gccは知らないな。
俺は昔からVisualStudio なんで

149 :デフォルトの名無しさん:05/03/19 22:03:21
ageぼけ厨イタ杉w

150 :デフォルトの名無しさん:05/03/19 22:03:40
ボケ同士結構なことで

151 :デフォルトの名無しさん:05/03/19 22:07:42
>>126
ネタか?一応マジレスするぞ

>NULLって恐い…ぽ
>NULLは便利だけど、恐い…ぽ
だったら0を使え

>NULLつかうと実行時に型が違ったりして…ぽ
実行時には型も何もないと思うぞ
コンパイル時の間違いか?
だとしても可変数引数の関数にNULLを渡すときぐらいにしか
NULLの型は問題にならんぞ

>NULL…ぽ
カ(r

152 :デフォルトの名無しさん:05/03/19 22:13:10
>>151
インスタンスだったら?

153 :デフォルトの名無しさん:05/03/19 22:19:09
> だとしても可変数引数の関数にNULLを渡すときぐらいにしか

ぼけ。プロトタイプなしのときもだよ

154 :151:05/03/19 22:24:47
>>152
インスタンスって何だ?
NULLの話だぞ
そもそもC言語か?

>>153@ageぼけ厨
補足どうも

155 :デフォルトの名無しさん:05/03/19 22:25:42
0だと通常の数値代入に思われるから、
NULLとわかりやすく明示するに決まってる。

156 :デフォルトの名無しさん:05/03/19 22:30:24
ただの数値代入じゃん。

157 :デフォルトの名無しさん:05/03/19 22:37:25
>決まってる。
こういう断定的な表現すると論争の元になるぞ

0っていう表記は整数の0と(C言語で)NULLを表す0だけじゃない
他の意味になる場合だってある
とにかく0(とだけ書いた場合)は特殊なんだと
C言語を使うものなら覚えておいた方がいいと思う

個人的にNULLを使わず0を使っているソースをみると
こいつ分かってるなって思う
(もちろん逆にも取れるけどw)

158 :デフォルトの名無しさん:05/03/19 22:43:43
いや、ポインタが無効領域である、何も指してないという意味合いをわかりやすくするためにNULLと書いたほうがいいと思う。
ただ、0でも構わん。
これは見た目の美学に関わることだろ。
少しでも美しいソースを記述したいのはどのPGもそうだろうし。

159 :デフォルトの名無しさん:05/03/19 22:49:20
>>158
そうだね
俺も自分でコーディングするときはNULLって書くよ
宿題スレだったらタイプめんどいから0にするかもw

160 :デフォルトの名無しさん:05/03/19 22:50:01
NULLがintの0だと思って使っているのはCプログラマぐらいのものだね。

161 :デフォルトの名無しさん:05/03/19 22:51:01
int c;
for(c=NULL;c<256;c++){

}

162 :デフォルトの名無しさん:05/03/19 22:52:35
他のMLとかLispとかetcの言語触った事あるんやろか…

163 :デフォルトの名無しさん:05/03/19 22:54:23
その言語に応じたコーディングをすればええやん
C言語はNULLとしたほうがええやん
ぷれいやん

164 :デフォルトの名無しさん:05/03/19 22:56:06
>>162
cppll ML読んでC++の勉強してますが何か?
Lispとかetcの言語っていうのは知らない

165 :デフォルトの名無しさん:05/03/19 22:57:12
すみません、無効ポインタを記述するためにNULLの代わりに
0と書いた場合の利点がこれまでのカキコを読んでもよく
わからないのですが、どなたかわかりやすい解説をして
いただけないでしょうか。

166 :デフォルトの名無しさん:05/03/19 22:58:39
>>164
ごめん、誤解されたかも。。ML=The Meta Language

167 :デフォルトの名無しさん:05/03/19 22:59:21
>>165
見た目の問題
どっちが美しいって思うかは感性による

168 :デフォルトの名無しさん:05/03/19 23:00:07
>>165
型付けがあいまいなC言語では人間が見て区別しないといけないから、NULLも同様に0と区別して
使わなければならない。

169 :デフォルトの名無しさん:05/03/19 23:00:56
http://www.kouno.jp/home/c_faq/c5.html#9

170 :デフォルトの名無しさん:05/03/19 23:03:35
>>168
ログ読んでる?
NULLって書いても0って書いてもC言語では同じ
区別はない。よって人間が区別する必要はない
処理系が処理系に応じたヌルポインタにしてくれるの!!

>型付けがあいまいな
void * あたりではそう思う
C++では改善されてるけど

171 :デフォルトの名無しさん:05/03/19 23:05:34
DWORDとかLPCTSTRとかを使うより、unsigned intやwchar_tを使ったほうが美しいと思う。

172 :デフォルトの名無しさん:05/03/19 23:15:32
>>165
規格で関数へのポインタ型←→オブジェクトへのポインタ型(含void *)はキャスト演算子を使っても出来ない事になっている。
だからNULLが(void *)0となっているヘッダを使ったときに関数へのポインタへNULLを代入するとエラーになったり警告が出たりかもしれない。

173 :デフォルトの名無しさん:05/03/19 23:19:26
>>170
同じものを指すのに別のラベルが付けられている言葉ってあるよね。
ほら、たとえば、
かたつむり でんでんむし まいまい
でも、これらって微妙に意味が違うんだよねー

174 :デフォルトの名無しさん:05/03/19 23:20:33
>>171
DWORDとかLPCTSTR
これってVC特有のものなんじゃない?
なんでこんなもの定義してあるんだろう…移植性低いなぁ

175 :デフォルトの名無しさん:05/03/19 23:21:22
>>172
このスレで勉強なったの2回目だ
あんたネ申だよ

176 :デフォルトの名無しさん:05/03/19 23:29:55
>>174
WIN32API

177 :デフォルトの名無しさん:05/03/19 23:33:09
WIN32プログラミング>>>>>>>>>その他マイナープログラミング

178 :デフォルトの名無しさん:05/03/19 23:39:47
>>174
64Bitに移行しかけてるんだからマクロ使った方が移植性は上だ。

179 :デフォルトの名無しさん:05/03/19 23:49:46
パケットモニタ作りたいんだけど、送信パケットってどうやって
キャプチャするんですか?
使用OSはlinuxです

180 :デフォルトの名無しさん:05/03/19 23:50:38
普通Cって言ったらUNIX系がメッカなんだが。

181 :デフォルトの名無しさん:05/03/19 23:53:48
>>179
pcapでも使えば?

182 :デフォルトの名無しさん:05/03/19 23:54:57
>>181
仕組みが知りたいんです。

183 :デフォルトの名無しさん:05/03/19 23:55:05
>>165
NULLが定義されていなくても使える。

184 :デフォルトの名無しさん:05/03/19 23:55:47
>>182
ドキュメント読め。

185 :デフォルトの名無しさん:05/03/19 23:59:16
>>183
このスレで勉強なったの3回目だ
あんたネ申だよ

186 :デフォルトの名無しさん:05/03/19 23:59:22
>>183
自分で追加してくれ。

ポインタに0代入は気持ち悪くて出来ないな。

187 :デフォルトの名無しさん:05/03/20 00:07:44
>>186
その場しのぎで勝手にdefineされる方が気持ち悪いが。

188 :デフォルトの名無しさん:05/03/20 00:07:45
>>172
すると、たとえば構造体のメンバにコールバック関数が
あったとして、それを無効ポインタに初期化するときは
0を代入すべき?

struct foo {
 int (*callback)(int arg);
};

foo.callback = 0;


189 :デフォルトの名無しさん:05/03/20 00:10:25
>>186
ポインタは値だから0以前に何も代入で金

190 :デフォルトの名無しさん:05/03/20 00:11:34
>>187
そこに突っ込むなよ…。
NULLが定義されてない事自体が変だろ。

191 :179:05/03/20 00:15:28
>>182
そのとおりです。

受信はココに乗ってたんだけどなー
ttp://www.whiteboard.ne.jp/~admin2/socket2.html

192 :デフォルトの名無しさん:05/03/20 00:17:37
>>190
変か?

193 :デフォルトの名無しさん:05/03/20 00:19:47
独学してるんですが、コールバック関数というものがよくわかりません。
web検索しても、呼ばれる関数(つまりコールバック関数なんですが)の説明は
WinAPI関連で出て来るのですが、呼び出す側の説明はあまりなく、よく理解できません。
想像の出来る範囲で書いたのが下記ですが、これってコールバック関数使ってることに
なりますか?

#include <stdio.h>

void called(void)
{
printf("I am called\n");
}


void call(void (*cald)(void))
{
cald();
}

int main(void)
{
call(called);
return 0;

}



194 :デフォルトの名無しさん:05/03/20 00:20:10
NULLって標準で定義されていて当り前なんじゃないの???

195 :デフォルトの名無しさん:05/03/20 00:22:17
>>193
それは単に関数のポインタを渡したに過ぎない。
コールバック関数そのものというよりも、イベントドリブンの考え方を理解している?

196 :デフォルトの名無しさん:05/03/20 00:26:05
>>194
定義されている部分をincludeで取り込んだらね。

197 :デフォルトの名無しさん:05/03/20 00:27:32
バリアント型追加きぼん

198 :デフォルトの名無しさん:05/03/20 00:27:38
>>196
コンパイラが最初から定義しているという実装は反則?

199 :デフォルトの名無しさん:05/03/20 00:29:55
>>193
大抵の場合、呼び出す側のことは考えなくてもいい。

200 :デフォルトの名無しさん:05/03/20 00:49:53
>>195
GUIなら、マウスが押されたら、とかそういうやつですよね?
イベントドリブンという概念はわかっていると思いますが、
なぜイベントドリブンでコールバック関数なのか、というあたりが
理解できていないのかも知れません。
実際、GTK+のチュートリアルを見ていてコールバックに出会ったんです。
定義されている側を調べようとしたんですが、僕のレベルでは良くわからなかったんです。


201 :デフォルトの名無しさん:05/03/20 01:01:43
>>193
それじゃ一般の「コールバック関数」にはならない。
というか、そういうふうにプログラムを数行書いて説明できるような
ことじゃない。
「コールバック関数」は「○○したときに××しろ」みたいな
プログラムを書くために用意されてるけど、OSに依存する概念だから、
まだANSI-Cをマスターしてないなら知らなくていい。
マスターしてるなら、WindowsAPIの勉強をすれば自然と出てくる。

202 :デフォルトの名無しさん:05/03/20 01:03:16
コールバック関数は単に関数のポインタを渡してるにすぎないでしょ。

ウィンドウプロシージャもコールバック関数だし。
あるウィンドウのイベント処理を受け持つのがウィンドウプロシージャ。

ウィンドウを作る前に、ウィンドウクラスを作成して登録するだろ。
そのとき、イベント処理を行う関数を登録(その関数のポインタを渡す)

203 :デフォルトの名無しさん:05/03/20 01:11:31
NULLの代わりに0を代入って、構造体の初期化でオール0にしたりする場合に有効なんじゃ無いの?

204 :デフォルトの名無しさん:05/03/20 01:13:55
NULLは視覚上の問題でしょ。
あくまで0でも構わん。

205 :デフォルトの名無しさん:05/03/20 01:21:31
亀レスで悪いが、strtokで良くないか?
漏れは正規表現厨なのでキャプチャをよく使うが

206 :デフォルトの名無しさん:05/03/20 01:24:32
>>6のことなorz


207 :デフォルトの名無しさん:05/03/20 01:26:11
俺は独自に関数を作って処理。

208 :デフォルトの名無しさん:05/03/20 01:49:44
>>200
なにかイベントが起きた時に、特定の処理を行いたい時に
「イベントが発生したらこの関数を呼んでね」
と登録する。
どうやってその関数が呼ばれるのかは知らなくていいこと。

209 :デフォルトの名無しさん:05/03/20 01:56:58
WNDCLASSEX wcex;
wcex.lpfnWndProc= (WNDPROC)WndProcA;

ウィンドウA→WndProcA()
ウィンドウB→WndProcB()

210 :デフォルトの名無しさん:05/03/20 02:03:55
while true do
match イベント with
イベント1 -> イベント1が起きたら呼ぶ関数
| イベント2 -> イベント2が起きたら呼ぶ関数
| _ -> ()
done

C流の関数へのポインタは本質的ではない。

211 :デフォルトの名無しさん:05/03/20 02:04:43
C言語というかmmapに関する動作がいまいち理解できないので教えてください。
たとえば

#define SIZE 536870912
int main() {
void *map;
int fd = open("tmp_file", O_RDWR);
size_t size = (SIZE / getpagesize() + 1) * getpagesize();

map = mmap(0, size, PROT_READ | PROT_WRITE, MAP_FIXED, fd, 0);
munmap(map, SIZE);

return 0;
}

というプログラムを動かすとバスエラーになってしまいます。
また、変数sizeを使わずにSIZEを使うとセグメントエラーになります。
mmapはファイルをメモリに全部読み込まずに必要な分だけキャッシュする
とmanに書いてあるように読めたのですが、間違いでしょうか。
環境はFreeBSD 5.3R, gcc 3.4.2です。メモリは512MBです。
tmp_fileは
dd if=/dev/zero of=tmp_file bs=512 count=1048576
として作成しました。

212 :デフォルトの名無しさん:05/03/20 02:08:52
>>211
このスレで聞くな

213 :デフォルトの名無しさん:05/03/20 02:10:39
>>205
strtok()はスレッドセーフではないので使用に注意が必要。
必然的にconst char * 渡せないしね。

214 :デフォルトの名無しさん:05/03/20 02:17:57
区切りで分割した文字をリストで返してくれるものがいいね。
かってに区切り文字をNULLに置き換えられても困る場合ある。

215 :211:05/03/20 02:25:27
すみません、確かに標準Cではありませんね。
別のスレで聞いてみます。ありがとうございました。

216 :デフォルトの名無しさん:05/03/20 02:39:56
これで完璧
my @array = split(/,/, $string);

217 :デフォルトの名無しさん:05/03/20 02:47:17
それC?

218 :デフォルトの名無しさん:05/03/20 13:54:15
@!!a A!(!a)
@番でもいいですか?

219 :デフォルトの名無しさん:05/03/20 14:23:40
>>218
そんなのにいちいち括弧は要らない。

220 :デフォルトの名無しさん:05/03/20 14:27:35
わかりました。

221 :デフォルトの名無しさん:05/03/20 16:11:29
> NULLの代わりに0を代入って、構造体の初期化でオール0にしたりする場合に有効なんじゃ

おまえはおおぼけ。たとえばmemsetで0クリアしたら、メンバーにはNULLじゃなくて
all bit 0のパターンがはいるだけ。
0がNULLに変換されるのは、あくまでも代入や引数渡しの場面だけだ ぼけ

222 :デフォルトの名無しさん:05/03/20 16:20:42
http://www.kouno.jp/home/c_faq/c5.html#2

223 :デフォルトの名無しさん:05/03/20 16:41:00
> かってに区切り文字をNULLに置き換えられても困る場合ある。

は? こいつぼけ。区切りがNULLなわけねーだろ ぼけ。
NULLはポインターにいれる値だ。

224 :デフォルトの名無しさん:05/03/20 16:41:35
っていうか、文字化けしてる > 218
ぼけ

225 :デフォルトの名無しさん:05/03/20 17:04:40
文字列をアイウエオ順にソートするアルゴリズム教えて

226 :デフォルトの名無しさん:05/03/20 17:06:56
qsort一発!

227 :デフォルトの名無しさん:05/03/20 17:09:46
比較関数の作り方のこつだけおしえておこう。

単純にコード順にならべると
ハンバーガー
バンズ
パン
の順になってしまうが、正しくアイウエオ順の場合は
パン
バンズ
ハンバーガー
の順にならねければならない。つまり濁点や半濁点はついていない状態で比較し、
それでもまったく同一だった場合だけつけてくらべるのである。


228 :デフォルトの名無しさん:05/03/20 17:45:10
正しいあいうえお順ってなんだろね。
>227は所謂辞書順ではあるけど、そうでない順序も世の中にはあるわけで。

229 :デフォルトの名無しさん:05/03/20 17:46:03
脳内辞書だろ

230 :デフォルトの名無しさん:05/03/20 17:50:26
不可能は無い

231 :デフォルトの名無しさん:05/03/20 17:53:33
STL勉強しなおせ、うましか。

232 :デフォルトの名無しさん:05/03/20 17:59:48
固定小数点って、その処理系が演算としては
小数が扱えるから固定小数点が使えるんですよね?

変数に小数が使えないだけで、
演算は出来ないと小数が使えない。ということで。
初心者なんで、分かりません。
完全に小数が使えないと、固定小数使う意味無いということが言いたいのです。
間違ってますか?

233 :232:05/03/20 18:00:20
↑C言語とは限らない質問ですみません。

234 :デフォルトの名無しさん:05/03/20 18:04:59
>>232
Cでも固定小数点実数演算ライブラリを作ることはできる。

235 :デフォルトの名無しさん:05/03/20 18:05:23
>>231
スレタイよく読め。

236 :デフォルトの名無しさん:05/03/20 18:07:52
> そうでない順序も世の中にはあるわけで

ありません

237 :デフォルトの名無しさん:05/03/20 18:34:33
>227では拗音などについて書いてないからなんとも言えないが、その辺りは辞書によっても違うらしい。
ttp://www2.odn.ne.jp/~cbp91480/sort.html
ttp://help.yahoo.co.jp/help/jp/dic/jj/jj2_3.html
また、辞書ではないが電話帳の配列はまた違うし、調べるといろいろありそうだ。

238 :デフォルトの名無しさん:05/03/20 18:37:40
それを決めておくのが仕様だろう

239 :232:05/03/20 18:42:34
>>234
演算自体を自分で管理するということですか。
頭混乱してきました。

一般的には
整数しか使えない場合、最終的には整数出力なので、
固定小数にした変数を独自整数キャストして使うのかな。
机上で語ってるのでサッパリです。
ありがとうございました。

240 :デフォルトの名無しさん:05/03/20 18:58:42
>>239
ttp://www.ne.jp/asahi/oh/landd/prog_html/prog03.html


241 :デフォルトの名無しさん:05/03/20 19:02:48
>>239
こういうのはC++だと綺麗に実装できるが、
演算速度や外部I/Fの都合で固定小数点を扱うことは度々ある。
今や、実数演算が充分高速なので殆ど必要はなくなったが、
8ビットCPUの時代にはしばしば固定小数点演算を行なっていた。

いずれにしても、C++ならCAST演算子オーバーロード、Cならば変換や出力に用いる関数を用意すればいい。
勿論、必要に応じて四則演算関数も用意する必要があるが。

242 :デフォルトの名無しさん:05/03/20 20:56:42
環境依存の質問なのでスレ違いかも知れませんが、他に適切なスレが見当たらなかったのでここに来ました。

OS は Windows XP で、コンパイラは mingw-jp の gcc です。
コマンドプロンプトのウインドウの現在の縦のサイズ(行数)を得るにはどうすればよろしいのでしょうか。
それとも、それは不可能なのでしょうか。

よろしくお願い致しますm(_ _)m

243 :デフォルトの名無しさん:05/03/20 20:59:14
スレ違い
氏ね

244 :242:05/03/20 21:00:55
>>243
では、ご存知でしたら適切なスレに誘導して下さいm(_ _)m

245 :デフォルトの名無しさん:05/03/20 21:08:11
>>244
http://pc5.2ch.net/test/read.cgi/tech/1108989422/

246 :242:05/03/20 21:14:42
>>245
ふざけないで下さい。
このスレでは適切なご回答を頂けそうにないので、>>242の質問はキャンセルさせて頂きます。

247 :デフォルトの名無しさん:05/03/20 21:18:55
>>246
お前がふざけたまねをしてるんじゃないか

248 :デフォルトの名無しさん:05/03/20 21:20:16
そりゃ自分が低脳だなんて、認めたくないだろうよ

249 :デフォルトの名無しさん:05/03/20 21:23:47
客 ラーメンくれ
店 ここは寿司屋だ。ラーメンは無い。
客 じゃあラーメンがある店を教えろよ!
店 しらんがな
客 なんだと!!!ふざけやがって!!!

250 :デフォルトの名無しさん:05/03/20 21:24:07
なんだと

251 :デフォルトの名無しさん:05/03/20 23:11:10
>>249
爆笑した

252 :デフォルトの名無しさん:05/03/20 23:14:58
<パターン1>
客:ラーメンください
店:ここは寿司屋です。ラーメン無いです。
客:じゃあ、ラーメンください。
店:そうかい、すまないね。
〜完〜

<パターン2>
客:ラーメンください
店:ここは寿司屋です。ラーメン無いです。
客:じゃあラーメンの店どこにありますか?
店:そこを右に曲がって...(略)
客:ありがとうございました。(いい店だね。また今度来てみようかな)
〜完〜

<パターン3>
客:ラーメンください。
店:ここは寿司屋です。ラーメンは無いです。
客:ラーメンください。
店:ラーメン無いよ。
客:ラーメンください。
店:無いって。
.....続く。

253 :デフォルトの名無しさん:05/03/20 23:16:37
パターン1間違えた...

254 :デフォルトの名無しさん:05/03/20 23:24:10
結局>>242はラーメン屋に逝ったのに
自分でカップラーメン作れって言われてるぞw
http://pc5.2ch.net/test/read.cgi/tech/1110281860/493-494

255 :デフォルトの名無しさん:05/03/20 23:31:02
>>252
パターン2は、客が次に来たときも寿司を注文するとは限らないところに罠があるな。


256 :デフォルトの名無しさん:05/03/20 23:41:27
ここは店や客の立場じゃ無いからな
優しくする義理も無いし、そやつが二度とこなくてもかまわないし。

257 :デフォルトの名無しさん:05/03/21 00:17:40
freopen的にstdin, stdout, stderrをchar*に置き換えるにはどうすればよいでしょうか?
とある巨大プログラムを自分のアプリに組み込もうとしているんですが、
ほとんどの出力を標準出力に返してるんでそれを拾って使いたいと思ってます。
パフォーマンスを超重視してるんでpopenとかはなしです。


258 :デフォルトの名無しさん:05/03/21 00:20:36
質問者を客並みに扱えとのたまう弱者が
いらっしゃるスレはここでしょうか?

259 :デフォルトの名無しさん:05/03/21 00:29:15
誰か >>257 の1行目を翻訳してくれないか。
>パフォーマンスを超重視してるんでpopenとかはなしです。
popen のパフォーマンスがどうだか知らんが
そーゆー話だと、スレ違いの予感。

260 :257:05/03/21 00:31:25
プロセスって言語の外になるから微妙かもしれないですけど
実際問題として対象外なんでお願いします。

261 :デフォルトの名無しさん:05/03/21 00:39:37
ことわる

262 :デフォルトの名無しさん:05/03/21 00:41:21
>252 のパターン3の開始?

263 :デフォルトの名無しさん:05/03/21 00:45:34
>>257
環境によるけど、メモリマップドファイルが使えるならfreopen()でいいじゃん。

264 :デフォルトの名無しさん:05/03/21 00:59:04
>>257
オブジェクトとして組み込むんですか?
モジュールとしてですか?


265 :デフォルトの名無しさん:05/03/21 01:07:39
>>257
stdioのショボサを語るのならこのスレでいいが、
環境依存の解決方法を求めるならスレ違い

266 :デフォルトの名無しさん:05/03/21 01:18:59
#include<stdio.h>

void card(int *a, char *n, char *o, char *q)
{
char card[] = {'0', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'};
char mark[] = {'0', 'D', 'H', 'S', 'C'}; //ダイヤ、ハート、スペード、クラブ

if(*a == 1) *o = mark[1];
if(*a == 2) *o = mark[2];
if(*a == 3) *o = mark[3];
if(*a == 4) *o = mark[4];

if(*n == 1) *q = card[1];
if(*n == 2) *q = card[2];
if(*n == 3) *q = card[3];
if(*n == 4) *q = card[4];
if(*n == 5) *q = card[5];
if(*n == 6) *q = card[6];
if(*n == 7) *q = card[7];
if(*n == 8) *q = card[8];
if(*n == 9) *q = card[9];
if(*n == 10) *q = card[10];
if(*n == 11) *q = card[11];
if(*n == 12) *q = card[12];
if(*n == 13) *q = card[13];
}

初心者です。凄い無駄なことやってるかも知れませんが。
数字をトランプの記号に置き換えする関数ですが0が表示される場合があります…
別のとこでrandで13の余り+1してるから問題はなさそうなんですが。


267 :デフォルトの名無しさん:05/03/21 01:23:34
"if"の前に"else"が抜けてるだけじゃないの

268 :デフォルトの名無しさん:05/03/21 01:27:36
これでいいのか?

void card(int a, char *n, char *o, char *q)
{
 char card[] = "0A234567890JQK";
 char mark[] = "0DHSC"; //ダイヤ、ハート、スペード、クラブ

 o[0] = mark[a];
 q[0] = card[*n]
 if (q[0] == '0') {
  q[0] = '1';
  q[1] = '0';
 }
}

269 :デフォルトの名無しさん:05/03/21 01:28:55
aやnの範囲チェックが欲しい所だな

270 :デフォルトの名無しさん:05/03/21 01:30:42
>>266
某診断室にありそうなプログラムだ・・・・。

271 :デフォルトの名無しさん:05/03/21 01:36:45
みなさんありがとうございます。
これよくよく考えると無駄ありすぎですね。最悪for使えよとか…
配列の先頭に0いれる必要性も特にないですね…ちなみにnは間違いでint型でした。
一部分だけじゃ分かりにくかったですね。とりあえず範囲チェックしてみます。
ありがとうございました。

272 :デフォルトの名無しさん:05/03/21 01:49:46
質問です。
#include<stdio.h>

main()
{
int p, c;

p = &c;

printf("%d",p);

return 0;
}

なんですけれども、

警告 W8069 050321-x.c 7: 移植性のないポインタ変換(関数 main )

というエラーが出てしまいます。

使い方がおかしいらしいのですが、いまいちポインタを上手く使えなくて困っています。

273 :デフォルトの名無しさん:05/03/21 01:51:06
え”?

274 :デフォルトの名無しさん:05/03/21 01:57:40
自己解決しました。

int *p, c;
に訂正したら、治りました


275 :デフォルトの名無しさん:05/03/21 01:59:31
お騒がせしました。照

276 :257:05/03/21 02:05:07
>>263
検討中なんですがきちんと排他制御できるか心配っす。

>>264
オブジェクトです。具体的にいうと環境依存になりますので割愛。

>>265
標準Cで>>257を満たすならなんでも結構です。
# このスレでPOSIXは無し?



277 :デフォルトの名無しさん:05/03/21 02:08:37
<パターン3>
客:ラーメンください。
店:ここは寿司屋です。ラーメンは無いです。
客:ラーメンください。
店:ラーメン無いよ。
客:ラーメンください。
店:無いって。
.....続く。

278 :デフォルトの名無しさん:05/03/21 02:27:45
>>276
標準Cでは満たせません
さようなら

279 :デフォルトの名無しさん:05/03/21 03:21:03
(void)strcpy(a, b);
みたいなのをよくみかけます
このキャストなんか意味あるんすか?

280 :デフォルトの名無しさん:05/03/21 03:30:21
>279
たしかlint(文法チェッカー)で
 strcpyの戻り値を使ってないYO!
という警告を抑制する意味があったはず。

最近はコンパイラ自体の文法チェックが強力になってきたんで
コンパイラと独立した文法チェッカはあまり使わない希ガス


281 :デフォルトの名無しさん:05/03/21 03:32:11
>>279
太古の昔のコンパイラでは、戻り値を使わないと警告が出たようなことを
聞いたことがあるような。

282 :デフォルトの名無しさん:2005/03/21(月) 04:14:21
客:ラーメンください。
店:あげない
EOF


283 :デフォルトの名無しさん:2005/03/21(月) 04:15:10
客:ラーメンください。
店:ぼけ


284 :デフォルトの名無しさん:2005/03/21(月) 04:18:42
>>281
ぼけ
むしろ逆。
むかしはそんなことぐらいでいちいち文句いうようなコンパイラーは1つもなかった。

void型が導入されてからだな。そういう警告をオプションで出せるようになったのは。
なのでごく最近(ここ15年ほど)だ。

285 :デフォルトの名無しさん:2005/03/21(月) 08:09:01
へんな基準

286 :デフォルトの名無しさん:2005/03/21(月) 08:40:41
>>279
c++で申し訳ないのですが、voidにキャストしている理由は同じかと...↓
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdndeepc/htm/deep05182000.asp?frame=true&hidetoc=true
void への変換 で、何故void型に変換するのか書いてあるのですが、その2番目の理由を読んでみてください。

287 :デフォルトの名無しさん:2005/03/21(月) 11:12:11
>>278
アホですか?できるにきまってるだろ。

288 :デフォルトの名無しさん:2005/03/21(月) 11:16:09
       ,,,,,,,,,,                          ,,ii,,、         ,,,i,,、  
      .,lllllllll,,,,,,,,,,,,,,,,,,,,,,,                  ,iillllllllllii,,    ,,,iillllllllii,,,  
  iiiiiiiillllllllllllllllllllllllllllllllllllllll|                ゙゙!lllllllllllllir .,,,iilllllllllllllll!゙゙′
  .llllllllllllllllllllllllll!!!!!!!!!!!!!!!!!″                ゙゙!!ll!゙",,,iilllllllllllll!!゙゙゜   
  .゙゙゙゙゙゙”゛ llllllllllliiiiiiii,,,,,,,、                       ,,,iillllllllllll!!゙゙゜ ___,,,,, 
    ,,,iiillllllllllllllllllllllllllllllliii,,                  ,,,,,,,,,iiiiiiilllllllllllllllllllllllllllllllllllllllll 
  .,,illlllllllllllllllllll゙゙゙゙゙゙!!llllllllllllli,    .,,,,,iiiiiiiiiiiiiiiiiii,,,、  .llllllllllllllllllllllllllllllllllllllllllllllll!!!!!!l 
  ,illllllllll!゙゙llllllllll|  ,illlllllllllllllll,  liilllllllllllllllllllllllllllllllli,,  lllllllllll!!lllllllllllllll!!゙゙゙”`     
 ,llllllllll゙ .lllllllllll .,,illlllllllllllllllllll、 ゙llllll!!゙゙゙’   ゚゙llllllllll  ゙゙”`.,illllllllll!l゙’         
: llllllllll° .llllllllllll,illllllllll!゙`lllllllllll  .゙゙゜      ,llllllllll!   ,llllllllllll°         
: llllllllll,  lllllllllllllllllll!゙゜ ,lllllllllll          ,,,illllllllll!゜   .llllllllllllli,_    ,,,,,,,,iiiiiii、 
: 'lllllllllllliiilllllllllllllll!!゙’  ,lllllllllll°    .,,,,iiillllllllllll!゙゜    ゙!llllllllllllllllliillllllllllllllllllllllll,、 
 .゙!!lllllllllllllllll!!!゙゙`   .l!!llllllll°    .゙!lllllll!!!゙°     ゙゙!!llllllllllllllllllllllllllllll  


289 :デフォルトの名無しさん:2005/03/21(月) 11:43:44
>>287
だったらお前が答えて差し上げなさいませ。

290 :デフォルトの名無しさん:2005/03/21(月) 17:51:03
やっと書き込めた。

291 :デフォルトの名無しさん:2005/03/21(月) 17:52:05
int st,st2,i=0,j=0;

char ss[]="C:\\美少女学園\\禁断\\個人データ\\画像\\110012.jpg";
char ss2[x];

st=strlen(ss);
while(ss[st-i]!='\\') { i--; j++; }
for(i=st-j;i=st';i++) { ss2[st2] = ss[i]; st2++: }

110012.jpg これをss2に入れたいんですが
出来ませんどうしたら良いでしょうか?

printf("%d %d %d\n",i,j,st);

こうすると文字数が出たらめになってるんですけど
'\\'これを認識させる方法がダメなんでしょうか? 

292 :デフォルトの名無しさん:2005/03/21(月) 18:00:05
>>291
char *ptr;
char ss[]="C:\\美少女学園\\禁断\\個人データ\\画像\\110012.jpg";
char ss2[100];

ptr = strrchr(ss, '\\');
if (ptr) {
strcpy(ss2, ptr + 1);
printf("%s\n", ss2);
}

293 :デフォルトの名無しさん:2005/03/21(月) 18:52:46
>>292
ありがとうございます

>ptr = strrchr(ss, '\\');
>if (ptr) {
>strcpy(ss2, ptr + 1);

これだと 始めの C:\\ が引っかかると思うのですが
なぜ最後の 110012.jpg が取得出来るんでしょうか?
 

294 :デフォルトの名無しさん:2005/03/21(月) 18:54:04
どっかのスレで、

187 :デフォルトの名無しさん :05/01/24 01:53:05
キーボードから入力を受付けるときに、
「キー連打」と「一定時間以上キー押しっぱなし」
を区別したいのですが、どうすればよいでしょうか?

188 :デフォルトの名無しさん :05/01/24 08:02:34
押しっ放しはkbhitが反応しっ放し
連打はkbhitが反応しないことがある

とあったのですが、なぜ連打は kbhit が反応しないことがあるのでしょう?

295 :デフォルトの名無しさん:2005/03/21(月) 19:00:59
>>294
どっかのスレで聞けやボケ

296 :デフォルトの名無しさん:2005/03/21(月) 19:09:14
>>293
> >ptr = strrchr(ss, '\\');
> >if (ptr) {
> >strcpy(ss2, ptr + 1);
>
> これだと 始めの C:\\ が引っかかると思うのですが

いえ、それはあなたの勘違いです
主要な関数の使い方を覚えていないのなら手元に参考書を用意してください

297 :デフォルトの名無しさん:2005/03/21(月) 19:13:22
>>296
そうなんですか

strstr()は
後ろから検索するんですね
知りませんでした
(参考書読んでませんが・・・)

ホントありがとうございました

298 :デフォルトの名無しさん:2005/03/21(月) 19:25:10
>>297
あんた視力悪いの?

299 :デフォルトの名無しさん:2005/03/21(月) 19:28:34
strstr

300 :作者:2005/03/21(月) 19:33:28
目も頭も悪い

301 :297:2005/03/21(月) 20:32:58
やっちまった・・・ orz

302 :デフォルトの名無しさん:2005/03/21(月) 21:40:05
あれ?
なんで隔離スレの冠を外しちゃったの?

303 :デフォルトの名無しさん:2005/03/21(月) 21:50:33
今まで大学でしかプログラミングしたことなかった俺が家のPCでもやろうと思うんだが、
まずコンパイラ何がいいか教えてくれ・・・・教えてください・・orz
WindowsXPでできるやつでお願いします

304 :デフォルトの名無しさん:2005/03/21(月) 21:51:59
>>303
>>2

305 :デフォルトの名無しさん:2005/03/21(月) 22:05:24
> まずコンパイラ何がいいか教えてくれ

gcc


306 :デフォルトの名無しさん:2005/03/21(月) 22:05:54
>>303
Linux入れろ。
おそらくgccをインストールすることになるだろう。
エディタはemacs。
これで始めとけ。

307 :デフォルトの名無しさん:2005/03/21(月) 22:06:54
>>303
windowsでカネを掛けないでイビツでない環境を作るのは不可能だから、
Linuxの方が勉強向きだ。

308 :デフォルトの名無しさん:2005/03/21(月) 22:07:46
>>303
FreeBSD

309 :デフォルトの名無しさん:2005/03/21(月) 22:12:09
っていうかWindowsでもcygwinやSFUでふつうgccだ。常識だろ!

で、gccより機能的にましなものおまえもってるか?
gccより標準規格に準拠度が高いものおまえもってるか?
gccの普及率というかシェアがどれだけか知ってるか?
Webでgccに関する情報量がどれだけあるかしってるか?
gccがサポートしているプラットフォームの多さを知っているか?
さらに、
gccは無料だ。

で、おまえgcc以外に何か薦めるものがあるとでも思ってるのか? ぼけ
さらには、
gccにはコンパイラーのソースもついている
これ以上強力な「おすすめ」があるか?

310 :デフォルトの名無しさん:2005/03/21(月) 22:16:13
普通にVC.NETのほうが良いと思うが

311 :デフォルトの名無しさん:2005/03/21(月) 22:19:54
別に無料という制限は無いし、VS.netでも薦めてみる。
でも、IDEの使い方で迷いそうだな

312 :デフォルトの名無しさん:2005/03/21(月) 22:21:52
>>309
プログラミング環境はコンパイラだけではなりたたないぞ。

313 :デフォルトの名無しさん:2005/03/21(月) 22:23:47
(笑

314 :デフォルトの名無しさん:2005/03/21(月) 22:36:31
>>303
まず大学で何を使っていたかを言えよ。
それと同じような環境を家で構築できるかどうか尋ねたほうがいいんじゃないか?

315 :デフォルトの名無しさん:2005/03/21(月) 22:43:12
>>309
長々と書いた割にはつまらんな。
適切なスレで宜しく。

316 :デフォルトの名無しさん:2005/03/21(月) 22:45:45
>>303
Visual Studioにしとけ
そしてWin32API+C言語が一番簡単

317 :デフォルトの名無しさん:2005/03/21(月) 22:51:50
なわけねー > 316

318 :デフォルトの名無しさん:2005/03/21(月) 22:52:54
VC++6.0が最強

319 :デフォルトの名無しさん:2005/03/21(月) 22:53:04
> プログラミング環境はコンパイラだけではなりたたないぞ

いや。成り立つ。

viもemacsもない環境でしょっちゅう開発してたからな。
% cat > foo.c
で足りる。

320 :ビル・ジョブス:2005/03/21(月) 23:15:25
XPにもEDLIN入ってるね。今でもEDLIN使える自分が怖いです。

321 :デフォルトの名無しさん:2005/03/21(月) 23:18:14
XPにはもうはいってませんよ > edlin
かなり以前に廃止になった。

DOSプロンプトなら
COPY CON > foo.c
です。常識!
edlinなんて軟弱ものがつかうものだ!

322 :デフォルトの名無しさん:2005/03/21(月) 23:18:54
> VC++6.0が最強

ふ。そんな厨房のつかうものを
たいしたもんだと思い込んでいるやつはかなりのぼけ

323 :デフォルトの名無しさん:2005/03/21(月) 23:21:30
ゴメン ゴメン
VC++6.0は
厨房や消防、ニート、引きこもりには買えないんだったな

324 :デフォルトの名無しさん:2005/03/21(月) 23:27:10
っていうか、そういうやつらしかつかわん。

ふつうgcc

325 :ビル・ジョブス:2005/03/21(月) 23:31:52
>321
あれれ?俺US版XPだからかな?おまいEDLIN使いこなせるのか?

で、細かくて悪いんだけど
>COPY CON > foo.c
のCONの後の'>'は要らないよ、まだまだ甘いね。

>322
C#が最強・・じゃなくて、VS.NETと.NET Frameworkが最強。
よくここまでWIN32をラップしたね。(チョット嫌味)
VS.NETはアタッチしてるサービスをTMから強制終了すると再アタッチ時にお亡くなりになってしまう。
なぜなら、悪い事をした罰だから。この辺が俺の作品らしいだろ。

326 :デフォルトの名無しさん:2005/03/21(月) 23:46:39
char ss[]="C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg";
char ss2[255];
char ss3[255];
int st,i,j=0;

st=strlen(ss);j=0;

for( i = 0; i<st; i++)
{
  if(ss[i] =='\\') {ss2[j]='\\'; j++; st++; ss2[j]='\\';}
  else ss2[j]=ss[i];
  j++;
}

ss[] = C:\ラピュタ\魔女\\トトロ\move0202.mpg を 
ss2[] = C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg に変更しているのですが

こうすると ss3[](他の変数)に影響してしまうのですが
なにが間違ってるのでしょうか?

327 :デフォルトの名無しさん:2005/03/21(月) 23:50:54
>>326
フォルダ構成が間違ってる

328 :デフォルトの名無しさん:2005/03/21(月) 23:51:11
>>326
> ss[] = C:\ラピュタ\魔女\\トトロ\move0202.mpg を 
> ss2[] = C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg に変更しているのですが

何がやりたいのかサッパリわからん

329 :デフォルトの名無しさん:2005/03/21(月) 23:55:07
すいません、少し間違ってましたね

char ss[]="C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg";

こうするとデータ上
ss[] = C:\ラピュタ\魔女\トトロ\move0202.mpg こうなります

それをデータ上で
ss2[] = C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg こう変更して
いるんですが

変更はうまくいくんですが
他の変数値がおかしくなってしまうんです
 


330 :デフォルトの名無しさん:2005/03/22(火) 00:01:21
これでいいのか?

int i, j, st;
char ss[]="C:\\ラピュタ\\魔女\\トトロ\\move0202.mpg";
char ss2[255];

st = strlen(ss);
for(i=0, j=0; i<st; i++, j++)
{
 if(ss[i] == '\\') {
  ss2[j++] = '\\';
 }
 ss2[j] = ss[i];
}
ss2[j] = '\0';

331 :デフォルトの名無しさん:2005/03/22(火) 00:02:53
すいません、解決しました

ss2[]={0};
ss3[]={0};

こう定義しちゃってました(^^;


332 :ビル・ジョブス:2005/03/22(火) 00:10:53
>326
st++って何?関係無いからいじっちゃダメよ。

> ss[] = C:\ラピュタ\魔女\\トトロ\move0202.mpg を
の\\はネタ?

333 :デフォルトの名無しさん:2005/03/22(火) 00:13:12
333 ∈(・◎・)∋ 333

334 :ビル・ジョブス:2005/03/22(火) 00:16:57
おいおい!解決が早すぎるだろ!(遅レスしちまっただろーが!)

まーそれはいいとしても、st++について触れられてないがおまい本当に大丈夫か?
ループカウンタはいじっちゃダメよ。これはプログラム界の常識だよ。


80 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)