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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 72
http://hibari.2ch.net/test/read.cgi/tech/1287876803/
★過去スレ
http://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++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2デフォルトの名無しさん:2010/11/06(土) 22:12:36
                  .ノ′    } 〕    ,ノ           .゙'┬′   .,ノ
                  ノ      } ゙l、   」′           .,/′   .,ノ _,,y
    .,v─ーv_         〕      〕 .|  .il゙            《 ._   .,,l(ノ^ノ
   ,i(厂  _,,,从vy      .,i「      .》;ト-v,|l′          _,ノ゙|.ミ,.゙'=,/┴y/
   l  ,zll^゙″  ゙ミ    .ノ       .il|′アll!           .>‐〕 \ _><
   《 il|′     フーv,_ .,i″       ||}ーvrリ、             ¨'‐.`   {
    \《 ヽ     .゙li ._¨''ーv,,_     .》′  ゙゙ミ| ,r′                }
      \ ,゙r_    lア'    .゙⌒>-vzト    .ミノ′                 〕
       .゙'=ミ:┐  .「      ./ .^〃     :、_ リ                   .}
         ゙\ア'   .--  ,,ノ|    、    ゙ミ}                   :ト
           ゙^ー、,,,¨ -   ''¨.─   :!.,   リ                   ノ
              〔^ー-v、,,,_,:     i゙「   }                  .,l゙
              l!     .´゙フ'ーv .,y    ]                  '゙ミ
              |     ,/゙ .ミ;.´.‐    .]                   ミ,
              |     ノ′ ヽ      〔                   ミ
              }    }     ′    }                   {
              .|    .ミ     .<     〔                    〕
              .{     \,_   _》、    .{                    .}
              {      ¨^^¨′¨'ー-v-r《                    〔
3デフォルトの名無しさん:2010/11/06(土) 23:59:43
糞スレ
4デフォルトの名無しさん:2010/11/07(日) 15:40:08
俺は今せぐふぉにつまづいている
5デフォルトの名無しさん:2010/11/08(月) 08:08:20
Segmentation Fault
6デフォルトの名無しさん:2010/11/08(月) 08:32:03
ABEND S0C4
7デフォルトの名無しさん:2010/11/08(月) 14:28:51
バカな質問すみません

char *str;

scanf("%s", str);

のどこがいけないのかをわかりやすく教えて下さい
8デフォルトの名無しさん:2010/11/08(月) 14:40:43
>>7
strが初期化されてないから
strは配列とかのアドレスで初期化しないと駄目
9デフォルトの名無しさん:2010/11/08(月) 14:47:07
>>7
strはあくまでポインタを格納するための変数なので
初期化してない状態ではどこを指しているか未定義

たまたまプログラムから書き換え可能なアドレスを指していれば
『その部分を破壊することによって』そこに文字列を読み取ることができるかもしれないが
大抵はアクセス不可能な場所を指しているのでメモリのアクセス違反を起こして止まる

つまりstrはきちんと確保されたメモリ空間の先頭アドレスを指している必要がある
10デフォルトの名無しさん:2010/11/08(月) 15:34:58
str = malloc(SIZE);
if(!str) exit(1);
11デフォルトの名無しさん:2010/11/08(月) 15:46:57
ありがとうございます

文字、文字列、配列、ポインタ、アドレスあたりを
ちゃんと理解しないままきてしまい、
今更困っています
わかりやすいサイトや本をご存知の方は
是非教えて下さい
12デフォルトの名無しさん:2010/11/08(月) 17:19:50
本屋に行って手当たり次第に買ってこい
13デフォルトの名無しさん:2010/11/08(月) 18:50:43
「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                           ↓

「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                           ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                           ↓

「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ

                           ↓

                         神の誕生
14デフォルトの名無しさん:2010/11/08(月) 20:59:27
>>13
C言語によるオブジェクト思考プログラミング入門って面白そうなタイトルだな
15デフォルトの名無しさん:2010/11/08(月) 21:12:14
>>14
サンプルがダウソできるから見てみたけど、ドンデモテクニックだった。
1614:2010/11/08(月) 22:37:43
>>15
マジか
ちょっこら、ダウンロードしてくるわ
thx
17デフォルトの名無しさん:2010/11/08(月) 23:01:15
>>2
こんなAA作るのってどんな気持ちなんだろう
18デフォルトの名無しさん:2010/11/08(月) 23:15:29
露出狂であることは間違いないな
19デフォルトの名無しさん:2010/11/08(月) 23:36:57
20デフォルトの名無しさん:2010/11/08(月) 23:39:14
http://codepad.org/hOP5EYvZ
このプログラムなんですけど
printfにポインタの配列を出力したかったんですが変な実行結果でした。
しくみがよくわからないので教えてください
21デフォルトの名無しさん:2010/11/08(月) 23:44:40
printf("%d\n",*(p[0]));
22デフォルトの名無しさん:2010/11/08(月) 23:45:10
>>20
printf("%d\n",**p);

p[0]にはいってるのはa[0]のアドレスが入ったアドレス
23デフォルトの名無しさん:2010/11/08(月) 23:59:20
>>21 ポインタ変数の配列は関数に引渡しできるのか、しらなかったです
>>22はどういう意味ですか?
24デフォルトの名無しさん:2010/11/09(火) 00:03:11
*(p) == *p == p[0] == &a[0] == a
25デフォルトの名無しさん:2010/11/09(火) 00:04:25
>>21-22
先生そうなんだけど、なんか解りづらい
p[0]=&a[0];
p[0] == *(p + 0) == *(p)
よって、*(p) == &a[0]
*(&a[0]) == a[0] == *(*(p))
26デフォルトの名無しさん:2010/11/09(火) 00:30:23
>>11
俺的には本気でポインタ完全制覇がお勧めだな。
騙されたと思って読んでみて欲しい
27デフォルトの名無しさん:2010/11/09(火) 00:42:40
p[0]=&a[0];
p[0] == *(p + 0) == *(p)  
よって、*(p) == &a[0]
*(&a[0]) == a[0] == *(*(p))  
 
つまり配列の分、ポインタを設けるということですか?
*(&a)=(&a[0])

28デフォルトの名無しさん:2010/11/09(火) 00:46:27
>つまり配列の分、ポインタを設けるということですか?

日本語でおk
29デフォルトの名無しさん:2010/11/09(火) 00:57:17
[]に対応する*という意味です
30デフォルトの名無しさん:2010/11/09(火) 01:00:38
変数に何が入っているのかとか一回自分で絵に書いてみろ
31デフォルトの名無しさん:2010/11/09(火) 01:01:19
>>20
>ポインタの配列を出力したかったんですが変な実行結果でした。
正しくポインタ配列の先頭要素を出力しているじゃないか
正しいのを変って.....
あっ、*pでポインタ配列の全ての要素を出力したいってことか
32デフォルトの名無しさん:2010/11/09(火) 01:03:58
>>27
右辺 == *(&a) == a
左辺 == (&a[0]) == a

*(&a)=(&a[0])

a = a
をまどろっこしく書いているだけ。
33デフォルトの名無しさん:2010/11/09(火) 01:05:38
>>29
[]と*の関係を述べよ

先生達から駄目判定貰ったら、>>26のアドバイスを実行する
34デフォルトの名無しさん:2010/11/09(火) 01:18:14
int
main()
{
int a[3]={1,2,3};
int *p;
p=a;
printf("%d\n",*(p));
rerurn 0;
}
35デフォルトの名無しさん:2010/11/09(火) 01:33:06
>>33たとえば**pを*pにしてイメージできることは
格納場所が出力されるor配列の要素すべての値を出力(intなので不可)
or 一番目のa[0]が出力
ということが考えられます

片方の*では単純に*pを出力(アドレス内の値を出力。)
もう一方の*で配列、つまり(*+1)で[1]という意味になる


時間かけて考えましたよ どうですか
36デフォルトの名無しさん:2010/11/09(火) 03:22:10
K&R読んでるんだけど入力ストリームの意味が今ひとつ分からない。
改行があるたびに配列みたいなのが何本もある感じ?
日本語でおkか分かりませんがお願いします。
37デフォルトの名無しさん:2010/11/09(火) 03:26:41
>>36
char型の配列の配列のイメージで良い
38デフォルトの名無しさん:2010/11/09(火) 05:32:09
>>35
誤解釈してるような?
変数宣言時の*pと参照する(代入とか)ときの*pは違うんだけど...
39デフォルトの名無しさん:2010/11/09(火) 05:38:14
>>20
図解・配列とポインタの関係
コレで分からなかったら俺はお手上げだ

http://www5b.biglobe.ne.jp/~mya_a/dx/pointer.png
40デフォルトの名無しさん:2010/11/09(火) 08:32:34
>>24
こういう書き方するやつってアホだろ。
41デフォルトの名無しさん:2010/11/09(火) 08:41:28
>>36
全部一直線だよ。
42デフォルトの名無しさん:2010/11/09(火) 09:39:49
abs関数を使わないで絶対値を求めるにはどうしたらいいでしょうか?
環境にstdlib.hがなくて関数が使えません。
43デフォルトの名無しさん:2010/11/09(火) 09:42:44
if(n < 0) n = -n;
44デフォルトの名無しさん:2010/11/09(火) 09:43:21
絶対値が何かを知ってればできないはずが無いんだが。
45デフォルトの名無しさん:2010/11/09(火) 09:52:05
#define ABS(x) (((x)<0)?-(x):(x))
4642:2010/11/09(火) 10:20:42
出来ました!ありがとうございます!
47デフォルトの名無しさん:2010/11/09(火) 11:50:18
文字列を256文字内で入力させて
画面に入力された文字数を表示して
文字列を前・後(中央折り返し)で反転した後、
入力文字列と反転後の文字列を表示する

となる、プログラムを作りたいんですが
何か、フがめっちゃ出ます
どうすればいいでしょうか?

http://www5.pf-x.net/~wannabees/cgi-bin/upload/src/si0059.txt
48デフォルトの名無しさん:2010/11/09(火) 12:03:16
>>47
ループ内で毎回 pIn = in; pOut = out; を実行しているので pIn, pOut がいつも同じ場所を指している
pOut--; としているが、配列の先頭よりもさらに前へ戻ってはいけない
文字列 out を '\0' で終えていない
49デフォルトの名無しさん:2010/11/09(火) 12:05:27
↓コード全部書いてください
50デフォルトの名無しさん:2010/11/09(火) 12:05:55
>>48
ありがとうございます

具体的に書き直すと、どんな感じでしょうか?
51デフォルトの名無しさん:2010/11/09(火) 12:07:21
>>49
さすがだな
>>50
自分で考える気が微塵もないなら宿題スレ行け
52デフォルトの名無しさん:2010/11/09(火) 12:14:19
>>49
最近の分岐予測はかなり高精度と聞くが……これはなかなか
53デフォルトの名無しさん:2010/11/09(火) 12:48:54
#include <stdio.h>

char* rev_str(char* str)
{
  int i;
  char temp;
  for(i=0; i<strlen(str)/2; i++){
    temp = str[strlen(str)-1-i];
    str[strlen(str)-1-i] = str[i];
    str[i] = temp;
  }
  return str;
}

int main(void){
  char str[256+1] = "";
  scanf("%s", str);
  printf("str_num :%d\n", strlen(str));
  printf("input_str :%s\n", str);
  printf("reverse_str:%s\n", rev_str(str));
  return 0;
}
54デフォルトの名無しさん:2010/11/09(火) 13:10:20
ひでえなw
55デフォルトの名無しさん:2010/11/09(火) 13:14:42
>>51
宿題スレに来てた子だよ
56デフォルトの名無しさん:2010/11/09(火) 18:27:32
>>53
基地外に回答しやがって
57デフォルトの名無しさん:2010/11/09(火) 18:37:20
>>53
クソコード垂れてんじゃねーよ。書き直してこい。
58デフォルトの名無しさん:2010/11/09(火) 20:45:13
C#にはデストラクタとファイナライザがあるそうですが、違いを教えてください
そして、使い分け方も教えてください
5958:2010/11/09(火) 20:46:02
ごめん、誤爆した
60デフォルトの名無しさん:2010/11/09(火) 20:46:41
分からないなら書き込まないでください。
他のスレにもあたってみますので・・・
61デフォルトの名無しさん:2010/11/09(火) 20:49:22
どうぞどうぞ
62デフォルトの名無しさん:2010/11/09(火) 20:53:35
>>61
日本語が読めませんか?
知らないならレスしないでください迷惑ですこのスレの総意です。
人にれすんする前に日本語を勉強汗。
63デフォルトの名無しさん:2010/11/09(火) 20:54:38
釣れますか
64デフォルトの名無しさん:2010/11/09(火) 20:54:56
>人にれすんする
>人にれすんする
>人にれすんする
65デフォルトの名無しさん:2010/11/09(火) 20:55:58
すぐに釣り認定する馬鹿がこのスレにもいるものだなぁ。
66デフォルトの名無しさん:2010/11/09(火) 21:23:50
>>64
そこより勉強汗の方が気になった
67デフォルトの名無しさん:2010/11/09(火) 22:33:11
>>65
だってマって最底辺者の職種ITドカタが超多いんだからしょうがないよ
68デフォルトの名無しさん:2010/11/09(火) 22:37:43
釣れますか
69デフォルトの名無しさん:2010/11/09(火) 22:44:46
>>68
あなた、どかたでしょ
70デフォルトの名無しさん:2010/11/09(火) 22:46:17
C言語でヘッダファイルを利用するときは、externを付けないとダメなんですか?
hoge.h
extern void hoge(); ←何が違うの?
void hoge(); ←これと

hoge.c
void hoge(){}
71デフォルトの名無しさん:2010/11/09(火) 23:33:56
関数の宣言においては、externは省略可能で
有無による差は無いよ。
72デフォルトの名無しさん:2010/11/10(水) 00:14:58
http://codepad.org/f4loRX3o
このプログラムはswap()でaとbの値を入れ替えるものなんですが
思ったように動きません なんでですか
73デフォルトの名無しさん:2010/11/10(水) 00:19:57
>>72
仮引数をいくら入れ替えても無駄
参照先を入れ替えろ

void swap(int *x, int *y)
{
int z = *x;
*x=*y;
*y=z;
}
74デフォルトの名無しさん:2010/11/10(水) 00:25:53
仮引数のx, yはそれぞれa, bを指している訳だがその関数では仮引数のxがbを指すようにし仮引数のyがaを指すようにしてるみたいだけど仮引数の指すアドレスを変更したからといって実引数を変更することが出来ないので意味がない。

説明が下手なんで分からんかな。
75デフォルトの名無しさん:2010/11/10(水) 00:39:58
結局実値まで言及しなければいけないのか
なんとなくだけどわかりました
76デフォルトの名無しさん:2010/11/10(水) 02:00:04

円周率 π の値を近似式

π ≈ 4Σ(−1)^n[{(1/2)^2n+1} +{(1/3)^2n+1}]/( 2 n + 1 ) を用いて小数第8位まで正しい値(3.14159265)を出力し,(Σはn=0。100まで)


その π の値を用いて入力された数値 ε に対して,次の不等式を満た
す最小の自然数 N を求めるプログラムを作れ.


|{π^2}/6-Σ(k=1.N)1/k^2|<ε



できる方がいたらやり方を教えてください。

全くできなくて困っています。

不明な点などありましたら教えてください!
77デフォルトの名無しさん:2010/11/10(水) 02:39:46
マルチ乙
78デフォルトの名無しさん:2010/11/10(水) 20:54:14
C言語で

 *
  *
   *
  *
 *

 *
  *
   *
  *
 *

 *
  *
    *

こういうのってできるのか?
79デフォルトの名無しさん:2010/11/10(水) 20:56:08
できる
80デフォルトの名無しさん:2010/11/10(水) 20:57:23
>>79
まじかー
簡単なプログラムきぼんぬ
81デフォルトの名無しさん:2010/11/10(水) 21:06:16
#include <stdio.h>
int main() {
printf("*\n");
printf(" *\n");
printf("  *\n");
printf("   *\n");
printf("  *\n");
printf(" *\n");
printf("*\n");
printf(" *\n");
printf("  *\n");
printf("   *\n");
printf("  *\n");
printf(" *\n");
printf("*\n");
printf(" *\n");
printf("  *\n");
printf("    *\n");
return 0;
}
82デフォルトの名無しさん:2010/11/10(水) 22:10:37
ありがとうございました。無事にできました。
83デフォルトの名無しさん:2010/11/10(水) 22:55:09
まじかーーー
84デフォルトの名無しさん:2010/11/10(水) 23:35:26
どうもー
85デフォルトの名無しさん:2010/11/10(水) 23:36:20
いえいえ
86デフォルトの名無しさん:2010/11/11(木) 00:49:19
8bitの2進数で、

int x = 00110011;
x << 1;
if(x=1○○○○○○○){

こういう感じで先頭のビットが1の場合(他のビットは不問)で判別したいんですけれども、
x>=128という表記以外に、何かやりかたはありますでしょうか?
87デフォルトの名無しさん:2010/11/11(木) 00:50:46
&
88デフォルトの名無しさん:2010/11/11(木) 00:51:10
くだらん事はやめろアホが
89デフォルトの名無しさん:2010/11/11(木) 00:54:11
なんで16進表記と8進表記はあるのに2進で書けないの?
90デフォルトの名無しさん:2010/11/11(木) 01:09:57
2進が書けたのはMSX-Cだったかな?
当時は1バイトでも少なくできるコードが主流だった
16進や8進で可読性は十分だった
必要が無かったんだよ
91デフォルトの名無しさん:2010/11/11(木) 01:13:31
0bってC99でも入らんかったのか
92デフォルトの名無しさん:2010/11/11(木) 01:36:41
>>82
for文とかを使ってもっと綺麗に書くんだ!こんな汚いコードじゃ点数は貰えないぞ!
93デフォルトの名無しさん:2010/11/11(木) 03:14:01
ソースを1行1行ノードに見立ててグラフ表示したいんだけど
どういった方法がありますか?
94デフォルトの名無しさん:2010/11/11(木) 07:42:08
ビット扱うなら 8 進が使いやすいよな。
CHAR_BIT が 8 だと半端になるのが難点だけど。
1 バイト 9 ビットだとピッタリなのにな。
95デフォルトの名無しさん:2010/11/11(木) 09:35:19
そのこころは?
96デフォルトの名無しさん:2010/11/11(木) 11:08:29
あずにゃんペロペロ
97デフォルトの名無しさん:2010/11/11(木) 11:41:36
出せや ピッピッ
いっぱい出しゃいいって
98デフォルトの名無しさん:2010/11/11(木) 12:41:40
fgetsで標準入力から読み込んだ際に返り値でエラーが帰ってきた場合に
その後続けて読み込みをするのは不味いでしょうか?
なにかストリームを回復させる典型的なコードみたいなものはありますか?
99デフォルトの名無しさん:2010/11/11(木) 17:38:58
うっほっはっ
100デフォルトの名無しさん:2010/11/11(木) 17:40:27
ふっほっ
101デフォルトの名無しさん:2010/11/11(木) 17:51:12
エラーステータス自体は clearerr でクリアできるけど
その後続けて読み込んでもどうせまたエラーになるんじゃないか
102デフォルトの名無しさん:2010/11/11(木) 18:26:18
freopen()
103デフォルトの名無しさん:2010/11/11(木) 19:00:56
特定コンパイラの質問も此処でよかったのかしら・・・・

icc で実行時のエラーをチェックしてくれるコンパイルオプションってありますか?例えば
配列で宣言外の部分を参照したときに、ソースのどこどこで間違ってるぞゴルァと怒ってくれるようなオプション

ifortで ifort -check all -traceback *.f とやるようなことをiccでもやりたいのだけれど・・・
104デフォルトの名無しさん:2010/11/11(木) 19:26:23
お前らちゃんと答えろよ
質問溜まってんぞ
105デフォルトの名無しさん:2010/11/11(木) 19:40:06
どれが未解決でどれが解決済かわからん
106デフォルトの名無しさん:2010/11/11(木) 21:43:35
ほっほっ
107デフォルトの名無しさん:2010/11/11(木) 22:59:55
>>98
エラーになったらどうしようもないだろ。
108デフォルトの名無しさん:2010/11/11(木) 23:35:44
Windowsでのネットワークプログラミングを学習するにあたってお勧めなC言語の本ってある?
109デフォルトの名無しさん:2010/11/12(金) 01:30:03
ネットワークスレのテンプレ見たほうがいい
C言語とはあまり関係ないかも
110デフォルトの名無しさん:2010/11/12(金) 02:14:26
ttp://star.gs/cgi-bin/scripts/seizu_s.cgi
0〜24時 0〜60分の0〜24の部分はどうやったら出すことができますか?

111デフォルトの名無しさん:2010/11/12(金) 07:46:36
txtファイルから文字列を読み込んで
strcmp関数で文字列を比較して戻り値を利用した処理を行いたいのですが
この時文字列に日本語を使うとまずい事ってありますか?
知識が無いので何となくですが
全角文字だと使用者のPC環境によって影響ありそうな気がして…
112デフォルトの名無しさん:2010/11/12(金) 08:02:56
画像の2次元フーリエ変換について分からないことがあるんですけど、
手順は、
1. 縦方向にDFTを行い実数部分と虚数部分にわける
2 .周波数処理
3. IDFTで元に戻す
4 .横方向にDFTを行い実数部分と虚数部分にわける
5 .2と同様の周波数処理
6. IDFTで元に戻して出力
これで合っていますか?
113デフォルトの名無しさん:2010/11/12(金) 08:13:19
>>111
ユニコードのテキストだと \0 が頻繁に出てくるので
strcmp では比較できない
114デフォルトの名無しさん:2010/11/12(金) 08:17:39
>>112
1
4
2(5)
3
6

が普通だと思うが
”周波数処理”したい内容によっては
>>112 のままでもうまくいくかもしれない
115デフォルトの名無しさん:2010/11/12(金) 09:07:50
>>114
ありがとうございます。
LPFかHPFをやってみたいと思ってます。
>>112でやってみて出来なければ>>114の方法をためしてみます。
116デフォルトの名無しさん:2010/11/12(金) 10:06:11
http://codepad.org/UA3NzqHU
構造体の処理についてです エラーがでます。おしえて

ちなみにヘッダファイルkouzou.hの内容は

struct P{
char name[20];
int age;
};

です
117デフォルトの名無しさん:2010/11/12(金) 10:51:19
codepad では kouzou.h が無いと言われるのは仕方が無い
実際のコンパイル環境で出たエラーメッセージを張った方が判りやすいよ

考えられるのは
・kouzou.h を2回 include している、多重インクルードガードが kouzou.h に施されていなければエラーになるだろう
・C言語なら struct P {〜}; ではなく typedef struct P {〜}; とすべきはず
 でもこれがエラーの原因となるかは俺も定かでは無い
 
118デフォルトの名無しさん:2010/11/12(金) 11:25:10
>>116
× up(&suzuk);
○ up(&suzuki);

× p>-age=78;
○ p->age=78;

あと117の言うようにインクルードガードが必要
119デフォルトの名無しさん:2010/11/12(金) 11:35:18
>>117
おまえ何を言ってんだよ
120デフォルトの名無しさん:2010/11/12(金) 11:47:34
>>116
エラーを貼れ。

>>117
知識がないなら黙ってろ。少なくとも、下から2行目は見当違いだ。
121デフォルトの名無しさん:2010/11/12(金) 11:49:02
できました ありがとう もう一ついいですか

#include<stdio.h>
#include"kouzou.h"



main()
{
struct P suzuki;
up(&suzuki);
printf("name=%s age=%d",suzuki.name,suzuki.age);
}

mainのプログラムなんですけどこれは教科書のまま書いたものです
(up関数を自作したものを別ファイルに保存しています。)
そこで上のプログラムを見てもらってわかるんですがup()のプロトタイプ宣言がありません
ちなみに"kouzou.h"には構造の定義だけしか書いてません。
教科書ではこのようにプロトタイプ宣言が書いておらず、それにも関わらず
実行可能です。なぜですか

長文すいません 意味不明でしたら修正しますので
122デフォルトの名無しさん:2010/11/12(金) 11:59:06
>>121
Cの場合はプロトタイプ宣言は必須ではありません。
しかし、必ず書くことをお勧めします。
また、main()の戻り値型も必ず書くべきでしょう。
尚、コンパイラの警告レベルは上げておきましょう。
123デフォルトの名無しさん:2010/11/12(金) 12:06:36
いまどき、ひどい教科書だ。
124デフォルトの名無しさん:2010/11/12(金) 12:08:33
10年以上前の教科書じゃないか?
125デフォルトの名無しさん:2010/11/12(金) 12:12:37
教科書というか参考書です「C言語 改訂版1はじめてのプログラミング」
新しいですね CDも付属してる 
いい参考書ですよ おすすめ
126デフォルトの名無しさん:2010/11/12(金) 12:12:50
必須じゃないっていうか
宣言してない場合はint型を戻り値とする関数としてみなされるんじゃなかったっけ?
これは単になんの値も返してないから一見正常に動いてるように見えるだけで
127デフォルトの名無しさん:2010/11/12(金) 12:15:00
そそ、extern int up(...)相当と見做される。
128デフォルトの名無しさん:2010/11/12(金) 13:45:13
ファイル操作について教えてほしいです。
50文字Aとかかれたテキストファイルをバイナリで読み込みら、キャラクターコードを加算するという処理を作ってます。
これだとiCntに入るのは文字数となってしまいます。よろしくお願いします。
pFileIn = fopen(゙Test.txt゙, rb゙);

while(iRet = fgetc(pFilIn) != EOF){
iCnt += iRet
}

fclose(pFilIn);
129デフォルトの名無しさん:2010/11/12(金) 13:48:19
>>128
なりません。
130デフォルトの名無しさん:2010/11/12(金) 13:50:16
>>129
どうやればよいでしょうか?
131デフォルトの名無しさん:2010/11/12(金) 13:52:10
>>128
× while(iRet = fgetc(pFilIn) != EOF){
○ while((iRet = fgetc(pFilIn)) != EOF){
132デフォルトの名無しさん:2010/11/12(金) 14:49:05
気持ちの悪い変数名だな。
133デフォルトの名無しさん:2010/11/12(金) 15:18:09
だな。
134デフォルトの名無しさん:2010/11/12(金) 15:23:52
pFileInなのかpFilInなのかどっちなのかと。
135デフォルトの名無しさん:2010/11/12(金) 16:32:10
p_file_in
136デフォルトの名無しさん:2010/11/12(金) 17:47:05
特徴的な変数使ってれば目につきやすいから他人が特定人物のコードを削除するとき楽じゃん
137デフォルトの名無しさん:2010/11/12(金) 17:50:55
こいつが書いたコードは全部削除じゃ〜
138デフォルトの名無しさん:2010/11/12(金) 18:15:14
初心者なんだけど
eclipseってソフトはc言語には
向いてないの?

まだパッケージとか良く分からんから
書いたソースをパッと実行できる感じの
ソフトがあるとありがたいんだけど・・・
139デフォルトの名無しさん:2010/11/12(金) 18:58:50
最初はlinuxがいいよ
140デフォルトの名無しさん:2010/11/12(金) 19:37:30
>>138
windows なら bcc + bcpad で良いんじゃないの
linux なら普通に gcc と a.out で良いけど
141デフォルトの名無しさん:2010/11/12(金) 19:54:22
それで良いよ
142デフォルトの名無しさん:2010/11/12(金) 19:57:21
だあからさ〜
143デフォルトの名無しさん:2010/11/12(金) 20:19:19
struct P suzuki;

この一文はsuzukiという変数に構造体Pを宣言しているんですが
このsuzukiという変数名を他の変数の値からとってくることは可能でしょうか

つまり
char a=suzuki;
struct P a; というように。
144デフォルトの名無しさん:2010/11/12(金) 20:26:01
>>143
日本語でおk
145デフォルトの名無しさん:2010/11/12(金) 20:26:30
#define a suzuki

struct P a;
146デフォルトの名無しさん:2010/11/12(金) 20:31:07
ぶばぁ!!!!!!!
147デフォルトの名無しさん:2010/11/12(金) 20:40:53
>>143
それが可能だとしてどんなメリットが生じると考えるのか知りたい
148デフォルトの名無しさん:2010/11/12(金) 20:51:39
配列[]のなかにintで宣言した変数の値って入りますかね
149デフォルトの名無しさん:2010/11/12(金) 20:56:23
>>147 structを渡す関数などで一括に処理したい
150デフォルトの名無しさん:2010/11/12(金) 21:19:31
>>138
Turbo C++ 1.01 がオススメ。
151デフォルトの名無しさん:2010/11/12(金) 21:37:12
using namespace std;

int main(int argc, char* argv[])
{
ifstream ifs(FILE_NAME);
string str;

while ( !ifs.eof() )
{
ifs >> str;
cout << str;
}

return 0;
}

こういう単にファイルを読み込んでコンソールに出力するプログラムなんですが、
読み込んだ文字列の頭に「・ソ」っていうゴミがいつもくっつくんです。
原因は何でしょうか?
152デフォルトの名無しさん:2010/11/12(金) 21:42:04
コードがC++だけど
bom付きのファイルじゃないかね
153デフォルトの名無しさん:2010/11/12(金) 21:56:15
>>148
嫌がらせのつもりじゃないがなんで質問する前にやって見ないのかが理解できない。
154デフォルトの名無しさん:2010/11/12(金) 21:59:19
>>78をちょっとやってみました
ttp://codepad.org/lQMNnmtQ
これでいいですか?最後が・・・
155デフォルトの名無しさん:2010/11/12(金) 22:23:30
>>154
もう少しシンプルになるんじゃないかね?
ttp://codepad.org/BOJN1X92
156デフォルトの名無しさん:2010/11/12(金) 22:29:19
もう少し簡単にしてみたぞ
#include<stdio.h>

int main(void)
{
int space[]={0,1,2,3,2,1};
int i;

for(i=0;i<16;i++)
{
printf("%*s*\n", space[i%6], "");
}

return 0;
}
157デフォルトの名無しさん:2010/11/12(金) 22:33:43
>>155-156
ありがとうございます
まだまだ未熟でした
158デフォルトの名無しさん:2010/11/12(金) 22:36:02
複数ファイルをアップしたいんですがなんかいいサイトないですか?
159デフォルトの名無しさん:2010/11/12(金) 22:40:44
グラフとかgnuplot使えよ
160デフォルトの名無しさん:2010/11/12(金) 22:45:26
ふっ!
161デフォルトの名無しさん:2010/11/12(金) 22:49:30
#include <stdio.h>
int main(void) {
    int i=0;
    while(i < 16)
        printf("%*s*\n", i%6-((i%6-3)*(i%6>>2&1)<<1), ""), ++i;
    return 0;
}
162デフォルトの名無しさん:2010/11/12(金) 23:03:05
全然 >>78 になってないんだが。
これだからゆとりは困る。
163デフォルトの名無しさん:2010/11/12(金) 23:13:10
>>78
おおあじなグラフ
http://codepad.org/1fmYgvQf
164デフォルトの名無しさん:2010/11/12(金) 23:21:10
>>158なんですが

ファイル3つを三回にわけてここに書き込んだら迷惑ですかね
165デフォルトの名無しさん:2010/11/12(金) 23:36:04
2chてロートルだよなあ
166デフォルトの名無しさん:2010/11/12(金) 23:36:40
167デフォルトの名無しさん:2010/11/12(金) 23:42:38
>>166
じゃあ自分で試してみろよ
http://codepad.org/iJzpcY6n
これのどこが>>78のグラフになってんだよ
168デフォルトの名無しさん:2010/11/13(土) 00:00:24
struct a {
    int *b;
};

という構造体があって、bのメモリ領域をmain関数内で動的に確保するにはどうすればいいですか?
169デフォルトの名無しさん:2010/11/13(土) 00:02:31
>>168
struct a x;
x.b = (int *)malloc(       );
じゃだめ?
170デフォルトの名無しさん:2010/11/13(土) 00:06:04
>>169
もしもbに確保した領域が構造体aのサイズより大きいサイズになっても問題とか起きないんですかね・・・
171デフォルトの名無しさん:2010/11/13(土) 00:07:06
C言語でセレクトボックスを出すことはできますか?
ありましたらヒントをお願いします。
172デフォルトの名無しさん:2010/11/13(土) 00:08:07
>>170
bはポインタ
つまり、構造体の外のどこかに確保したメモリ領域を「指している」だけ。
struct aのサイズは関係ないよ
173デフォルトの名無しさん:2010/11/13(土) 00:11:25
コンソールということならncursesで頑張ればできなくもない
174デフォルトの名無しさん:2010/11/13(土) 00:13:49
>>170
http://codepad.org/cUSf1lJB
確保したからってbのサイズが変わるわけではないよ。
175デフォルトの名無しさん:2010/11/13(土) 00:32:27
>>172>>174
ありがとうございます
そうなんですね・・・
もう少し勉強します
176デフォルトの名無しさん:2010/11/13(土) 00:45:50
>>152
ありがとうございます
新規作成からちゃんとテキストファイル作ったら大丈夫でした
177デフォルトの名無しさん:2010/11/13(土) 12:22:23
これだからゆとりは
178デフォルトの名無しさん:2010/11/13(土) 12:52:21
それは言い過ぎ
179デフォルトの名無しさん:2010/11/13(土) 13:50:32
#include<stdio.h>

main()
{

FILE *fp;
char *p;
char s[500];
char n[100];

puts("ファイル名を入力してください");
gets(n);

fp=fopen(n,"r");

while(p!=NULL)
{
p=fgets(s,500,fp);

printf("%s",s);

}
fclose(fp);
}

画面からgetsでファイル名を入力しそれを表示させるプログラムなんですが
だぶって表示されてしまいます。(同じ内容が2回表示される)

このプログラムでのfgetの動きについて教えてください
180デフォルトの名無しさん:2010/11/13(土) 13:54:10
>>179
printf の前に
if(p==NULL) break;
をいれればおk
181デフォルトの名無しさん:2010/11/13(土) 14:07:33
fgetの仕組みも教えてください
while(p!=NULL)
{
p=fgets(s,500,fp);

printf("%s",s);  なんでprintfが2回実行されるかわかりませ

}
182デフォルトの名無しさん:2010/11/13(土) 14:10:52
>>181
2回じゃなくて、読み込むファイルの行数+1だろ。
183デフォルトの名無しさん:2010/11/13(土) 14:14:29
>>181
仕組みとか関係ねーよ
pの判定がprintfの後だからだ
つか初回ループに入るかどうかすら未定義だな
184デフォルトの名無しさん:2010/11/13(土) 14:16:53
C言語を独学で始めて1,2ヶ月・・・

ある程度できるようになったけど、完全にできるようになったわけではない…
他のC派生行こうとと思うのですが(C#を勉強しようと思ってます)、C言語を完全に理解できているわけではありません
コンパイラの仕組みとかソースファイル分割とかがよくわかっていません
このまま他の言語行っても大丈夫でしょうか?つまずきそうですごく怖いんです・・・
185デフォルトの名無しさん:2010/11/13(土) 14:17:27
これでいいじゃん
while(fgets(s,500,fp)!=NULL){ printf("%s", s); }
186デフォルトの名無しさん:2010/11/13(土) 14:18:41
最初にwhile文に突入するときはpには何も代入していないからpは不定
(はじめからNULLだった場合,while文以下は実行されない)
で,pはfgetsの結果を記録してNULLかどうかを判定させるわけだから
fgetsをやってからp!=NULLか判定をしなければならないのに>>179では順序が逆になっている

fgetsは成功したら第1引数のポインタを,失敗したらNULLを返すんだから
while( fgets(s, 500, fp) != NULL )
でも問題ない
187デフォルトの名無しさん:2010/11/13(土) 14:18:52
つまづいた時に調べればいいじゃん
188デフォルトの名無しさん:2010/11/13(土) 14:20:21
うーん、よく分からんが何故最初に使わないC言語を選んだんだと小一時間。

別に他の言語でも勉強しっかりやればC経由じゃなくても良いと思うが。
189デフォルトの名無しさん:2010/11/13(土) 14:21:01
>>184
C、C#だけじゃなくて、C++、Java、Ruby、Python、Ocaml、Scalaあたりも平行してやったほうがいいよ。
190デフォルトの名無しさん:2010/11/13(土) 14:23:21
>>189
どの言語も使えない駄目プログラマの完成ですね。
191デフォルトの名無しさん:2010/11/13(土) 14:30:57
>>190
まあ>>189は半分ジョークだけど、言語ひとつしか使えないって
プログラマはレベル低い場合が多いよね。
ひとつしか知らないからそれを深く知ってるかっていうとそんなことはない。
192デフォルトの名無しさん:2010/11/13(土) 14:33:37
そもそも他の言語を学習しようとする学習意欲もないんだろう
193デフォルトの名無しさん:2010/11/13(土) 15:05:01
>>192
学習意欲もないんだろうね
194デフォルトの名無しさん:2010/11/13(土) 15:15:55
吠えてる奴はクリンゴン語くらいは余裕でマスターしてるんだろうなw
他人の目的と手段なんて分からんだろうに
195デフォルトの名無しさん:2010/11/13(土) 15:19:44
言語を覚えること自体が目的じゃないなら、
用途に足るのを1つ覚えれば充分なんだよな。
ただし、それとは別にアセンブラは必須だけどな。
196デフォルトの名無しさん:2010/11/13(土) 15:27:36
漠然としてC言語学習してんだけど
そもそも何ができるの
197デフォルトの名無しさん:2010/11/13(土) 15:29:01
できないことを見つける方が難しい
198デフォルトの名無しさん:2010/11/13(土) 15:29:40
>>196
理想の彼女
199デフォルトの名無しさん:2010/11/13(土) 15:33:41
>>196
おまえらが生きてるこの世界がそれだよ。
200184:2010/11/13(土) 15:36:02
>>195
アセンブラが必須な理由を教えてもらえないでしょうか?

>>196
C言語だけじゃほとんど何もできないと思う
Win32APIとかDirectX使えないと駄目だってばっちゃがいってた
201デフォルトの名無しさん:2010/11/13(土) 15:38:14
コンピューターおばあちゃん
202デフォルトの名無しさん:2010/11/13(土) 15:44:18
fgets()の一行読み込みってどういうこと?
文の終わりって意味?
203デフォルトの名無しさん:2010/11/13(土) 16:47:52
>>202
一行は一行だろ
改行までだよ
204デフォルトの名無しさん:2010/11/13(土) 16:49:09
そもそもfgetsがどういう関数か知らないとか?
205デフォルトの名無しさん:2010/11/13(土) 17:07:20
>>200
ものすごく大雑把に言うとC言語はアセンブラのラッパ的立ち位置だから。
アセンブラ知っとくと初心者がまずつまづくポインタとかでつまづかない。
アセンブラ必須って言うかCPUやらなんやらの基礎知識をしっかり知っとくといい。
逆に言うとそれらの仕組み知らないやつの書いたCプログラムは信用できない。
今の時代新規だとJavaとかのLL言語のが案件多いから低レベル制御とか書かないやつらは
無理してC言語しなくてもいいんじゃないかと思う。
206デフォルトの名無しさん:2010/11/13(土) 18:21:54
>>195
それはそれで正論だけど、VBしか知らないとかCしかできないみたいな
連中は実際レベル低いしね。
初心者の「複数の言語をやって中途半端になりませんか」って質問には
そんなもん気にすんなとかしかいいようがない。
207デフォルトの名無しさん:2010/11/13(土) 18:47:53
>>178
これだからゆとりは
208デフォルトの名無しさん:2010/11/13(土) 18:49:41
Javaを勉強してきた身だけど、システムフック等を弄りたくてC系統を始めようと思ってる。
CとC++どちらが良いだろうか
209デフォルトの名無しさん:2010/11/13(土) 18:51:39
どちらでもいい
210デフォルトの名無しさん:2010/11/13(土) 19:03:50
そりゃ上位互換のC++一択。
211デフォルトの名無しさん:2010/11/13(土) 19:06:33
C++ を“変態 C”として使う奴だけは許せない。
212デフォルトの名無しさん:2010/11/13(土) 19:15:21
ベターC便利じゃん
213デフォルトの名無しさん:2010/11/13(土) 19:15:54
>>208
Cだね

CとC++は似ているようで言語との付き合い方が違ってくる
せっかくJavaをやってきたのなら、わざわざJavaがアンチテーゼを示したような類似言語で
Java訛りなコード書いてもC++使いとしては三流の域を出られない

いっそまるで思想の違うCのほうが憶え甲斐があると思う
214デフォルトの名無しさん:2010/11/13(土) 19:40:58
>>207
それは言い過ぎ
215デフォルトの名無しさん:2010/11/13(土) 20:07:34
>>207
それは言い過ぎ
216デフォルトの名無しさん:2010/11/13(土) 20:09:22
>>214−215
ゆとりうるせー
217デフォルトの名無しさん:2010/11/13(土) 20:09:57
>>216
それは言い過ぎ
218デフォルトの名無しさん:2010/11/13(土) 20:21:37
haskellだっけ?
あれは文法がCとかBASICみたいな普通の文法とはずいぶん違うので、新鮮でおもしろいかもね。
あとparlだっけ?perlだっけ?あれも新鮮でおもしろいかも。cしか知らない当方には暗号みたいに見えるw
219デフォルトの名無しさん:2010/11/13(土) 20:38:24
Brainfuck オススメ
220デフォルトの名無しさん:2010/11/13(土) 20:50:15
ブレインフックw
221デフォルトの名無しさん:2010/11/13(土) 21:51:26
>>217
これだからゆとりは
222デフォルトの名無しさん:2010/11/13(土) 21:54:35
>>223
それは言いすぎ
223デフォルトの名無しさん:2010/11/13(土) 21:56:52
ん?俺なんか言ったか?
224デフォルトの名無しさん:2010/11/13(土) 22:05:16
グローバル構造体配列とグローバル構造体配列のカウンタ(giとかだったかなwww)
が設置してある(配列・カウンタとも5個くらいあった)
色々な関数でインクリメントやらデクリメントやらしてるプログラムに出会ったんだ
5万行くらいあったんだが、書いた奴出て来いよwww
メンテする身になってくれ…マジで綱渡りしてるみたいに仕様変更したぞ
225デフォルトの名無しさん:2010/11/13(土) 22:11:58
質問です
日本語扱えるようにするには文字列を
char型をwchar_t型に変更すればおkですか?
226デフォルトの名無しさん:2010/11/13(土) 22:13:01
ダメです
227デフォルトの名無しさん:2010/11/13(土) 22:16:53
変更しなくてもそのままで扱える。
228デフォルトの名無しさん:2010/11/13(土) 22:25:00
>>223
これだからゆとりは
229デフォルトの名無しさん:2010/11/13(土) 22:25:17
>>227
漢字とかも問題ないってことですか?
230デフォルトの名無しさん:2010/11/13(土) 22:26:56
>>229
扱ってるエンコーディングが一文字8ビットのやつなら。
231デフォルトの名無しさん:2010/11/13(土) 22:30:39
>>228
これは正しい
232デフォルトの名無しさん:2010/11/13(土) 22:32:10
>>228
これは正しい
233デフォルトの名無しさん:2010/11/13(土) 22:33:14
>>224
マ板行け
234デフォルトの名無しさん:2010/11/13(土) 22:34:40
プ板でやれ
235デフォルトの名無しさん:2010/11/13(土) 22:34:45
>>230
もし使う可能性があるなら……
ttp://wisdom.sakura.ne.jp/programming/c/c63.html
こんな風にして扱っていけばいいんでしょうか?
236デフォルトの名無しさん:2010/11/13(土) 22:42:27
C++って何ですかwikiみてもわからないのでわかりやすく教えてください
237デフォルトの名無しさん:2010/11/13(土) 22:43:59
好きなようにすればいい。
でも学習段階なら、かなや漢字の扱いはひとまず後回しにしておいて、
ASCII のみで一通りやってからにしたほうがいいよ。
238デフォルトの名無しさん:2010/11/13(土) 22:49:44
>>235
文字列はwchar_tであつかって、文字列の操作もwcscpy()とかワイド文字系を
つかえばとりあえず動くよ。
まじめにやろうとすると、サロゲートペアとか結合文字とかあるんで、
けっこうめんどう。
239デフォルトの名無しさん:2010/11/13(土) 22:54:50
>>237-238
もう少し勉強してからやりたいと思います
ありがとうございました
240デフォルトの名無しさん:2010/11/13(土) 23:04:33
ふざけんな
241デフォルトの名無しさん:2010/11/13(土) 23:10:56
普通にcharでやればいいじゃん
漢字は1文字2バイトだからchar2個で1文字分のデータを確保すればいいだけやん
242デフォルトの名無しさん:2010/11/13(土) 23:16:26
勝手に他人の環境の文字コードを決め付けるなよ。
243デフォルトの名無しさん:2010/11/13(土) 23:24:35
本来はcharを文字型として使うのはまずいんだけどしょうがなく使ってる
これは釣りだけどcharが1byte固定って言うのは幻想で厳密にはlimits.hのCHAR_BIT見なきゃいけないし
244デフォルトの名無しさん:2010/11/13(土) 23:27:17
>>243
charは1バイトってきまってる。
245デフォルトの名無しさん:2010/11/13(土) 23:28:13
で?
246デフォルトの名無しさん:2010/11/13(土) 23:28:59
で?
247デフォルトの名無しさん:2010/11/13(土) 23:29:11
>>244
『これは釣りだけど』
248デフォルトの名無しさん:2010/11/13(土) 23:30:18
>>245
「charは1byte固定っていうは幻想」

「いや1バイトだろ」
249デフォルトの名無しさん:2010/11/13(土) 23:31:14
>本来はcharを文字型として使うのはまずいんだけど

え?
250デフォルトの名無しさん:2010/11/13(土) 23:46:39
char は 1 byte で固定。これは仕様。
1 byte の幅は 8 bits とは限らない。
251デフォルトの名無しさん:2010/11/14(日) 00:13:39
変態archに関わる人って、あんまりいないでしょ
252デフォルトの名無しさん:2010/11/14(日) 00:32:03
日本語の文字が2バイト以外の文字コードなんかあるの?
253デフォルトの名無しさん:2010/11/14(日) 00:47:52
EUCとかUTF-8とか
254デフォルトの名無しさん:2010/11/14(日) 00:47:59
あるよ?
255デフォルトの名無しさん:2010/11/14(日) 01:19:46
アセンブラの試験問題用に設定されたCASL2の仕様が1バイト16ビットじゃなかったか?
256デフォルトの名無しさん:2010/11/14(日) 01:38:22
>>255
志村それ1WORD
257デフォルトの名無しさん:2010/11/14(日) 02:01:42
>>255
バイトってのは若干の曖昧さがある用語で
今日では大部分のケースで1バイト=8ビットを仮定してもいいが、
そうでない環境もある

厳密さが必要な場合は、バイトを使わずにビットのみで表現するか
あるいは(特にネットワーク分野では)オクテットを使ったり
258デフォルトの名無しさん:2010/11/14(日) 02:03:42
ニブル
259デフォルトの名無しさん:2010/11/14(日) 02:05:27
>>256
じゃあCASL2の1バイトは何ビット?
260デフォルトの名無しさん:2010/11/14(日) 03:50:52
Shift JISが使えるフリーのC言語のコンパイラってどれがいいの?
261デフォルトの名無しさん:2010/11/14(日) 04:26:58
どれでも使えるよ。
262デフォルトの名無しさん:2010/11/14(日) 04:36:19
struct LIST_UNIT {
    struct LIST_UNIT* next;
};


LIST_UNIT を L で表し、たとえば LIST_UNIT が3個つながった状態
L -> L -> L

各Lを判別しやすいように添字をつけて説明すると、たとえば
L0 -> L1 -> L2
と図示した方がわかりやすいかも。


struct LIST_UNIT L0;
struct LIST_UNIT L1;
struct LIST_UNIT L2;
この段階だと、L0,L1,L2 は、まだ繋がっていない。
L0の次にL1をつなげるには、
L0.next = &L1;
として、L0のnextが、L1のアドレスを指すようにセットしなければならない。

同様にして
L1.next = &L2;
とすれば、L1の次にL2を繋げたことになる。

L2.next には NULL が入る。next が NULL だと、最後という意味になる。
263262:2010/11/14(日) 04:38:38
<<貼り付け>>
L0 -> L1 -> L2
を A とする。

L10 -> L11 -> L12
を B とする。

B の L10 と L11 の間の位置に、L0 を挿入すると、それは L0 単体ではなく、Aを挿入することになる。つまり
L10 -> L0 -> L11 -> L12
ではなく
L10 -> L0 -> L1 -> L2 -> L11 -> L12
となる。


<<シーク>>
L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先 の LIST_UNIT のポインタを得る。
たとえば

struct LIST_UNIT* p;
p = シーク(&L5, 3);

なら、p には L5 から 3個先の L8 のアドレスが入る。
264262:2010/11/14(日) 04:45:31
<<コピー>>
L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先までを、新たなリストにコピーする。
たとえば、

struct LIST_UNIT* p;
p = コピー(&L5, 3);

なら、L5 から 3個分の L7 までが、あらたに
L10 -> L11 -> L12
の、長さ3のリストとして領域確保・設定され、p には L10 のアドレスが入る。


<<消去>>
L0 -> L1 -> L2 -> L3 -> L4 -> L5 -> L6 -> L7 -> L8 -> L9
だとして、
LIST_UNIT から x個先までを、リストから消去し、リストをつなぎ直す。

struct LIST_UNIT* p;
p = 消去(&L5, 3);

なら、L5 から 3個分の L7 までが、リストから消去され
L0 -> L1 -> L2 -> L3 -> L4 -> L8 -> L9
L4.next が L8 になる。
265262:2010/11/14(日) 04:59:03
struct LIST_UNIT {
    struct LIST_UNIT* next;
    void* date;
};

void* data に、実データへのアドレスを記録できるようにすれば、

struct LIST_UNIT A, B, C;
A.next = &B;
B.next = &C;
C.next = NULL;

char c0 = "AAA";
char c1 = "BBB";
char c2 = "CCC";

A.data = (void*)(&c0);
B.data = (void*)(&c1);
C.data = (void*)(&c2);
として、char 型をデータとして記録できる。
また、char 以外の型もデータとして記録できる。たとえば、char 型を記録した A -> B -> C のリストを ABC として、同様に DEF, GHI のリストもあるとしたら、

struct LIST_UNIT X, Y, Z;
X.next = &Y;
Y.next = &Z;
Z.next = NULL;

X.data = (void*)(&A);    // A -> B -> C
Y.data = (void*)(&D);    // D -> E -> F
Z.data = (void*)(&G);    // G -> H -> I
という具合に、リストのリストも、わりと単純に書けそうな気がする。
266デフォルトの名無しさん:2010/11/14(日) 05:05:19
>>260
オススメはいつでも Turbo-C 2.01 だよ。
267262:2010/11/14(日) 05:07:51
だれか実際に動作するコードに翻訳してくれるとうれしいです。
268デフォルトの名無しさん:2010/11/14(日) 06:36:44
宿題なら宿題スレへどうぞ
269デフォルトの名無しさん:2010/11/14(日) 09:52:04
なんでさ、C言語って速いわけ
他の言語も昔からあるけど、それらの言語よりも速いの
270デフォルトの名無しさん:2010/11/14(日) 10:11:34
Fortranのが速いよ
271デフォルトの名無しさん:2010/11/14(日) 10:12:36
アセンブラは爆速
272デフォルトの名無しさん:2010/11/14(日) 10:44:44
Fortranの方が速いって言うけどCの最適化性能も上がってるし実際あんまり変わらん
273デフォルトの名無しさん:2010/11/14(日) 10:55:34
昔、先生が言ってたんだけど
アセンブラで書いたコードが速度でC言語に負けたらしい
Cコンパイラ>先生の脳みそ
274デフォルトの名無しさん:2010/11/14(日) 11:57:23
>>273
12,3年前にアセンブラの高速化の本を読んだら、ペアリングがどうとか
分岐予測がどうとか、すでについていけない世界だった。
275デフォルトの名無しさん:2010/11/14(日) 13:55:21
276デフォルトの名無しさん:2010/11/14(日) 17:18:35
配列→ポインタは出来ますが、
ポインタ→配列はできるのですか?
277デフォルトの名無しさん:2010/11/14(日) 17:23:05
>>276
できるってどういう意味だろう。
[]でアクセスならできるけど。
278デフォルトの名無しさん:2010/11/14(日) 17:28:33
>>273
レジスタ割り付けとかごく低レベルな部分については
最適化コンパイラが人間を超えることも多い

人間が強い部分は、コードから読み取れない
暗黙の条件などを使って最適化できるケース
例えば、Cのエイリアス周りは最適化困難だと知られている
279デフォルトの名無しさん:2010/11/14(日) 17:28:58
彼は配列とポインタの関係で混乱していると見た
280デフォルトの名無しさん:2010/11/14(日) 17:33:28
>>276
よく分からんがこういうことか?
http://codepad.org/WqmSxMHq
281276:2010/11/14(日) 17:41:51
>>277,280
配列からポインタへは変換できるけど、ポインタから配列には変換出来ますか
282デフォルトの名無しさん:2010/11/14(日) 17:47:24
>>281
出来ます
283デフォルトの名無しさん:2010/11/14(日) 17:48:49
>>281
もっと具体的に書かないと、正確な解答は得られないよ
284デフォルトの名無しさん:2010/11/14(日) 17:52:34
>>281

int n[10] ;
int* p ;

p = n ;
はできるけど
n = p ;
はできないという意味ではできない

nは既にメモリ上に確保されてしまってるのでそのアドレスはずらせないよ
p=nはそのアドレスを指すポインタを取得してるだけ
285デフォルトの名無しさん:2010/11/14(日) 17:53:29
「変換」という言葉を使ってる時点でポインタを理解してなさそう
286276:2010/11/14(日) 17:56:31
>>284
こういう答えが聞きたかった
thx

>>282
何故できるのですか?

ポインタと配列の違いは、こんな感じでおkですか?
・スコープ
・長さ(要素数)を求められるか
・定数かそうじゃないか
287デフォルトの名無しさん:2010/11/14(日) 17:59:58
とんちんかんすぎ
ポインターは参照するメモリー上のアドレス。
配列はメモリー上の実態。
288デフォルトの名無しさん:2010/11/14(日) 18:08:11
>>284
こういう試せばわかるんじゃね?って疑問って多いよね。
座学でやってたりするんだろうか。
289デフォルトの名無しさん:2010/11/14(日) 18:09:06
>>286
配列とポインタはセットで語られることが多いけど全く別物です
相互変換できるものではないし、並列で比べることは無意味です
290デフォルトの名無しさん:2010/11/14(日) 18:10:44
実際やってみてエラーが出たから「なんで?」って思ったんじゃないの?w
ポインタで躓く奴の典型だな
291デフォルトの名無しさん:2010/11/14(日) 18:14:33
ポインタ ポインター
エラ   エラー
292デフォルトの名無しさん:2010/11/14(日) 18:15:52
>>290
そういう情報を小出しにする質問もイラっとするな。
最初から、こんなことをしたけどできません、みたいに質問すればいいのに。
293デフォルトの名無しさん:2010/11/14(日) 18:16:35
1:アーサー王
2:アーサ王
3:アサ王
どれ?
294276:2010/11/14(日) 18:16:37
string *s = new string[10];
delete[] s;
なんで、*sなのに配列のサイズがわかるのかな?って思ったの
295デフォルトの名無しさん:2010/11/14(日) 18:21:26
>>294
メモリブロックにサイズの情報もってるんだろうな。

malloc()、free()も、開放するときはサイズ指定しないから、
そういう疑問ってもったことなかった。
296デフォルトの名無しさん:2010/11/14(日) 18:25:12
C++かよ
297276:2010/11/14(日) 18:27:17
>>295
やっぱり、そう考えるしか無いよね

>>296
C++だけどポインタだから、C言語スレに質問をしてたの
298デフォルトの名無しさん:2010/11/14(日) 18:34:20
個数じゃなくて、NULLを終端に使ってるんじゃあ?
299デフォルトの名無しさん:2010/11/14(日) 18:36:35
共用体で、基本的なブロックサイズ単位が決められてて、各ブロックはヘッダーにも領域にも使えるってことでは?
mallocで得たメモリの先頭アドレスから、基本ブロックサイズ分だけ戻ったアドレスに、確保された領域サイズの情報が入ってる実装が
おそらくいちばん素直な実装だと思う。だからfree89はサイズを必要としないのだと思う。
300299:2010/11/14(日) 18:56:51
#include <stdlib.h>

void main()
{
unsigned char* p = (unsigned char*)malloc(123);
free(p);
}

たとえば、これは実行時にメモリエラーにならないけど。

#include <stdlib.h>

void main()
{
unsigned char* p = (unsigned char*)malloc(123);

// p が指すメモリの、一つ手前の位置の値を、異常な数値に書き換える。
*(p-1) = 0xFF;

free(p);
}

これだと、free(p); が実行時エラーになったです(gcc, eglibc)

逆に言うと、このmallocの内部的な基本ブロックとして使われてる共用体のフォーマットがわかれば、(struct malloc_unit*)(p-1)->len = 3;などと書き換えて、
free()で開放するメモリの量を勝手に多くしたり少なくしたりもできるかもしれないなぁ…と思いました。(なにもメリットありませんがw)
301デフォルトの名無しさん:2010/11/14(日) 18:59:13
[-4]あたりに確保したサイズが入ってたような
環境によって違うだろうけど
302デフォルトの名無しさん:2010/11/14(日) 19:08:22
>>300
他のメモリブロックと兼ね合いがあるから、勝手にサイズ変更したらうまくいかないだろ。
303デフォルトの名無しさん:2010/11/14(日) 19:13:27
*(p-1) = 0xFF;

んなことしたら
freeとか関係無しに落ちるだろw
304デフォルトの名無しさん:2010/11/14(日) 19:16:05
>*(p-1) = 0xFF;

www
305デフォルトの名無しさん:2010/11/14(日) 19:55:14
>>301
bcc で確認したら p - 4 から入ってたよ、アライメントを考慮して4バイト単位で変化する

char* p = malloc( 1 );
p[3] = 0x00;

こんな事しても平気かな(何もメリット有りませんが2)
306デフォルトの名無しさん:2010/11/14(日) 20:01:42
>>305
メリットない以前に、動かなくなるんじゃないか?
307デフォルトの名無しさん:2010/11/14(日) 20:18:08
>>305
まったくの仮定の話ですが、

mallocが内部的に使ってる基本ブロックが、たとえば
union malloc_unit {
    struct {
        unsigned long block_size;
        void* next;
    };

    unsigned char a[32];
};

だとすれば、共用体 malloc_unit ひとつあたりのサイズは 32バイトなので、
malloc関数に指定した確保サイズが1バイトだとしても、実際には32バイト確保されてしまうのだろうから、
すくなくともp[1] から p[31]までは、なにを書いても平気(mallocの動作には支障ない)ような気がします。

もしも malloc が内部的に使ってる基本ブロックサイズが、たとえば
union malloc_unit {
    struct {
        unsigned char block_size;
        unsigned char next_address;
    };

    unsigned char a[1];
};

だとしたら、malloc_unit ひとつあたりのサイズは2バイトなので、p[3] は、次のブロックの next_address あたりを指すことになるでしょうし(まったくの仮定の話です)、mallocの動作に問題が生じるはずだと思います。
基本ブロックのサイズ次第だと思います。(そもそも、基本ブロックなんてものが本当に使われてるかどうかもわかりません。まったくの仮定の話です。もしかしたら別テーブルがあるのかもしれませんし…)
308デフォルトの名無しさん:2010/11/14(日) 20:22:32
>>300
exploitじゃねーか
309デフォルトの名無しさん:2010/11/14(日) 20:22:46
>>306
malloc() をキャストしてない点に突っ込んだのなら細かい奴だな

一応確認したけど動くよ、p + 3 は p に割り当てられてるから何の問題も無い
確認して気が付いたんだけど bcc の場合は malloc の最低単位は 12Byte みたいだ
つまり p[11] までは使えるって事だね(そんな実装したら殺されるけど)
310デフォルトの名無しさん:2010/11/14(日) 20:27:58
問題ないわけ無いだろアホ
311デフォルトの名無しさん:2010/11/14(日) 20:30:24
何の問題も無いとかほざくアホは死ね
312デフォルトの名無しさん:2010/11/14(日) 20:36:51
>>307
bcc ではそんな感じでは無いな、メモリ管理テーブルが別に有るみたいだ
p0=16byte, p1=1byte, p2=1byte と確保して得られたアドレスの差分とアドレス直近8Byteを確認してみたら
アドレスの差分は p1-p0=0x14, p2-p1=0x10
p0 0x0000000010000000
p1 0x000000000c000000
p2 0x000000000c000000
だったよ
p0のサイズが0x10でp1のサイズの0x04を足した0x14がp1-p0だからサイズと領域以外は存在しない
313デフォルトの名無しさん:2010/11/14(日) 20:38:33
×p0のサイズが0x10でp1のサイズの0x04を足した0x14がp1-p0だからサイズと領域以外は存在しない 
○p0のサイズが0x10でp1のサイズ領域の0x04を足した0x14がp1-p0だからサイズ領域と確保領域以外は存在しない 
314デフォルトの名無しさん:2010/11/14(日) 20:40:28
>>310 >>311
倫理的とかの問題は有るけど、物理的な問題は無いって話だぉ
物理的に問題が有るならどういうケースか教えてほしいな
315デフォルトの名無しさん:2010/11/14(日) 20:41:26
死ね
316デフォルトの名無しさん:2010/11/14(日) 20:58:45
殺伐としてんな〜
317デフォルトの名無しさん:2010/11/14(日) 21:41:55
>>312

union malloc_unit {
    unsigned char size[0x04];    // unsigned long    // 4byte
    
    unsigned char[0x0C];    // 12byte
};


だとしたら、
■ = malloc_unit = 12byte

p0 p1 p2
↓  ↓ ↓
■■■■■■
  ↑ ↑
  | p2_size
  |
  p1_size

(p0は最低でも16バイト以上必要、p1は最低でも1バイト以上必要、p2は最低でも1バイト以上必要)

p1 - p0 = 12 * (2 + 1) = 36byte
p2 - p1 = 12 * (1 + 1) = 24byte

こうなるかと思ってましたが、
実際にはもっとメモリ使用量を節約できるように、size は4byte、block は12byte と、単位が異なるようですね。
これだと、メモリ領域を未使用領域として再設定する場合など、フラグ関係をどこでどのようにやっているのか想像つきません。
管理用にわざわざ別テーブルを用意するなら、管理情報もふくめて、共用体としてサイズ等のヘッダに項目を作ってしまった方が単純で良いような気が。はて?
318デフォルトの名無しさん:2010/11/14(日) 21:55:41
使用中と未使用の2種類しかないんですから、サイズが負の場合は未使用とか、いくらでもやりようがあります
そのサイズぶんだけ進んだところが次のブロックなのだからサイズさえわかれば先頭から順に全ブロック辿れますし
性能さえ気にしなければ、他に何の情報も要らないと思いますが
319デフォルトの名無しさん:2010/11/14(日) 22:14:17
C言語自体と特に関係のない特定のコンパイラの実装の話は他所でやってくれ。

mallocで確保した領域以外へのアクセスを行ってたまたまプログラムが動きづつけるかどうかなんて特定のコンパイラの実装の話。

言語的には完全にNG。
320デフォルトの名無しさん:2010/11/14(日) 22:58:09
Cのコード見てるとムラムラしてくるな
変数名の後ろに菊があるとかこの言語考えた人エロすぎ
321デフォルトの名無しさん:2010/11/14(日) 23:03:15
>>317
確かに管理テーブルで管理するならサイズもそこに書けば良いじゃんって思うしなぁ
322デフォルトの名無しさん:2010/11/14(日) 23:14:24
2項*演算子の無名関数が ( _ * _ ) になっちゃう言語の方がエロいと思うのだが
323デフォルトの名無しさん:2010/11/14(日) 23:19:27
>>319
C言語=コンパイラなんだからここで話す
324デフォルトの名無しさん:2010/11/14(日) 23:22:49
未定義コードを書く奴は死ね
325デフォルトの名無しさん:2010/11/14(日) 23:23:35
>>324
残念ながら定義されているんだよなぁ、これが。w
326デフォルトの名無しさん:2010/11/14(日) 23:28:52
はぁ?規格のどこに書いてあんのか言ってみろよ
327デフォルトの名無しさん:2010/11/14(日) 23:30:20
↑規格も読めない周回遅れの知恵遅れクン。w
328デフォルトの名無しさん:2010/11/14(日) 23:38:53
mallocは割り当てた領域の開始アドレス(最小のバイトアドレス)を返す。

開始アドレスより小さいアドレスへのアクセスなんて全く定義されていない。
329デフォルトの名無しさん:2010/11/14(日) 23:43:11
釣られたー!w
330デフォルトの名無しさん:2010/11/14(日) 23:47:03
規格に頼ってるようじゃアマだな。
組み込みシステムでは「規格に書いてないから・・・」とか通用しない。アドレスじかうち。
331デフォルトの名無しさん:2010/11/14(日) 23:48:08
アドレス直打ちは規格の範囲内。
332デフォルトの名無しさん:2010/11/14(日) 23:48:22
>>328
ソース
333デフォルトの名無しさん:2010/11/14(日) 23:49:45
>>331
*0xFFFFFFFFFFFFFFFFFFFF = 0;
334デフォルトの名無しさん:2010/11/14(日) 23:49:48
>>332
ISO/IEC 9899:1999
335デフォルトの名無しさん:2010/11/14(日) 23:51:02
>>334
馬鹿発見。w
336デフォルトの名無しさん:2010/11/14(日) 23:53:22
規格は根拠にならないと何度言えば(ry
337デフォルトの名無しさん:2010/11/14(日) 23:54:10
規格が根拠にならない話は、C言語の話ではないので、他のスレでお願いします。
338デフォルトの名無しさん:2010/11/15(月) 00:16:45
えwwwwww
339デフォルトの名無しさん:2010/11/15(月) 00:19:15
>>337は単なるage厨だろ。単発だし。
340デフォルトの名無しさん:2010/11/15(月) 01:11:00
んでC言語のコンパイラはどれを使えばいいの?
341デフォルトの名無しさん:2010/11/15(月) 01:14:18
>>340
VC#
342デフォルトの名無しさん:2010/11/15(月) 01:21:49
>>340
Turbo-C 2.01 がオススメだっつってんだろがよ。
343デフォルトの名無しさん:2010/11/15(月) 01:22:50
長いコード出して質問するなら専門スレの方が早いし確実かもよ

C/C++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/

C言語なら俺に聞け(入門編)Part 73
http://hibari.2ch.net/test/read.cgi/tech/1289049065/
344デフォルトの名無しさん:2010/11/15(月) 01:23:32
ごめん誤爆
345デフォルトの名無しさん:2010/11/15(月) 01:24:11
>>343
自己参照発見
346デフォルトの名無しさん:2010/11/15(月) 01:30:58
諸先輩方に質問がございます。
「決定版 はじめてのC++ 初版」を読みながらXP sp3 / VC++2008 EE sp1 で
Windowsプログラムを作成しております。
わたくしはプログラミング歴2日ほどの初心者です。

動的変数の配列への適用(p.405)についての質問です。
TCHAR型の動的配列の書き方についてです。

Windowsの変数型であるTCHAR型変数への記載が当然ながら書いてありません。
またchar型変数のことも記載がないのでとまどっております。

TCHAR *str1 ;
str1 = new TCHAR[ 256 ] ;

delete [] str1 ;
という記述は正しく機能するでしょうか?

なぜネットで散見いたします
char *str1 = new char[ 256 ] ;
のような書き方をしないかについて申しあげます。

LPCTSTR lpcszMes1 = TEXT( "hogehoge" ) ;
LPCTSTR lpcszMes2 = TEXT( "mesomeso" ) ;
LPTSTR lpszUnited ;
があるときに
void MessageUnited( TCHAR *unit , LPCTSTR mes1 , LPCTSTR mes2 )
{
// ここでmes1とmes2のそれぞれの文字数を合計した数値sumを計測して
// unit = new TCHAR[sum+1] ;
}
といった関数で合体処理して、新しい文字列変数unitのポインタをlpszUnitedで参照して、活用した後、deleteしたいのです。
私の頭は大丈夫でしょうか。
347デフォルトの名無しさん:2010/11/15(月) 01:32:22
>>342
その理由は?
348デフォルトの名無しさん:2010/11/15(月) 01:37:22
>>346
誘導されて来たみたいだけど、
テンプレ視てくれると分かるがC++は特別扱いなんですわ

あっちで誘導した人の認識ミスだから、安心してここに行ってくれ

C++相談室 part86
http://hibari.2ch.net/test/read.cgi/tech/1288976595/
349デフォルトの名無しさん:2010/11/15(月) 01:39:25
たらいまわしワロタ
次はWin32スレに誘導されそうな予感w
350デフォルトの名無しさん:2010/11/15(月) 01:39:33
>>348
テンプレを満足に読まなかったわたくしに責任があります。
まことにすみません。
そしてありがとうございます。
C++相談室へ行ってきます。
351デフォルトの名無しさん:2010/11/15(月) 02:31:16
彼は見応えがある。
将来立派なIT土方になれるだろう
352デフォルトの名無しさん:2010/11/15(月) 02:43:26
>>347
コンパクトで使い易く性能も良い。
各メモリモデルにも対応していて実用的。
353デフォルトの名無しさん:2010/11/15(月) 02:47:20
メモリモデルなんて単語ありません。
354デフォルトの名無しさん:2010/11/15(月) 03:13:04
355デフォルトの名無しさん:2010/11/15(月) 03:21:18
そんな個人サイト上げられても
356デフォルトの名無しさん:2010/11/15(月) 03:21:27
>>354が釣れたw
357デフォルトの名無しさん:2010/11/15(月) 03:28:35
いまさらそんなもので悩みたくないだろ。
358デフォルトの名無しさん:2010/11/15(月) 04:11:59
恥ずかしい台詞、禁止!
359デフォルトの名無しさん:2010/11/15(月) 06:08:27
#include<stdio.h>

main()
{
char *p="hello";


puts(p);
}

このプログラムのputsなんですが予想に反して正常にコンパイルされました
puts()って格納先のポインタも出力できるんですか
360デフォルトの名無しさん:2010/11/15(月) 11:11:59
そもそもputsの引数はポインタだよ、元から

http://msdn.microsoft.com/ja-jp/library/tf52y4t1%28VS.80%29.aspx
> int puts( const char *str );
361デフォルトの名無しさん:2010/11/15(月) 12:24:09
>>359
逆に、puts("hello")としたときには"hello"を指すポインタがputs()に引き渡されているだけ。
puts()はどちらの場合もポイント先の文字をナル文字に到達するまで順に出力して、最後に改行文字も出力する。
362デフォルトの名無しさん:2010/11/15(月) 12:35:46
大体合ってる
363デフォルトの名無しさん:2010/11/15(月) 16:47:49
合ってるね
364デフォルトの名無しさん:2010/11/15(月) 17:10:11
これ絶対合ってるよね
365デフォルトの名無しさん:2010/11/15(月) 17:49:51

    ○
   // ∧_∧ ○
  ○、<#`Д´>||<ウリを嫌うやつはネトウヨニダ!
  ||(    )  ○
   ○ ヽ___フ/ //
       レ ○

「ネット・ウヨクと毎日闘っている」 by民団関係者
366デフォルトの名無しさん:2010/11/15(月) 18:18:30
なんでもネトウヨ認定してたら韓国人までネトウヨになったでござる
367デフォルトの名無しさん:2010/11/15(月) 18:21:20
芸術的環境依存と言えば?
368デフォルトの名無しさん:2010/11/15(月) 22:04:27
言えば?(;゚д゚)ゴクリ…
369デフォルトの名無しさん:2010/11/15(月) 22:21:25
http://codepad.org/I0Y693Iu
aのアドレスが書き換わらないです 教えてください
370デフォルトの名無しさん:2010/11/15(月) 22:25:18
371デフォルトの名無しさん:2010/11/15(月) 22:26:21
void ai( char **a);

main()
{
char *a="fkuha";
ai(&a);
puts(a);

}

void ai( char **a)
{
*a="hlh";
}

372デフォルトの名無しさん:2010/11/15(月) 22:38:11
きめえからこうやれよ

char *ai( char *a);

main()
{
char *a="fkuha";
a = ai(a);
puts(a);

}

char *ai( char *a)
{
return "hlh";
}
373デフォルトの名無しさん:2010/11/15(月) 22:38:19
今日スクリプト言語触って見たんだが入力する文字数よって領域の確保しないですむことに感動した。
なんでCだと毎回mallocとかで領域確保しないといけないの?
374デフォルトの名無しさん:2010/11/15(月) 22:40:37
巣に帰れ
375デフォルトの名無しさん:2010/11/15(月) 22:40:49
>>373
Cでも最初から適当な大きさのバッファを用意しておけば?
376デフォルトの名無しさん:2010/11/15(月) 22:40:58
スクリプト言語も文字数分の領域を確保してるとか言い出す輩↓
377デフォルトの名無しさん:2010/11/15(月) 22:41:16
早すぎワロタ

ちなみに普通の変数に長文を入力するとき、いつも配列をで一つずつ代入してたん
だけど配列を使わないで直で長文を代入したらa="njhld"←このように
文字一個一個は変数のどこに格納してるの?
378デフォルトの名無しさん:2010/11/15(月) 22:43:00
処理系依存
379デフォルトの名無しさん:2010/11/15(月) 22:44:10
>>377
そらメモリのどっかだろ。
380デフォルトの名無しさん:2010/11/15(月) 22:44:16
>>377
中身は格納してねーよ。
381デフォルトの名無しさん:2010/11/15(月) 22:46:02
殺伐としたスレにようこそ
382デフォルトの名無しさん:2010/11/15(月) 22:47:56
>>378-379
読解力の無い素人はすっ込んでろぃ。
383デフォルトの名無しさん:2010/11/15(月) 22:48:17
こんなんも分からないで教えてもらって早すぎワロタとか言ってんのな。
384デフォルトの名無しさん:2010/11/15(月) 22:49:16
>>382
そんなのわかってて言ってるに決まってるだろ。
385デフォルトの名無しさん:2010/11/15(月) 22:50:44
>>382
読w解w力w
386デフォルトの名無しさん:2010/11/15(月) 22:52:24
char *p = "hoge";
char a[] = "hoge";

ができるなら、同様に、

int *p = {0,1,2,3};
int a[] = {0,1,2,3};

もできるようにしてほしいよね。
387デフォルトの名無しさん:2010/11/15(月) 22:54:42
>>384-385
ほーw
じゃあ何でそんな回答が出てきたのかな?w
ま、引っ掛け問題が意地悪だったかもねw
388デフォルトの名無しさん:2010/11/15(月) 22:55:47
それは言い過ぎ
389デフォルトの名無しさん:2010/11/15(月) 22:57:07
>>386
型情報が無いんだよね。
単独でリテラルたりえるには。
(int){0,1,2,3}
こんな表記でどうか。
390デフォルトの名無しさん:2010/11/15(月) 22:57:13
>>387
いや、なんか思い違いしてるのはお前だろ。
391デフォルトの名無しさん:2010/11/15(月) 22:57:21
>>386
4番目は元々出来るだろ
392デフォルトの名無しさん:2010/11/15(月) 22:58:16
ひっかけもなにも>>377の日本語、なんとかならんの?
393デフォルトの名無しさん:2010/11/15(月) 22:58:42
>>391
両方が、って意味。
394デフォルトの名無しさん:2010/11/15(月) 22:58:47
>>386
複合リテラルで出来る
C99未対応なんか知るか
395デフォルトの名無しさん:2010/11/15(月) 23:00:54
>>388
これだからゆとりは
396デフォルトの名無しさん:2010/11/15(月) 23:01:49
それは言い過ぎ
397デフォルトの名無しさん:2010/11/15(月) 23:02:33
int *p = {0,1,2,3};
要素数が無いんだから危ないだろ。
文字列は終端が決まってるからできるんだよ。
読み専用領域にデータ列を配置したいならリソースとか使えば良いんじゃね。
398デフォルトの名無しさん:2010/11/15(月) 23:06:49
int *p = (int *)"\x00\x00\x00\x00\x01\x00\x00\x00\x020\x00\x00\x00\x03\x00\x00\x00";
int a[] = {0,1,2,3};

これでOK.
399デフォルトの名無しさん:2010/11/15(月) 23:07:22
>>394
ほんとだ。できたな。
C99は使う機会ないけど。

http://ideone.com/DnU3E
400デフォルトの名無しさん:2010/11/15(月) 23:23:00
Cygwin使っている人いますか? その20
http://hibari.2ch.net/test/read.cgi/unix/1268282846/272-273

272 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:42:30 ID: Be:
マウントオプションとは別に、CRLFをLFに変換するツールはないでしょうか?

美乳セーラー女子高生とSEX顔射フィニッシュ

というコマンドやnkfでも一応可能なのですが
専用のツールはなかったかと思いまして

273 名無しさん@お腹いっぱい。 [sage] 2010/11/15(月) 11:43:21 ID: Be:
>>272
コピペミスった、、、、、
見なかったことにしてください

コマンドは、

cat crlf.txt | tr -d '\r' > lf.txt

です。
401デフォルトの名無しさん:2010/11/15(月) 23:32:52
>>400
コピペスレから転載乙。
402デフォルトの名無しさん:2010/11/15(月) 23:36:29
なんでこのスレに貼ったんだろうかな
氏ねばいいのに
403デフォルトの名無しさん:2010/11/15(月) 23:38:26
読解力の無い素人と呼ばれて逆ぎれしたんだろ。
404デフォルトの名無しさん:2010/11/16(火) 03:09:09
実行ファイルのサイズをなるべく小さくしたいんだけど
そういう用途に向いてるC言語のコンパイラって何があるの?
405デフォルトの名無しさん:2010/11/16(火) 03:18:10
コンパイルって言うか最適化次第
まぁ、いくら最近のコンパイラが頭いいからって
予め小さくなるようなコードで書いとかないと最適化きかないけどな
406デフォルトの名無しさん:2010/11/16(火) 03:26:12
>>404
Turbo-C 2.01 が最適だよ。
407デフォルトの名無しさん:2010/11/16(火) 07:17:02
mainstartupをお気軽にいじれる環境と方向付ければgccが一番小さくしやすいかな
408デフォルトの名無しさん:2010/11/16(火) 11:38:52
ふっふっ
409デフォルトの名無しさん:2010/11/16(火) 12:24:40
ほっはっ
410デフォルトの名無しさん:2010/11/16(火) 13:58:58
問題文
素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数n

解答
/* 素数か判定して素数ならその数字を返し、そうでなければ0を返す */
int prime(int n)
{
int i;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
return i;
}
/* 素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数nを求めよ */
int main(void)
{
int i, sum;
sum = 0;
for (i = 2; sum <= 9129; i++)
sum += prime(i);
printf("素数の総和の計算 2+3+5+…+n+… のとき、総和が初めて9129 以上になる素数\nn: %d\n", i - 1);
return 0;
}

という解答らしいのですがここのint prime(int n)とsum += prime(i);の意味がよくわかりません
説明をお願いします
411デフォルトの名無しさん:2010/11/16(火) 14:43:17
>>410
sum += prime(i);はsum = sum + prime(i);と同じ。
int prime(int n)の何がわからないのだ?
%は剰余(割った余り)。
412デフォルトの名無しさん:2010/11/16(火) 15:15:45
意味がよくわかりませんね
413デフォルトの名無しさん:2010/11/16(火) 15:28:28
やめてしまえ
414デフォルトの名無しさん:2010/11/16(火) 17:44:22
int prime(int n)
まずこいつが何をしてるか考えるんだ。
関数単位で物事を見れるようにならないとダメだぞ
415デフォルトの名無しさん:2010/11/16(火) 17:46:59
って上にコメントあるじゃねーかwww
悪かった。
プログラム辞めた方がいい
416デフォルトの名無しさん:2010/11/16(火) 17:55:13
>>412
411の回答で意味が分からないとすると
素数の定義が分からないとしか思えないw
int prime(int n)
{
int i;
for (i = 2; i < n; i++)
if (n % i == 0)
return 0;
printf("素数:%d\n",i); ←追加
return i;
}
こうしても分からんか?
417デフォルトの名無しさん:2010/11/16(火) 18:31:13
if( n == 2 ) return n;
for( i=3; i*i<=n; i+=2 ) {
if( n%i == 0 ) return 0;
}
return n;
418デフォルトの名無しさん:2010/11/16(火) 18:33:39
釣りだろいくらなんでも。
419デフォルトの名無しさん:2010/11/16(火) 19:27:58
プログラムは、やれば出来る って言うけど
「それは素質のある人が言う言葉」って誰かが言ってたな
412には素質がないんだ諦めろ
420デフォルトの名無しさん:2010/11/16(火) 20:34:28
関数を知らないだけなのだと思うのだが
421デフォルトの名無しさん:2010/11/16(火) 20:52:54
素数の一般項出せよおう早くしろよ
422デフォルトの名無しさん:2010/11/16(火) 21:14:24
下記の実行結果が、
#include <stdio.h>
int main(void) {
unsigned int i,j;
for (i=0 ; i<=32 ;i++) {
j = (0xFFFFFFFF<<i);
printf("%d %08X\n",i,j);
}
return 0;
}

こうなります
28 F0000000
29 E0000000
30 C0000000
31 80000000
32 FFFFFFFF
これは何故でしょう? コンパイラはMinGWです。
参考になるサイト等教えて頂けないでしょうか?
423デフォルトの名無しさん:2010/11/16(火) 21:21:37
>>422
32ビット整数を32ビット以上シフトした結果は未定義だからです

参考になるサイト
http://www.vmunix.com/~gabor/c/draft.html#101

> If the value of the right operand is negative
> or is greater than or equal to the number of value and sign
> bits in the object representation of the promoted left
> operand, the behavior is undefined.
424デフォルトの名無しさん:2010/11/16(火) 21:22:59
>>422
80386以上のCPUではローテート・シフト回数を指定できるが、
32回を超えてシフトした場合の結果は未定義
425デフォルトの名無しさん:2010/11/16(火) 21:25:23
426デフォルトの名無しさん:2010/11/16(火) 21:28:24
>>422
IA-32 インテルR アーキテクチャ・
ソフトウェア・デベロッパーズ・
マニュアル
中巻:
命令セット・リファレンス

IA-32 アーキテクチャにおける互換性
8086 は、シフト・カウントをマスクしない。しかし、(Intel 286 プロセッサで始まる) その他の
すべてのIA-32 プロセッサは、シフト・カウントを5 ビットにマスクするので、最大カウント
は31 になる。このマスク設定は、( 仮想8086 モードを含めた) すべての動作モードで行われ、
命令の最大実行時間を減少させる。

つまり32を5ビットでマスクすると0になってしまう
427デフォルトの名無しさん:2010/11/16(火) 21:30:29
428デフォルトの名無しさん:2010/11/16(火) 21:31:07
>>425
そんな物は役に立たない
貼るなら規格票を貼れや

§6.5.7 Bitwise shift operators

3 The integer promotions are performed on each of the operands. The type of the result is
that of the promoted left operand. If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the behavior is undefined.
429デフォルトの名無しさん:2010/11/16(火) 21:32:00
430デフォルトの名無しさん:2010/11/16(火) 21:32:29
>>428
しつこいカス
431デフォルトの名無しさん:2010/11/16(火) 21:34:20
>>423-427
ありがとうございました。#include <stdio.h>
これを実行したところ
int main(void) {
unsigned int i,j;
unsigned long long jj;
for (i=0 ; i<=32 ;i++) {
j = (0xFFFFFFFF<<i);
jj = 0xFFFFFFFF;
jj <<= i;
printf("%d %08X %08X\n",i,j,(unsigned int)jj);
}
return 0;
}

こうなった
28 F0000000 F0000000
29 E0000000 E0000000
30 C0000000 C0000000
31 80000000 80000000
32 FFFFFFFF 00000000
ので、
> 32ビット整数を32ビット以上シフトした結果は未定義だからです
の意味が分かった気がします。
432デフォルトの名無しさん:2010/11/16(火) 21:34:23
425 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

427 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

429 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
433デフォルトの名無しさん:2010/11/16(火) 21:42:15
Intel系のマップがどうなってるか分かってるけど
脳内でメモリマップするとZiLOG系でマップしてしまうな
変換するから別に困らんけどね
434デフォルトの名無しさん:2010/11/16(火) 21:43:35
428=432
435デフォルトの名無しさん:2010/11/16(火) 21:47:06
>>434
正しいかどうかも分からないサイトのURL貼るなや
436デフォルトの名無しさん:2010/11/16(火) 22:00:28
http://codepad.org/ti3PvNR9
エラーがでます 文法がおかしいのでしょうか
437デフォルトの名無しさん:2010/11/16(火) 22:04:42
全角スペースが入ってる点がおかしいです
438デフォルトの名無しさん:2010/11/16(火) 22:10:35
>>435
よっぽど悔しかったのか
439デフォルトの名無しさん:2010/11/16(火) 22:13:01
>>438
悔しいとかの問題ではなくて信用にもとる真似をするなという事
440デフォルトの名無しさん:2010/11/16(火) 22:18:47
>>439
必死すぎ
441デフォルトの名無しさん:2010/11/16(火) 22:39:23
規格至上主義の人間にはよくあること
442デフォルトの名無しさん:2010/11/16(火) 22:49:40
なんで規格貼る人って英語なの。
JISのを貼ればいいじゃん。
443デフォルトの名無しさん:2010/11/16(火) 22:51:52
>>442
できますか?
444デフォルトの名無しさん:2010/11/16(火) 22:54:43
英語読める俺すげぇーをやりたいだけ。
言わせんな恥ずかしい。
445デフォルトの名無しさん:2010/11/16(火) 22:56:51
>>442
JISに合致してると明言してる処理系使ってないくせに
446デフォルトの名無しさん:2010/11/16(火) 22:58:30
>>442
クレクレ乙
447デフォルトの名無しさん:2010/11/16(火) 23:14:14
>>433
最初に覚えたのが標準になっちゃうんだよな。
448デフォルトの名無しさん:2010/11/16(火) 23:31:15
マップって何?
449デフォルトの名無しさん:2010/11/16(火) 23:38:25
辞書型のこと
450デフォルトの名無しさん:2010/11/16(火) 23:39:02
>>449
あ?
451デフォルトの名無しさん:2010/11/16(火) 23:43:07
>>442
http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3010
から pdf が見えるんですが、この pdf は保存もテキストのクリップボードへのコピーもできないのです。
(規格票を売るのが商売だからあたりまえといえばそうですが、ガードがかかっています。)

ISO/IEC 9899:1999 や ISO/IEC 14882:2003 の英文 pdf はググるとみつかるのですが、日本語のは転がっていないようです。
452デフォルトの名無しさん:2010/11/16(火) 23:53:25
ヤクザな商売だな。
送料だけで良いだろ
453デフォルトの名無しさん:2010/11/16(火) 23:56:21
給料をもらったことがない奴は楽でいいな。
454デフォルトの名無しさん:2010/11/16(火) 23:57:02
こんなふうにchar *a="abcdefghijkz";
ポインタ変数に文字列を代入してputs()やprintf()で個々の文字を出力する
ことってできないんですか 配列で宣言せずに
455デフォルトの名無しさん:2010/11/16(火) 23:58:25
無理です
456デフォルトの名無しさん:2010/11/16(火) 23:59:18
無理ぽ
457デフォルトの名無しさん:2010/11/17(水) 00:00:40
俺にはできる
Intelだからな
458デフォルトの名無しさん:2010/11/17(水) 00:04:14
puts は無理だが printf ならできる
459デフォルトの名無しさん:2010/11/17(水) 00:05:52
>>458は%cを使うと予想
460デフォルトの名無しさん:2010/11/17(水) 00:07:45
fwrite()でもできるんじゃないか?
461デフォルトの名無しさん:2010/11/17(水) 00:09:15
writeでもできる
outでもできる
462デフォルトの名無しさん:2010/11/17(水) 00:10:12
標準関数を使う方向でお願いします。
463デフォルトの名無しさん:2010/11/17(水) 00:12:17
全部標準関数なんだが
464デフォルトの名無しさん:2010/11/17(水) 00:15:47
VCだとアンダーバー付になってしまいます。
465デフォルトの名無しさん:2010/11/17(水) 00:19:38
(゚Д゚ )ハァ?
466デフォルトの名無しさん:2010/11/17(水) 00:20:26
aの中身は配列でも参照できるでしょ
467デフォルトの名無しさん:2010/11/17(水) 00:20:41
ほらできたぞ
http://codepad.org/3yfY7XhB
468デフォルトの名無しさん:2010/11/17(水) 00:20:55
>>460 は標準。>>461 は非標準。
どっちにしろ質問の意図から外れる。
printf でできるんだから解答は既に出てる。
469デフォルトの名無しさん:2010/11/17(水) 00:20:59
470デフォルトの名無しさん:2010/11/17(水) 00:22:04
>>465
まじでwrite()とかout()とか標準関数と思ってたのか。
471デフォルトの名無しさん:2010/11/17(水) 00:22:07
大真面目に返答しちゃってる>>468ってどうしちゃったの?
472デフォルトの名無しさん:2010/11/17(水) 00:24:45
C言語ってこんな感じでいいんじゃない?
入門書 適当な本
実用書 Cリファレンスマニュアル コーディングルール本 セキュアプログラミング本
教養書 K&R
娯楽書 エキスパートC
473デフォルトの名無しさん:2010/11/17(水) 00:25:11
↑いきなり何www
474デフォルトの名無しさん:2010/11/17(水) 00:28:26
どういうルートでおぼえたらwrite()を標準関数って勘違いしたままで
いられるんだろ。
入門書とか読まないで、ネットとかで偏ったおぼえ方でもしたのかね。
475デフォルトの名無しさん:2010/11/17(水) 00:28:27
>>467
設問を満4回は熟読して読み直せ。
476デフォルトの名無しさん:2010/11/17(水) 00:29:11
釣れたw
477デフォルトの名無しさん:2010/11/17(水) 00:30:22
熟読して読み直せ。
478デフォルトの名無しさん:2010/11/17(水) 00:31:33
満4回は熟読して読み直せ。
479デフォルトの名無しさん:2010/11/17(水) 00:32:44
>>476
満4回は熟読して読み直せ。
480デフォルトの名無しさん:2010/11/17(水) 00:34:24
>>479
満4回は熟読して読み直せ。
481デフォルトの名無しさん:2010/11/17(水) 00:35:14
>>480
満4回は熟読して読み直せ。
482デフォルトの名無しさん:2010/11/17(水) 00:35:35
>>481
満4回は熟読して読み直せ。
483デフォルトの名無しさん:2010/11/17(水) 00:35:52
>>472
「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                           ↓

「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                           ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                           ↓

「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ

                           ↓

                         神の誕生
484デフォルトの名無しさん:2010/11/17(水) 00:36:06
>>483
満4回は熟読して読み直せ。
485デフォルトの名無しさん:2010/11/17(水) 00:36:56
>>483
満4回は熟読して読み直せ。
486デフォルトの名無しさん:2010/11/17(水) 00:37:26
>>483
満4回は熟読して読み直せ。
487デフォルトの名無しさん:2010/11/17(水) 00:37:46
ここまでだ!
488デフォルトの名無しさん:2010/11/17(水) 00:38:49
>>483
最後の本はいらねーだろ。
489デフォルトの名無しさん:2010/11/17(水) 00:39:31
これだからゆとりは
490デフォルトの名無しさん:2010/11/17(水) 00:39:55
>>472
これ見たときから、>>483がくるんじゃねーかって思ったんだよ。
491デフォルトの名無しさん:2010/11/17(水) 00:40:44
>>490
で?
492デフォルトの名無しさん:2010/11/17(水) 00:42:27
神!神!もっと評価されるべき!!!!111
493デフォルトの名無しさん:2010/11/17(水) 00:44:48
K&Rはクソ本だからな。
なんで普通に説明したら簡単な事をああも煩わしく書けるかね。
494デフォルトの名無しさん:2010/11/17(水) 00:47:47
>>493
満4回は熟読して読み直せ。
495デフォルトの名無しさん:2010/11/17(水) 00:51:06
>>491
コピペしすぎだろって遠まわしに言ってるんだよ。言わせんなよ。
496デフォルトの名無しさん:2010/11/17(水) 00:51:53
>>495
で?
497デフォルトの名無しさん:2010/11/17(水) 00:53:19
C言語スレは言語自体も殺伐としてるだけあって住民まで殺伐としてるなと
498デフォルトの名無しさん:2010/11/17(水) 00:53:58
>>497
ぺろぺろ
499デフォルトの名無しさん:2010/11/17(水) 00:55:49
>>497
人口が多いから、変なのもいっぱいいる。
500デフォルトの名無しさん:2010/11/17(水) 00:56:57
スレタイに入門編とあるのに、マニアックな回答者が揃ってるから仕方ない
501デフォルトの名無しさん:2010/11/17(水) 01:01:09
結局>>472>>483ってどちらがいいんでしょうか?
502デフォルトの名無しさん:2010/11/17(水) 01:03:05
じゃあC言語で複数ファイルからなる大規模プログラムの作り方を学ぶのに適した本を挙げてみろよ
503デフォルトの名無しさん:2010/11/17(水) 01:06:22
>>501
そんなもんどっちでもいいよ。
504デフォルトの名無しさん:2010/11/17(水) 01:08:05
>>501
483にしとけ。
505デフォルトの名無しさん:2010/11/17(水) 01:10:05
ちゃんと>>2に目を通せ
506デフォルトの名無しさん:2010/11/17(水) 01:11:27
>>502
なんだ、やっぱ下の本の宣伝でコピペしまくってるのか。
エキスパートCとか名著が腐れるから、セットでコピペすんな。
単独でやれ。
507デフォルトの名無しさん:2010/11/17(水) 01:16:22
>>506
宣伝乙
508デフォルトの名無しさん:2010/11/17(水) 01:17:27
そうだなぁC言語のエキスパート向け実務といったらこのような高度情報を扱っているサイトなか
http://studiokingyo.fc2web.com/
509デフォルトの名無しさん:2010/11/17(水) 01:17:58
出た
510デフォルトの名無しさん:2010/11/17(水) 01:20:06
>>508
すげーなおい未発見のC言語高度関数実装まで揃っている
511デフォルトの名無しさん:2010/11/17(水) 01:23:37
>>508
なつかしい感じのサイトだな。
ブログの隆盛でなくなったもんな。
こういうぱっと見で作者のセンスが伝わってくるデザイン。
512デフォルトの名無しさん:2010/11/17(水) 01:23:52
  ∧_∧
  (´・ω・`)     n
 ̄     \    ( E) 
フ アフィ /ヽ ヽ_//
513デフォルトの名無しさん:2010/11/17(水) 01:31:24
>>511
確かにブログの乱立で役に立たない情報がブログの多すぎだが>>508は昔ながらの高度情報を取り揃えているな
言いたいことが分かるぞ同意ですね、分かります。
514デフォルトの名無しさん:2010/11/17(水) 01:38:44
C言語のエキスパートなら、高度情報なんかより、Codeの方が重要だろ。
515デフォルトの名無しさん:2010/11/17(水) 01:42:23
>>514
いや、高度情報がなきゃCodeを書くにも材料が足りだろ。
516デフォルトの名無しさん:2010/11/17(水) 01:45:41
情報よりは、基礎(考え方)をしっかりやったほうが...
言葉知ってても、使えなきゃ意味ないし...
517デフォルトの名無しさん:2010/11/17(水) 01:47:25
コピペプログラマの俺としてはCodeの方がありがたい
518デフォルトの名無しさん:2010/11/17(水) 01:49:47
エキスパCとか娯楽本じゃねぇか。
プログラミングには役立たない
519デフォルトの名無しさん:2010/11/17(水) 01:52:28
>>516
>>508には基礎の高度情報もあるよ
520410:2010/11/17(水) 01:55:54
色々お騒がせしてすみません
ご指摘の通りまだ本当に学び始めたばかりで関数も習っていません

sum += prime(i)に関しては>>411の方のレスで理解出来ました。
int prime(int n)というのはint prime , nという意味ではないのですよね

すみませんが教えてくださる方はいらっしゃいますか?
>>412は自分でありません
521デフォルトの名無しさん:2010/11/17(水) 01:56:49
2chじゃなくてもっとまともなところで宣伝したほうがよろしいのでは。
522デフォルトの名無しさん:2010/11/17(水) 01:59:18
2chだと宣伝するのに必要なのは人件費だけ。
523デフォルトの名無しさん:2010/11/17(水) 02:02:29
>>520
君はまったく自分で学習をしようとしていない
それが許されるのは小学生の中学年あたりまでだ
人に聞く前に自分で調べる努力をしない奴にタダで教える奴はキチガイだよ?
524デフォルトの名無しさん:2010/11/17(水) 02:10:43
>>520
関数を習っていないということなら、
まず関数を習うというか自習するのが先決だろう
文法すら分からないんじゃ、本質的な部分の理解にも支障が出る
525410:2010/11/17(水) 02:22:12
なんだと?俺に説教する気か?いい度胸してるじゃねーか
526デフォルトの名無しさん:2010/11/17(水) 02:31:42
>>523-524
あの、そんな回答は期待していないのですが……

誰か、この人たちに代わって教えてください
527デフォルトの名無しさん:2010/11/17(水) 02:34:39
有料だ。
528デフォルトの名無しさん:2010/11/17(水) 02:37:58
529デフォルトの名無しさん:2010/11/17(水) 02:39:56
2chで商売しようと企んでいるふてえ野郎のスレか
530デフォルトの名無しさん:2010/11/17(水) 10:45:35
そんなにふてえの入らないよぉ////
531デフォルトの名無しさん:2010/11/17(水) 14:11:32
アホ
死ね
532デフォルトの名無しさん:2010/11/17(水) 15:35:51
>>410
C言語 関数 でググればいいんじゃねーの?
>それが許されるのは小学生の中学年あたりまでだ
523の言うとおりでそれ以上になると自分で解決するか友人に聞くしかないっしょ
>ご指摘の通りまだ本当に学び始めたばかりで関数も習っていません
学生なのであれば先生に聞けば良い
人に聞くことを覚えるのも大切だよ
別にここで聞いてもいいじゃんって話もあるけど、教えてもらう姿勢ってもの学ばないといけないからね
533デフォルトの名無しさん:2010/11/17(水) 17:16:50
パステルカラーをC言語で作りたいんですが教えていただけないでしょうか?
534デフォルトの名無しさん:2010/11/17(水) 17:22:09
#include <stdio.h>
int main() {
printf("パステルカラー\n");
}
535デフォルトの名無しさん:2010/11/17(水) 17:24:24
>>534
0点
536デフォルトの名無しさん:2010/11/17(水) 18:33:50
いくらなんでも設問が難解すぎるぜ
ヒントくれ
537デフォルトの名無しさん:2010/11/17(水) 19:14:09
パステルカラーのRGB値を変数に格納すれば終わりじゃないの
538デフォルトの名無しさん:2010/11/17(水) 20:05:49
>>533
とりあえずOSとコンパイラの名前を教えてくれ。
539デフォルトの名無しさん:2010/11/17(水) 20:29:14
int main(){
printf("");
printf("");
return 0;
}



void test1();
void test2();
int main(){
test1();
test2();
}
void test1(){
printf("");
}
void test2(){
printf("");
}

のようにすると、プログラムは遅くなりますか?
よろしくお願いします。
540デフォルトの名無しさん:2010/11/17(水) 20:33:02
ずっとここで質問したりしてきたけど分かったためしがない。
入門編何てタイトルにいれんなよクズ。
541デフォルトの名無しさん:2010/11/17(水) 20:35:52
>>540
門をくぐる前に準備が必要なんだよ
542デフォルトの名無しさん:2010/11/17(水) 20:39:01
>>541
殺すぞ、分かりやすく教えてくれよ、手とり足とり教えてくれ。
543デフォルトの名無しさん:2010/11/17(水) 20:40:07
説明不足ですいません、OSはウィンドウズでコンパイラはBCCデベロッパーです。
画像処理でパステル調にしたいんですができないんです
544デフォルトの名無しさん:2010/11/17(水) 20:42:10
>>542
ではまず性別と年齢を聞こうかw
545デフォルトの名無しさん:2010/11/17(水) 20:43:11
>>539
そらぁ関数コールのコストはかかるから遅くなる
微々たる差だけどループの中で何万回もコールするなら気にしなきゃならない場合も有るだろうな
546デフォルトの名無しさん:2010/11/17(水) 20:44:49
関数コールを気にするような処理なら、その部分だけインラインアセンブラにするw
547デフォルトの名無しさん:2010/11/17(水) 20:45:14
>>543
こっちで質問した方がいいかもな
http://hibari.2ch.net/test/read.cgi/tech/1247100724/
548デフォルトの名無しさん:2010/11/17(水) 20:45:31
>>544
殺すぞてめぇ、気安くしゃべりかけんな。
お前らの話は専門用語並べてるだけなんだよ
549デフォルトの名無しさん:2010/11/17(水) 20:50:44
キチガイは放置しよう
550542=548:2010/11/17(水) 21:06:23
すまん暴言はいて・・・
でもまじで君らのレスはわかりにくいんだよ。
分からない人の気持ちは分かる人は分からないんだよな。
551デフォルトの名無しさん:2010/11/17(水) 21:11:25
本当にすいません、教えてくれませんか?
552デフォルトの名無しさん:2010/11/17(水) 21:13:31
わろた
553Perl忍者 ◆M5ZWRnXOj6 :2010/11/17(水) 21:15:02
>>548
殺人予告で通報しますねwwwwwwwwwwwwwwwwww

ねえ「君逮捕だよwww

クソがクソ言語板でわめいてんじゃねえよがいきちw

Cやってるやつはカスばっかりw

ほんとカスw
クソなPICとかやってろよwハンダゴテかってw

五味みたいな成果物だされてwおわってるじゃんw

Cやってるやつはバカだよw
実用性にかけるごみみたいなも作品ばっかりw

とくに動画プレイヤーつくってるばかなw
死ねw
554デフォルトの名無しさん:2010/11/17(水) 21:15:48
半田このやろう!
555Perl忍者 ◆M5ZWRnXOj6 :2010/11/17(水) 21:21:35
っではてなのバカインターン生ってまだいますか?w

図星で必死にすげえくいついてきたページャーばかだとおもうけどw
まだこのスレにいんの?w

カスバカはてなのクソバカインターンwwwwwwwwwwwwwwwwwwwwwwwww
556デフォルトの名無しさん:2010/11/17(水) 21:39:24
またこいつか。
さすがCスレ、キチガイが続々と湧いてくるな
557Perl忍者 ◆M5ZWRnXOj6 :2010/11/17(水) 21:44:16
キチガイ派お前だろ
はてなのバカイーンタンセイ君w


糞なページャー処理してるってほんとですか?w
558デフォルトの名無しさん:2010/11/17(水) 21:47:56
>>545 >>546
ソースが見やすくなるので関数にしたいと思ってました。
ひとまず関数で作って、そのあと関数コールしない形と比較してみようと想います。
ありがとうございました。
559デフォルトの名無しさん:2010/11/17(水) 22:42:55
さげ
560 ◆QZaw55cn4c :2010/11/17(水) 23:18:16
>>533
>>543
こういうのがお望みですか?
http://codepad.org/6rtXABMl

ビットマップファイルをパステル調に変換します。
第1引数 入力 .bmp ファイル名
第2引数 出力 .bmp ファイル名

パステル調化のアルゴリズムはもうちょっと工夫したほうがいいかもしれません。
(現状、単に色あせた感じになっているだけ、という気が‥‥‥)
561デフォルトの名無しさん:2010/11/17(水) 23:26:13
◆QZaw55cn4cは自分の巣に引きこもってて下さい
562デフォルトの名無しさん:2010/11/17(水) 23:32:12
隔離した意味ねーじゃんか
ここ来るならせめてコテハン外せよ
563デフォルトの名無しさん:2010/11/17(水) 23:35:47
>>528 で呼ばれたようなので、つい。
564デフォルトの名無しさん:2010/11/17(水) 23:38:24
誘導して本人が行かなかったんだし呼んでもねえよ
565デフォルトの名無しさん:2010/11/17(水) 23:44:04
>>563なんかきもちわるい
566デフォルトの名無しさん:2010/11/17(水) 23:56:31
567デフォルトの名無しさん:2010/11/18(木) 01:12:59
死ねって言うのと殺すぞって言うのとあんまり違いが無い気がするが…
コテハン忍者がキモイのは分かったが
568デフォルトの名無しさん:2010/11/18(木) 01:17:43
大違いだろ。
569デフォルトの名無しさん:2010/11/18(木) 01:23:38
んじゃニヤニヤしながら忍者死んだほうが良いって書いてくるわw
570デフォルトの名無しさん:2010/11/18(木) 01:54:42
#include<stdio.h>

main()
{
char *p;
char a;
char *b;

char str[56];
gets(str);
p=(&str[2]);
puts(p);
a=str[2];
b=&a;

puts(b);

}

プログラムを実行したとき二番目のputs()に"(全角文字)("が
余計に表示されてしまいます
なんでですか?
571デフォルトの名無しさん:2010/11/18(木) 02:00:40
>>570
文字列の終端 '\0' がないから
572デフォルトの名無しさん:2010/11/18(木) 02:04:42
じゃあ\0が抜けてるときに表示されるものは一体なんですか
573デフォルトの名無しさん:2010/11/18(木) 02:11:26
面白いレスが思い浮かばない・・・老いたな
574デフォルトの名無しさん:2010/11/18(木) 02:12:12
strを確保したときにメモリに記憶されていた不定の値とか
putsは'\0'にぶつかるまで表示し続けるからね。
575デフォルトの名無しさん:2010/11/18(木) 02:14:58
>>572
\0 が現れるまでのメモリの内容すべて
576デフォルトの名無しさん:2010/11/18(木) 02:19:16
#include<stdio.h>

main()
{
char *p;
char a[2];
char *b;

char str[56];
gets(str);
p=(&str[2]);
puts(p);
a={str[2],'\0'};
b=&a;

puts(b);





}

エラーでした 直してくれませぬか
577デフォルトの名無しさん:2010/11/18(木) 02:19:51
a[0] = str[2];
a[1] = '\0';
578デフォルトの名無しさん:2010/11/18(木) 03:38:31
さげ
579デフォルトの名無しさん:2010/11/18(木) 05:11:16
下痢便は超苦い
580デフォルトの名無しさん:2010/11/18(木) 10:01:18
ではやはりあげておくべきですね。
581デフォルトの名無しさん:2010/11/18(木) 14:52:04
C言語初心者です。ベクトルなどの数式がわかりません。お願いします。

C言語をやってるのですがさっぱりわかりません。わかる方いればお願いします。

最初にnの値を入力して、各入力を行った後、それぞれの目的を実行する以下のプログラムを必ず配列を用いて作成しなさい。ただし、nの大きさは100を超えないものとする

n次元ベクトルの要素を入力して、ベクトルの長さを求めるプログラム
(2,3)のベクトルの長さは?

最初に行列の次元nの値を入力し、配列を使って次の計算をするプログラムを作りなさい。ただし、nは100以内で、n次の正方行列とする。

行列AとBを入力すると、その足し算A+Bを計算するプログラム

できるかたいればお願いします
582デフォルトの名無しさん:2010/11/18(木) 15:06:04
ベクトルわかんないのはC言語じゃなくて高校数学やるべき
583デフォルトの名無しさん:2010/11/18(木) 15:31:56
#include <stdio.h>
#include <math.h>

int main(void)
{
double a[100], s;
int n, i;
printf("n: ");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
printf("ベクトルの第%d成分を入力せよ: ", i + 1);
scanf("%lf", &a[i]);
}
s = 0.0;
for(i = 0; i < n; i++)
{
s += a[i] * a[i];
}

printf("(");
for(i = 0; i < n; i++)
{
printf("%f", a[i]);
}
printf("の長さは %f です。\n", sqrt(s));

return 0;
}

584デフォルトの名無しさん:2010/11/18(木) 15:46:15
↑優しい
585デフォルトの名無しさん:2010/11/18(木) 15:51:54
そんなもん出されたって理解できないのわかってるのに、優しいなんて言っちゃうなんて
586デフォルトの名無しさん:2010/11/18(木) 15:57:29
ここは馬鹿が多いからな。
587デフォルトの名無しさん:2010/11/18(木) 16:00:14
多いですね
588デフォルトの名無しさん:2010/11/18(木) 16:04:20
ほんと多いよな
#include <stdio.h>
#include <stdlib.h>
struct MAT { float a[100*100]; int n; };

void init_MAT(struct MAT* m, int n) {
float* p = m->a; int i=100; while(i-->0){*p++=0;}
m->n = n;
}

void input_MAT(struct MAT* m) {
float* p = m->a; int i = m->n * m->n; while(i-->0) {scanf("%f",p++);}
}

void print_MAT(struct MAT* m) {
float* p = m->a; int i = m->n * m->n; while(i-->0) {printf("%8.8f\t", *p++);} putchar('\n');
}

void add_MAT(struct MAT* dst, struct MAT* src1, struct MAT* src2) {
float* a = src1->a; float* b = src2->a; float* c = dst->a; int i = dst->n * dst->n; while(i-->0) {*c++ = *a++ + *b++;}
}

void main() {
int n; scanf("%d",&n);

struct MAT m0, m1, m2; init_MAT(&m0,n); init_MAT(&m1,n); init_MAT(&m2,n);

input_MAT(&m0); print_MAT(&m0);
input_MAT(&m1); print_MAT(&m1);

add_MAT(&m2, &m0, &m1); print_MAT(&m2);
}
590デフォルトの名無しさん:2010/11/18(木) 16:46:48
増えた!
591デフォルトの名無しさん:2010/11/18(木) 17:58:19
増えましたね
592Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 18:03:28
こんな基礎教養Cを質問してる時点でカスなんだろw

こんなのCできるうちにはいらねってw
593デフォルトの名無しさん:2010/11/18(木) 20:51:26
糞コテ「Perl忍者」が釣れたぞ!
594Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 21:17:59
CなんてしんじまえよwCとかしんじまえよw(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
Cなんてネットやってるやつが遊ぶ必要ないからw(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)ww(核爆笑)w

w(核爆笑)ww(核爆笑)ww(核爆笑)w
w(核爆笑)w
w(核爆笑)wvw(核爆笑)wvw(核爆笑)wっっvvw(核爆笑)w
w(核爆笑)ww(核爆笑)ww(核爆笑)wvw(核爆笑)wvw(核爆笑)w
vw(核爆笑)ww(核爆笑)w
595デフォルトの名無しさん:2010/11/18(木) 21:25:11
これだからruby信者は・・・・
596Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 21:28:38
ここにのってるCソースは全部クソ

基礎教養のウンコード乙
597Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 21:32:01
C言語なら俺に聞けにくるやつはカスしかいない(笑)
598デフォルトの名無しさん:2010/11/18(木) 21:55:04
荒らしだ、荒らしが来たぞー(^o^)ノ
599デフォルトの名無しさん:2010/11/18(木) 21:58:24
自分でカスって認めてるのか
達観してるなPerl忍者君
600デフォルトの名無しさん:2010/11/18(木) 22:00:13
糞コテをNGNameにしてない男の人って
601デフォルトの名無しさん:2010/11/18(木) 22:01:00
いちいちキチガイを相手にすんな
602デフォルトの名無しさん:2010/11/18(木) 22:54:44
perlってカスなの?
603デフォルトの名無しさん:2010/11/18(木) 22:55:12
はい
604Perl忍者 ◆vx6KgJyjvE :2010/11/18(木) 23:32:10
 
605デフォルトの名無しさん:2010/11/18(木) 23:38:20
perlはカスです

http://dada.perl.it/shootout/
606Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 23:44:37
>>599

暁に喧嘩うる下忍乙

10名の忍で構成されている謎の小組織
かつて,マツモトヒロユキも所属していた。その後メンバーは倒されていき構成人数は激減した。各国の抜け忍たちで構成され
構成員のほとんどが S 級 犯 罪 者 である
607Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 23:45:52
マツモトヒロユキはスパイ活動してたみたいだからね

前に一緒にツーマンセル組んでいて
行動が不審だったから 暗殺命令がでてたんだよ

そして潰そうとしたら逃げられたよ

まだどっかに潜伏してるみたいだが
608Perl忍者 ◆M5ZWRnXOj6 :2010/11/18(木) 23:49:53
なんかPerl崩しのために

赤い国を作ってるらしいな

よくしらんが

俺のチーム入りたかったら

Skype: perlkageにコンタクトおくれ
609Perl忍者 ◆M5ZWRnXOj6 :2010/11/19(金) 00:26:28
一人きたぞhaskellやってるやつ

てえめらカスはこれねえか?
610954:2010/11/19(金) 00:27:12
てす
611Perl忍者 ◆M5ZWRnXOj6 :2010/11/19(金) 00:31:04
これねえの?
2chっていうグループSkypeつくってまってんだけどw
612Perl忍者 ◆vx6KgJyjvE :2010/11/19(金) 00:33:24
なんか偽者が沸いてるな
613599:2010/11/19(金) 00:33:59
別に忍者君に喧嘩を売ってる訳じゃないぞ
597で
>C言語なら俺に聞けにくるやつはカスしかいない(笑)
この発言をした時に自分でカスだと認めたってことなんだと思う。
それ以上でもそれ以下でもない
614Perl忍者 ◆M5ZWRnXOj6 :2010/11/19(金) 00:34:14
お目絵が偽だろwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwww

早くSkypeこいよ
perlkage

もう一人きてる 2chの最強グループをつくるために

人材をあつめる
615Perl忍者 ◆OFsHyZqrGU :2010/11/19(金) 00:35:13
>>614
調子に乗るな
616Perl忍者 ◆M5ZWRnXOj6 :2010/11/19(金) 00:35:38
>>599おめえこいよ?
びびってこれねえの?
617Perl忍者 ◆hznrtioKU2 :2010/11/19(金) 00:36:34
>>599
ほらどうした
618Perl忍者 ◆M5ZWRnXOj6 :2010/11/19(金) 00:41:54
とりあえず寝る

休戦
619Perl忍者 ◆YNS0qIRC9I :2010/11/19(金) 00:42:34
まぁ偽者なんてこんなもんよ。
620Perl忍者:2010/11/19(金) 00:46:12
まだまだ勝負はこれからだぞ!偽物
621デフォルトの名無しさん:2010/11/19(金) 01:55:00
http://codepad.org/uk3QKL57

printfでの出力がうまくいきません
エラーはでませんが予想と違う動きになります
ちなみに一文字だけ出力させようとしています
622デフォルトの名無しさん:2010/11/19(金) 01:59:40
>>621
もしかして \0 と /0 のうち間違い?
623デフォルトの名無しさん:2010/11/19(金) 01:59:55
バックスラッシュがスラッシュじゃね
624デフォルトの名無しさん:2010/11/19(金) 02:00:36
× '/0'
○ '\0'
625デフォルトの名無しさん:2010/11/19(金) 02:02:55
そういえばゼニマークだったけ
ありがとうございます
626デフォルトの名無しさん:2010/11/19(金) 04:59:49
zeni mark
yen mark
back slash
627デフォルトの名無しさん:2010/11/19(金) 06:43:25
「マーク」は誤用
628デフォルトの名無しさん:2010/11/19(金) 11:44:13
>>627は誤用
629560:2010/11/19(金) 12:28:22
630デフォルトの名無しさん:2010/11/19(金) 14:01:14
e?
631デフォルトの名無しさん:2010/11/19(金) 15:15:00
#include <stdio.h>
#include "bmp.h"

int main ( void )
{
static BMP bitmap1;
int i, j;

readBMP("input.bmp", &bitmap1);

printf("横幅%d,縦幅%d\n", bitmap1.width, bitmap1.height);

for (j = 0; j < bitmap1.height; j++) {
for (i = 0; i < bitmap1.width; i++) {
bitmap1.image[j][i].r = 255;
}
}

writeBMP("output.bmp", &bitmap1);

return 0;
}
何度もすいません、OSはウィンドウズでコンパイラはBCCデベロッパーです。
これでパステルカラーを作りたいんですがお願いします
632デフォルトの名無しさん:2010/11/19(金) 15:17:26
ふーん断る
633デフォルトの名無しさん:2010/11/19(金) 15:17:50
bmp.hはぐぐると一番上に出てくる静岡大のやつでいいのか?
634デフォルトの名無しさん:2010/11/19(金) 15:26:13
635デフォルトの名無しさん:2010/11/19(金) 15:30:09
ステルス調
636デフォルトの名無しさん:2010/11/19(金) 15:30:49
校内からじゃないとアクセスできないようだが大丈夫か?
637デフォルトの名無しさん:2010/11/19(金) 15:35:45
静岡大のでも大丈夫だと思います
638デフォルトの名無しさん:2010/11/19(金) 15:35:51
大丈夫だ、問題ない。
639デフォルトの名無しさん:2010/11/19(金) 15:39:30
定期あげ
640デフォルトの名無しさん:2010/11/19(金) 16:02:56
パステルカラーって何?
RGB→HSL から明度だけ底上げ→RGB なのか 減色なのか
641デフォルトの名無しさん:2010/11/19(金) 16:16:10
もうすでに答えをもらってんじゃねえか
642デフォルトの名無しさん:2010/11/19(金) 16:16:36
パステルカラーをしらないんですか
信じられないんですけど
643デフォルトの名無しさん:2010/11/19(金) 16:18:26
C言語で関数や構造体を作ることをモジュール化って言うんですか?
644デフォルトの名無しさん:2010/11/19(金) 16:29:12
パステル > ルルベル
だよな。
645デフォルトの名無しさん:2010/11/19(金) 16:34:15
>>631
なんで、static BMP bitmap1;
なの? 
そして、int i, j;
には、なんでstaticないの?
教えてください
646デフォルトの名無しさん:2010/11/19(金) 16:38:22
>>631
>>645が分らないようなレベルでは、パステルカラー作れないですよ
647デフォルトの名無しさん:2010/11/19(金) 16:39:40
>>645
bmp.hを読むことができないので、なんともエスパーするしかありませんが、
もしかして struct BMP bitmap1; のかきまちがいなんじゃないかなぁ〜〜…っておもいました。ちがってたらごめんなさい(^_^/
648デフォルトの名無しさん:2010/11/19(金) 16:41:20
bitmap1.image[j][i].r = 255;
bitmap1.image[j][i].g = 100;
bitmap1.image[j][i].b = 100;
649デフォルトの名無しさん:2010/11/19(金) 16:44:36
スタックに置くにはでかすぎるからだろうな
BMPが最大サイズ決め打ちの二次元配列持ってるんだろう多分
650デフォルトの名無しさん:2010/11/19(金) 16:55:54
BMP* p = new_BMP(bit, width, height)
みたいにして使用するメモリ領域を動的に確保できるようにはなってないの?
651デフォルトの名無しさん:2010/11/19(金) 17:02:46
誰に聞いてんの?
652デフォルトの名無しさん:2010/11/19(金) 17:25:56
君に
653デフォルトの名無しさん:2010/11/19(金) 17:38:36
あんだと?やるのお?(´・ω・`)
654デフォルトの名無しさん:2010/11/19(金) 17:39:00
やるよぉ。
655デフォルトの名無しさん:2010/11/19(金) 17:46:18
rが255だと問答無用でパステルカラーになるの?
656599:2010/11/19(金) 17:49:39
>>599おめえこいよ?
びびってこれねえの?
ってことなのでSkype繋いでみました。
会話ログは「Perlで2ch系まとめサイトを作ろう」にあります。
怖い人ですねぇ
657デフォルトの名無しさん:2010/11/19(金) 18:04:38
もっとも扱いが簡単な24bit無圧縮ビットマップを
BMPファイル → Cの配列
BMPファイル ← Cの配列
と交互に変換できる関数をまず誰かが用意してくれたらいいとおもう。

配列は
struct PIXEL {
unsigned char r;
unsigned char g;
unsigned char b;
};

struct PIXEL a[bmp_width * bmp_height];
658デフォルトの名無しさん:2010/11/19(金) 18:17:22
定期あげ
659デフォルトの名無しさん:2010/11/19(金) 18:26:57
>>657
windowsビットマップとOS/2ビットマップは両対応なのか
660デフォルトの名無しさん:2010/11/19(金) 18:30:10
ttp://www.colordic.org/p/
300色あるっぽいから
int Pastel[300];
16進で全部埋めて、作ってやればいいのかね
質問の意味が良く分からないんでなんとも言えないんだが
661デフォルトの名無しさん:2010/11/19(金) 18:40:35
その解釈はいくらなんでもおかしいんじゃなかろうか
662デフォルトの名無しさん:2010/11/19(金) 18:46:41
ヘッダー分を読み飛ばしてBGRXの順に一バイトずつ読むだけだろ。
663デフォルトの名無しさん:2010/11/19(金) 18:50:42
パステルカラーって あくまで色合いの名称
だから相当のものを用意してるんでOKでしょ

パステル調 とか セピア調 とか 画像変換の話と違うぜ
664デフォルトの名無しさん:2010/11/19(金) 19:10:00
低脳じゃなければ、
>>631のプログラムから
読み込んだinput.bmpをパステルカラー調に変換してoutput.bmpに書き込む
んだって分るだろ。
つまり、パステルカラー調に変換するフィルタを作ってってこと。
断片から全体像を推察できないか?
665デフォルトの名無しさん:2010/11/19(金) 19:11:59
コーヒーフィルタみたいなもんか
666デフォルトの名無しさん:2010/11/19(金) 19:12:37
>>657
【◆QZaw55cn4c 隔離】C/C++の問題を片付けます のスレに bmp をパステルカラーに変換するプログラムが上がってるよ
残念なことにパステルカラーに変換する部分は上手く出来てないけど、リードしてライトする機能はちゃんと動く
task_convert() が変換部分だからそこだけ実装すれば良いんじゃないかな

unsigned char dataR[bmp_width * bmp_height];
unsigned char dataG[bmp_width * bmp_height];
unsigned char dataB[bmp_width * bmp_height];

の形だけど大きな問題は無いだろ
667デフォルトの名無しさん:2010/11/19(金) 19:16:53
あずにゃん
668デフォルトの名無しさん:2010/11/19(金) 19:39:03
// io_bmp.h 仕様

struct PIXEL {
unsigned char r;
unsigned char g;
unsigned char b;
};

struct BMP {
int w;
int h;
struct PIXEL p[30000 * 30000];
};

// file_name のBMPファイル(24ビット無圧縮)を読む。
extern void read_BMP(struct BMP* a, char* file_name);

// file_name のBMPファイル(24ビット無圧縮)として書く。
extern void write_BMP(struct BMP* a, char* file_name);

こんなのを誰かが書いてくれるといいとおもう。
エラーとか無視でいいから、なるべく短いコードでおねがいしますw
669デフォルトの名無しさん:2010/11/19(金) 19:40:39
>>668
自分で書けよ
670Perl忍者 ◆YNS0qIRC9I :2010/11/19(金) 19:44:30
>>669
いやお前が書けよ。
671デフォルトの名無しさん:2010/11/19(金) 19:47:14
30000は無い
672デフォルトの名無しさん:2010/11/19(金) 19:50:35
>>668
sizeof(struct BMP) を答えよ
673デフォルトの名無しさん:2010/11/19(金) 19:55:34
>>672
いまのパソコンってメモリー4ギガくらい普通だし、ダイジョブダヨ!! バンテリンあるよ!! ぜったい有利だよ!!
674デフォルトの名無しさん:2010/11/19(金) 19:56:46
width と height はヘッダから読むんだから p は可変長になるだろうな
675560:2010/11/19(金) 20:11:00
676Perl忍者 ◆YNS0qIRC9I :2010/11/19(金) 21:26:00
無修正がいいです。
677Perl忍者 ◆35I122rnS2 :2010/11/19(金) 21:39:52
また偽者が
678Perl忍者:2010/11/20(土) 00:38:58
いい加減偽物ウザいな
679デフォルトの名無しさん:2010/11/20(土) 02:15:49
パステル変換エラー処理最低限
>>675はよく見てないけどやってることは大体同じ臭い
パステル変換っていうかHSVに変換して白にちょっと近づけてるだけ
だれか上手い変換式考えてみて

http://codepad.org/YwgJpPli
680デフォルトの名無しさん:2010/11/20(土) 02:22:30
そういうライブラリないのかよ
681デフォルトの名無しさん:2010/11/20(土) 02:37:24
◆QZaw55cn4cって知識はそこそこ有りそうだけどセンスは無いな
682デフォルトの名無しさん:2010/11/20(土) 02:40:31
>>681
センス不足と言うより経験不足、学生だと思うよ
683デフォルトの名無しさん:2010/11/20(土) 04:35:13
すごいおっさんくさいこと言ってるし、コピペしてるうちに勘違いした底辺コーダーかも知れん
684デフォルトの名無しさん:2010/11/20(土) 07:55:31
#include <stdio.h>
#include <stdlib.h>
#define T typedef
T unsigned long ul; T unsigned short us; T unsigned char uc; T double D;
T struct{uc r;uc g;uc b;}P;T struct{long w;long h;P p[4096*4096];}B;
T struct{ul f_sz;ul pd0;ul p_ofs;ul bhs;long w;long h;us pd1;us pl;us bit;ul cmp;}H;
void r_B(B* a,char* f){
FILE* fp=fopen(f,"rb");H hd;fseek(fp,2,SEEK_SET);fread(&hd,sizeof(H),1,fp);
a->w=hd.w;a->h=hd.h;ul p_ofs=hd.p_ofs;int q=4-(a->w%4);q=(q==4)?0:q;
P* p;int j=a->h;while(j-->0){
p=a->p+(a->w*3)*j;fseek(fp,p_ofs+((a->w*3)+q)*j,SEEK_SET);fread(p,sizeof(P),a->w*3,fp);
}
}
void w_B(B* a,char* f){
FILE* fp=fopen(f,"wb");fseek(fp,0,SEEK_SET);uc BM[2]="BM"; fwrite(BM,sizeof(uc),2,fp);
int q=4-(a->w%4);q=(q==4)?0:q;ul p_ofs=54;
H hd={p_ofs+((a->w*3)+q)*a->h,0,p_ofs,40,a->w,a->h,1,24,0};fseek(fp,2,SEEK_SET);fwrite(&hd,sizeof(H),1,fp);
P* p;int j=a->h;while(j-->0){
p=a->p+(a->w*3)*j;fseek(fp, p_ofs+((a->w*3)+q)*j,SEEK_SET);fwrite(p,sizeof(P),a->w*3,fp);
}
}
void p_P(P* p){
D o=1.2;D q=0.5;D s=0.2;D r=p->r,g=p->g,b=p->b;r/=255;g/=255;b/=255;
D* u=(r>g)?((r>b)?&r:&b):((g>b)?&g:&b);D* d=(r<g)?((r<b)?&r:&b):((g<b)?&g:&b);
D _u=*u,_d=*d;r+=(1-_u)*((_u-_d+s)*o);g+=(1-_u)*((_u-_d+s)*o);b+=(1-_u)*((_u-_d+s)*o);
_u=*u;_d=*d;r+=(_u-r)*((_u-_d+s)*q);g+=(_u-g)*((_u-_d+s)*q);b+=(_u-b)*((_u-_d+s)*q);
p->r=(r>=1)?255:r*255;p->g=(g>=1)?255:g*255;p->b=(b>=1)?255:b*255;
}
void main(int u,char** v){
B* a=(B*)malloc(sizeof(B));r_B(a,v[1]);P* p=a->p;int i=a->w*3*a->h;while(i-->0){p_P(p++);}w_B(a, "a.bmp");
}
685684:2010/11/20(土) 08:02:49
パステルカラーってのがよくわからないので、どうせよくわからないのなら、でたらめでもいいだろう(笑)と…w
あえて明示的なRGB←→HSV変換を経ないでやってみるアプローチを試してみようと思いました。
ほぼ、でたらめやってます。数式に理論的根拠はあんまり無いですw

<つかいかた>
実行ファイル名 画像.bmp
変換結果は a.bmp というファイル名で出力されます。
686デフォルトの名無しさん:2010/11/20(土) 10:13:59
>>684
何も邪悪なコードにせんでも...
codepad あたりに張ってくれれば見る気になるのに
687デフォルトの名無しさん:2010/11/20(土) 10:20:58
>>679
ビットマップの一行を構成するピクセルのバイト数が 4 の倍数でないときの処理が必要ではないでしょうか?

あと、コンパイルする環境を教えてください。(bcc32 でいいですか?)
こちらでは実行するとだんまりになってしまいます。
688デフォルトの名無しさん:2010/11/20(土) 10:44:23
あと 0 division も発生します。
0 division を回避すれば、bcc32 でコンパイルして正常に動作することを確認しました。
>h = 1.0/(double)(max - min) ;

テストに使用した画像は、Windows XP のマイドキュメントの下にあるサンプル画像です。
689デフォルトの名無しさん:2010/11/20(土) 11:50:38
今まで勉強で#include<stdio.h>ばっかだったけど
他にどんなのがあって何が便利で何ができるんでしょうか?
あとstdlib.hとstring.hくらいしか使ったことないです
/usr/include以下にあるのは知ってるけどこれらのファイルの中身見ても意味がわからないです・・・
690デフォルトの名無しさん:2010/11/20(土) 11:53:54
ご本を読めばいいと思うの
691デフォルトの名無しさん:2010/11/20(土) 11:54:35
692Perl忍者:2010/11/20(土) 14:47:36
アホばっかりだなこのスレはwwww
Perl最強だぜ!
693Perlキチガイ:2010/11/20(土) 15:13:57
でもPerlはキチガイばっかなんだよな
694デフォルトの名無しさん:2010/11/20(土) 15:19:34
C言語のリダイレクトでエクセルに
printf("1");
printf("2");
printf("3");

をエクセルの1行目のAセルに1、1行目のBセルに2、1行目のCセルに3、
となるようにリダイレクトしたいんだけどどうやってやるか分かる?
695デフォルトの名無しさん:2010/11/20(土) 15:24:13
>>694
csv で書き出すなら
printf("1,2,3");
でおk
696デフォルトの名無しさん:2010/11/20(土) 15:40:41
>>695
サンクス。
CSVか。
697デフォルトの名無しさん:2010/11/20(土) 16:17:30
\tのタブで…と思ったらコンソールからコピーするとスペースになるんだな
698デフォルトの名無しさん:2010/11/20(土) 16:26:00
2^n-1を符号付きで求めたいんだけど、(foo_t)(~0LL ^ (~0LL << n))で大丈夫?規格上どこまで許されるのかよく分からん。
699デフォルトの名無しさん:2010/11/20(土) 19:23:14
pow(2,n-1);
じゃダメなのかな・・・
700デフォルトの名無しさん:2010/11/20(土) 19:39:48
(2^n) - 1だろ
701デフォルトの名無しさん:2010/11/20(土) 21:45:38
ひょっひょっ
702デフォルトの名無しさん:2010/11/20(土) 21:50:12
どびゅっどびゅっ
703デフォルトの名無しさん:2010/11/20(土) 21:55:10
#include<stdio.h>

main()
{
char p[3];
char a;
char b;
char c;

a='a';
b='s';
c='\0';

p=&a;

puts(p);
}

これはなんでエラーなんですか
704デフォルトの名無しさん:2010/11/20(土) 21:56:47
>>703
pは定数だから代入できない
705デフォルトの名無しさん:2010/11/20(土) 21:57:10
pは配列だから、それ自身には代入できない。
706デフォルトの名無しさん:2010/11/20(土) 21:57:20
配列自体に代入はできないから。
707デフォルトの名無しさん:2010/11/20(土) 22:00:53
pに代入することは俺が許さない
708デフォルトの名無しさん:2010/11/20(土) 22:03:53
main()
{
char p[3];
char *pp;

p[0]='a';
p[1]='s';
p[2]='\0';

pp=p;

puts(pp);
}

ならわかるが
709デフォルトの名無しさん:2010/11/20(土) 22:18:41
#include<stdio.h>

main()
{

char p[3];
char c[3];


p[0]='a';
p[1]='s';
p[2]='\0';

c=p;


puts(c);
}


これもエラーです 
710Perl忍者 ◆M5ZWRnXOj6 :2010/11/20(土) 22:19:18
C言語のどこらへんに魅力を感じるの?
711デフォルトの名無しさん:2010/11/20(土) 22:19:33
>>709
だから配列名は定数だからエラーだって
変数じゃないか
712デフォルトの名無しさん:2010/11/20(土) 22:20:34
>>709
#include<stdio.h>
#include<string.h>
main()
{

char p[3];
char c[3];


p[0]='a';
p[1]='s';
p[2]='\0';

strcpy(c, p);;

puts(c);
}

書くならこうしなければならない
713デフォルトの名無しさん:2010/11/20(土) 22:23:01
>>710
あなたは普段生活していて日本語に魅力を感じますか?
つまりはそういうことです。
714デフォルトの名無しさん:2010/11/20(土) 22:33:00
#include<stdio.h>

main()
{
char p[3];
char c[3];


p[0]='a';
p[1]='s';
p[2]='\0';

p=p+1;



puts(p);
}


なるほど代入できない
なんとなくわかったよ
715デフォルトの名無しさん:2010/11/20(土) 22:37:37
char a[]="abc";
char *b="abc";

a[0] = 0; /* OK */
b[0] = 0; /* NG */
a = (char*)0; /* NG */
b = (char*)0; /* OK */
716デフォルトの名無しさん:2010/11/20(土) 22:38:19
>>713みたいに上手いこと言おうとして見当外れのこと言っちゃう人って多いよね!ムッハー!!
717デフォルトの名無しさん:2010/11/20(土) 22:52:34
C言語は、メモリ上でデータがどのように展開されているかとか
PC側に偏った考え方を学べる。(アセンブラやっても構わない)
Cを分かっているかは他の言語をやる上でも基盤になっていくと思うよ。
脳内にメモリマップしたりするしな
718デフォルトの名無しさん:2010/11/20(土) 23:20:22
#include<stdio.h>

main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
char **a;
char *b;

**a=(c[0][2]);
b=**a;

puts(b);

}

またまたエラーです なんでですかね
719Perl忍者 ◆35I122rnS2 :2010/11/20(土) 23:27:29
どひゅっどひゅっ
720デフォルトの名無しさん:2010/11/20(土) 23:32:13
>>718
すいません 解決しました 
#include<stdio.h>

main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
char *a;

*a=(c[0][2]);


puts(a);

}
721デフォルトの名無しさん:2010/11/20(土) 23:32:59
*aが未定義だから、その参照外しで死ぬ。
722デフォルトの名無しさん:2010/11/20(土) 23:34:00
何も学ぼうとしないバカが沸いてるな・・・
718とかスルーだな。712で書かれたことを全く理解してない
723デフォルトの名無しさん:2010/11/20(土) 23:36:05
それし、スルー出来ないお前がいるわけだ。
724Perl忍者 ◇35I122rnS2:2010/11/20(土) 23:38:44
C言語とかアホしか使わないからなwww
Perl最強だぜ!
725デフォルトの名無しさん:2010/11/20(土) 23:40:39
perlはperlで出来てるのか?
726デフォルトの名無しさん:2010/11/20(土) 23:41:46
言うはやすし、行うはたかし。
Cは書きやすし、読みたかし。
727デフォルトの名無しさん:2010/11/21(日) 00:12:14
#include<stdio.h>
void t(int t[][9]);

main()
{
char c[6][9]=
{
"baas",
"saaa",
"daad"
};
t(c);
puts(c[0]);

}

void t(int n[][9])
{
*n[0]="hkh";←ここです

}

すいません 二次元配列の関数側からのアクセス方法を教えてください
728722:2010/11/21(日) 00:14:13
いやどうせ構ってちゃんなんだろうと思ってな。
初心者がポインタのポインタなんぞ使うもんでもあるまい
警告を発したまでだ、それ以上でもそれ以下でもない。
難解なコード大会があるようにもはやCだかなんだか分からない構文も多々ある
ここは初心者の来るべき場所であって適当な構文を理解すべき場所ではない。
729デフォルトの名無しさん:2010/11/21(日) 00:21:13
>>727
ポインタの概念から読み直してこいよ
正直言って同じような質問にうんざりなんだよ
1+1=2って説明しないと分からないのか?
1+2=が分からないんならプログラム辞めることをオススメする
730デフォルトの名無しさん:2010/11/21(日) 00:24:50
参考書の流れどおりやってるだけだよ
疑問に思ったこととか周りに聞く人がいないからここで質問してるわけ
ここならスパッと解答してくれるから重宝してまつ
731デフォルトの名無しさん:2010/11/21(日) 00:26:38
strcpy(n[0],"hkh");←ここです
strncpyのほうがいいかも
それと関数tの宣言がおかしい
732デフォルトの名無しさん:2010/11/21(日) 00:29:44
参考書全部読み終わってからこい
733デフォルトの名無しさん:2010/11/21(日) 00:31:31
読み終わらないうちに挫折するような
734デフォルトの名無しさん:2010/11/21(日) 00:37:24
素質が無いなら早めに挫折したほうがいい
735デフォルトの名無しさん:2010/11/21(日) 02:53:32
みなさんどんな職業ですか
C言語をはじめるきっかけは?
736デフォルトの名無しさん:2010/11/21(日) 02:55:04
会社員
I/Oの特集を見て
737デフォルトの名無しさん:2010/11/21(日) 03:17:09
会社員
BASICが処理が遅い → Cが速いらしいと訊いて
738デフォルトの名無しさん:2010/11/21(日) 03:30:23
io_bmp.h
io_bmp.c
BMPファイル ←→ RGB構造体の一次元配列
読み込めるBMPファイルは”24ビット、無圧縮、windows形式”のみです。
http://codepad.org/Wk0mkW6a
http://codepad.org/onSoceGv


pastel.c
第一引数のBMPファイルを読み込んで、パステル調にして a.bmp として出力します。 ”24ビット、無圧縮、windows形式”のみです。
http://codepad.org/5S4m32yy


gcc -o pastel pastel.c io_bmp.c
./pastel aaa.bmp
739デフォルトの名無しさん:2010/11/21(日) 04:00:04
struct 型 名前 = { {a,b,c},{d,f,g},{h,i,j},};
と言う感じで代入してたのですが
ループを出たら全部消えてしまうのですが何故でしょうか?
740デフォルトの名無しさん:2010/11/21(日) 04:31:43
消える書き方をしたから
741デフォルトの名無しさん:2010/11/21(日) 07:57:31
doubleの配列をfloatにキャストする関数を作りたいのですが、要素数lengthを求める式がうまく機能しておりません。
mallocした配列の長さはポインタからどう求めればいいのでしょうか?

void castDtoF(float *output,double *input){
unsigned int length=sizeof(input)/sizeof(input[0]);
for(unsigned int i=0;i<length;i++){
output[i]=(float)input[i];
}
}
742デフォルトの名無しさん:2010/11/21(日) 08:01:37
無理です
長さを別に渡して下さい
743デフォルトの名無しさん:2010/11/21(日) 08:16:11
他の言語を検討しましょう
744デフォルトの名無しさん:2010/11/21(日) 08:21:10
>>742
やっぱりかー
そうします。
ありがとうございます。

>>743
それはちょっと...
745デフォルトの名無しさん:2010/11/21(日) 15:49:33
>>744
いえいえ
746デフォルトの名無しさん:2010/11/21(日) 16:22:59
724 :Perl忍者 ◇35I122rnS2:2010/11/20(土) 23:38:44
C言語とかアホしか使わないからなwww
Perl最強だぜ!
747デフォルトの名無しさん:2010/11/21(日) 16:23:43
すいません質問です。
例えばint a[10][10]などの多次元配列についてです。
この場合、aのポインタの型は(int (*)[10])になり、
*(a+1)==a+1==a[1]が成り立ちますよね?

つまり間接参照先が配列の場合、間接参照の対象が、
その配列の先頭のポインタになっているという解釈でよいのでしょか?
このあたりが、なかなか理解に苦しむんですが・・・
748デフォルトの名無しさん:2010/11/21(日) 16:26:12
ポインタへの暗黙変換が許される、であってポインタではない
749デフォルトの名無しさん:2010/11/21(日) 16:34:45
>>748は完全なる嘘。暗黙変換が許されたオブジェクト体をポインタと定義しているので、mallocはポインタ。
750デフォルトの名無しさん:2010/11/21(日) 16:36:34
↑ただのバカ
751デフォルトの名無しさん:2010/11/21(日) 16:46:24
早速のお答えありがとうございます。

>>747で、*(a+1)というのは配列自身
を指している、のであるが、*(a+1)==a+1
などの式の中で用いられた場合には、
間接参照先の値として、*(a+1)がa+1
というポインタに変換される、という理解
でよいのでしょうか?
752デフォルトの名無しさん:2010/11/21(日) 17:27:05
>>750が釣れました。w
753デフォルトの名無しさん:2010/11/21(日) 17:31:22
>>751
うひょ〜っふっ
754デフォルトの名無しさん:2010/11/21(日) 17:35:07
a[1] == &a[1][0] ってだけでしょ?

何が疑問なのかよく判らない。
755デフォルトの名無しさん:2010/11/21(日) 17:47:55
↑ただのバカ
756デフォルトの名無しさん:2010/11/21(日) 17:54:35
このスレにずっと粘着してるコピペ馬鹿は何がしたいんだ?
757デフォルトの名無しさん:2010/11/21(日) 17:55:22
>>756が釣れました。w
758デフォルトの名無しさん:2010/11/21(日) 17:57:23
>>756が釣れました。w
759デフォルトの名無しさん:2010/11/21(日) 17:58:31
↓↓>>756が釣れました。w
760デフォルトの名無しさん:2010/11/21(日) 17:59:07
前スレも前前スレもその前も、ずっとこんな感じだろ
なんかツライことでもあった?死ねよ
761デフォルトの名無しさん:2010/11/21(日) 17:59:40
釣れたwwww
762デフォルトの名無しさん:2010/11/21(日) 18:00:02
なんだこいつ
763デフォルトの名無しさん:2010/11/21(日) 18:01:12
定期あげ
764デフォルトの名無しさん:2010/11/21(日) 18:01:26
あずにゃんペロペロ
765デフォルトの名無しさん:2010/11/21(日) 18:02:58
このスレにずっと粘着してるコピペ馬鹿は何がしたいんだ?
766デフォルトの名無しさん:2010/11/21(日) 18:03:18
前スレも前前スレもその前も、ずっとこんな感じだろ
なんかツライことでもあった?死ねよ
767デフォルトの名無しさん:2010/11/21(日) 18:03:41
                           , ヘ\
                            /   ヽヽ,
        /ヘ、                /      l |
       /,/   \               /           | |
       | l       \          ./          | |
.      | |       \       /           /'⌒(⌒\
      | |           \  /           / _/~___`\ \
      /⌒)¨゙\        X          //:::::::::::::::ノ、`ヽ\
     / /  ~\ \     /. \       /./::::;;-‐‐''"´  |:::::::|. \
   / /  .ノ´⌒`ヽヽ   /     \    / ..|:::|  。    .|:::::::|、 \
  / γ⌒´       \ヽ/        \ (   |:/ ⌒  ⌒   ヽ::::| )   )
. / .// ""´ ⌒\  / ヽ.         \', .| -・‐  ‐・-  |:::| /  /
 | .i /  ⌒  ⌒  i./) ノ          \ | ー'/ _.'ー    `|/  /
 | i   (・ )` ´( ・)/,/ /           V \(_人__)ヽ   |  / こっちも釣れた!
 | l    (__人_)/ |  /.            丶ヽ゚しニ ノ   / /  こいつはもっとスゴいぞ!
 | \    |┬J゚ ノ/ つ、釣れた!     〉  ヽ_    _/ /
 ヾ、.     `ー'  く   これは大物のバカに違いない!/
   ヽ          ヽ           /        /
    ヽ                            /
768デフォルトの名無しさん:2010/11/21(日) 18:04:37
769デフォルトの名無しさん:2010/11/21(日) 18:05:28
AAでウケを狙う流れでもない
770デフォルトの名無しさん:2010/11/21(日) 18:07:16
糞スレ
771デフォルトの名無しさん:2010/11/21(日) 18:08:28
一気に糞化したなw
772デフォルトの名無しさん:2010/11/21(日) 18:09:41
元から糞だっただろ
なんかツライことでもあった?死ねよ
773デフォルトの名無しさん:2010/11/21(日) 18:11:53
前スレも途中から>>1000までずっとコピペだった
一人そういう奴がいて、そいつが気に入らないレスがあったらこうなるってこと
おそらく自分の考えたレスが馬鹿にされたもんだから、他人のレスのコピペしてるんだろうな
774デフォルトの名無しさん:2010/11/21(日) 18:12:40
まあ自分の考えが書けない奴は死ねばいいと思うよ、いやマジで。邪魔なだけだし
775デフォルトの名無しさん:2010/11/21(日) 18:15:11
解説する奴って過去にそういうことがあったんだよな
776デフォルトの名無しさん:2010/11/21(日) 18:15:45
>>774
じゃあ早く死ねよ。
777デフォルトの名無しさん:2010/11/21(日) 18:16:54
糞スレ
778デフォルトの名無しさん:2010/11/21(日) 18:18:34
>>776
図星突かれて悔しいんか?あ?w
779デフォルトの名無しさん:2010/11/21(日) 18:18:46
C言語なんかやらずにPerlやれよ。w
780デフォルトの名無しさん:2010/11/21(日) 18:19:39
>>778
これは恥ずかしい。
781デフォルトの名無しさん:2010/11/21(日) 18:21:59
>>780
あ?w
782デフォルトの名無しさん:2010/11/21(日) 18:22:48
>>780
そんなに悔しいのか?w
783デフォルトの名無しさん:2010/11/21(日) 18:23:26
釣れた!
784デフォルトの名無しさん:2010/11/21(日) 18:23:57
定期あげ
785デフォルトの名無しさん:2010/11/21(日) 18:24:01
釣られてんのはお前だカス
786デフォルトの名無しさん:2010/11/21(日) 18:24:25
どぴゅっどぴゅっ
787デフォルトの名無しさん:2010/11/21(日) 18:25:13
うひょーーーーーーーーーー!!!!!!!!!
788デフォルトの名無しさん:2010/11/21(日) 18:25:34
卑猥だカス
789デフォルトの名無しさん:2010/11/21(日) 18:26:18
で、Perlだと何ができるんだい?
790デフォルトの名無しさん:2010/11/21(日) 18:27:05
Welcome to Underground
791デフォルトの名無しさん:2010/11/21(日) 18:27:20
792デフォルトの名無しさん:2010/11/21(日) 18:27:45
 
793デフォルトの名無しさん:2010/11/21(日) 18:28:05
でもコピペの奴消えたwwwだっさ
794デフォルトの名無しさん:2010/11/21(日) 18:29:03
でも>>793にも消えて欲しいな
795デフォルトの名無しさん:2010/11/21(日) 18:29:42
下手に煽ってる奴も一緒に死ねばいい
796デフォルトの名無しさん:2010/11/21(日) 18:30:01
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!コピペ厨出てこいw
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
797デフォルトの名無しさん:2010/11/21(日) 18:30:22
あげ
798デフォルトの名無しさん:2010/11/21(日) 18:31:14
今度はAA厨か
どっちもどっちだカス
799デフォルトの名無しさん:2010/11/21(日) 18:32:04
>>796
ここぞとばかりにAA貼ってるけど、お前も同類だからね。
800デフォルトの名無しさん:2010/11/21(日) 18:33:09
釣れたw
801デフォルトの名無しさん:2010/11/21(日) 18:33:10
C言語の話しようぜ
802デフォルトの名無しさん:2010/11/21(日) 18:34:05
796 :デフォルトの名無しさん:2010/11/21(日) 18:30:01
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!コピペ厨出てこいw
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

800 :デフォルトの名無しさん:2010/11/21(日) 18:33:09
釣れたw


荒らすなボケ
803デフォルトの名無しさん:2010/11/21(日) 18:34:58
糞スレ
804デフォルトの名無しさん:2010/11/21(日) 18:35:23
釣れたw
805デフォルトの名無しさん:2010/11/21(日) 18:36:52
C言語でインターネットを作るにはどうしたらいいですか
806デフォルトの名無しさん:2010/11/21(日) 18:38:31
とりあえずソケットでも使えば
807デフォルトの名無しさん:2010/11/21(日) 18:39:48
エロいこと言うなよ
808デフォルトの名無しさん:2010/11/21(日) 18:40:52
エロい・・・///
809デフォルトの名無しさん:2010/11/21(日) 18:43:10
ペロペロ
810デフォルトの名無しさん:2010/11/21(日) 18:45:56
友達にC言語を自慢したいのですが、何かいい方法はありますか。
811デフォルトの名無しさん:2010/11/21(日) 18:49:13
下着ゲットして「これ何だと思う?」って言えばいい
812デフォルトの名無しさん:2010/11/21(日) 18:50:50
>>811
ブリーフだろJK
813デフォルトの名無しさん:2010/11/21(日) 19:00:44
ブリーフはいたJKとか
814デフォルトの名無しさん:2010/11/21(日) 19:03:19
金曜日の夜 土曜日の昼 土曜日の夜 日曜日の昼 日曜日の夕 日曜日の夜 月曜の朝
    ↓     ↓      ↓        ↓       ↓        ↓   ↓
                            ┃::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::    ∧||∧
   ∧ ∧   ∧∧     ∧ ∧   ┃::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  ( / ⌒ヽ
   (・∀・)  ∩∀・)    (・∀・)∩  ┃:::∧∧::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::   | |   |
   / ⊃⊃ ヽ  ⊃ノ   /⊃ /  ....┃:::('д` )::::::::::::::∧∧:::::::::::::::::::::::::::::::::::  ∪ / ノ
 〜(  (    ヽ  )つ 〜( ヽノ  ......┃:::と  ヽ::::::::: ('д` ):::::::(   )⌒ヽ;:::::::::: | ||
   (/(/'      (/     し^ J  ......┃:::⊂,,_UO〜:::(∩∩ ):::::|/.|/uと  )〜::::: ∪∪
815デフォルトの名無しさん:2010/11/21(日) 19:14:51
いや別に
816デフォルトの名無しさん:2010/11/21(日) 21:36:27
あげ
817デフォルトの名無しさん:2010/11/21(日) 22:27:21
>>814
飛び石連休だからよもう少し別のAAにしとけ
818デフォルトの名無しさん:2010/11/21(日) 22:42:39
というかズレてるよね
819デフォルトの名無しさん:2010/11/21(日) 22:53:21
今日も一日一あずにゃんペロペロ
820デフォルトの名無しさん:2010/11/21(日) 23:01:06
ヾ(´・ω・`)ノ
821デフォルトの名無しさん:2010/11/21(日) 23:53:55
モキュモキュ
822デフォルトの名無しさん:2010/11/22(月) 23:24:48
MinGWgccでコンパイルするときコンパイル先を指定するのってどうやるんですか
cygwinではcd C:cprogram/testって入力したらできるんですが
823Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 23:38:08
リネージュの作り方教えて
824Perl忍者◇35I122rnS2:2010/11/22(月) 23:41:56
やっぱりいいわ
825 ◆IRxguRQ9sU :2010/11/22(月) 23:44:30
テスト
826Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 23:48:34
Savage2やろう

C言語なんてお前らがやっても
まじいみねーだろ
827Perl忍者 ◆M5ZWRnXOj6 :2010/11/22(月) 23:58:50














828デフォルトの名無しさん:2010/11/23(火) 00:24:39
(´・ω・`) ぶつぞ〜
829デフォルトの名無しさん:2010/11/23(火) 00:58:04
画像をサブピクセルレンダリングによって1/3サイズに縮小します
spr.c
http://codepad.org/U1SDmzt6
24ビット無圧縮ウィンドウズ形式のBMPのみ。

BMPの読み込み書き込みには io_bmp を使ってるので一緒にコンパイルしてリンクしてください。
io_bmp.h
http://codepad.org/Wk0mkW6a
io_bmp.c
http://codepad.org/onSoceGv

コンパイル
gcc -o spr spr.c io_bmp.c

使い方
./spr 24ビットBMP画像.bmp

思い浮かんだんでダメもとで組んだら動いた(笑
本当はちゃんとしたアルゴリズムがあるんだろうけど知らない。
RGBの被視感度補正も考慮するべきなのだろうか?と思った。でもそれをすると色ズレが起こるし?。はて?
830デフォルトの名無しさん:2010/11/23(火) 03:07:09
ポインタ変数の記述は*p←このようになりますが
p*←これはなんですか
831デフォルトの名無しさん:2010/11/23(火) 03:07:56
乗算
832デフォルトの名無しさん:2010/11/23(火) 05:32:17
糞スレ
833デフォルトの名無しさん:2010/11/23(火) 11:47:47
アナル
834デフォルトの名無しさん:2010/11/23(火) 13:18:15
ほっはっ
835デフォルトの名無しさん:2010/11/23(火) 14:21:17
教材のソースをみてると
ポインタ変数を宣言するとき
int* i;
int *i;
というように*の位置が違うんだけど
なにか違いがあるの?
836デフォルトの名無しさん:2010/11/23(火) 14:25:07
ない
int*i; でもいいし
int * i; でもいいし
int
*
i; でもいいよ
837デフォルトの名無しさん:2010/11/23(火) 14:31:58
どっちでもいい

ポインタ型であることを明確にするために
int* i;
とする派と


複数宣言するときでも統一できるように
int *i, *j;
とする派がいるだけ

でも1つ宣言のときは前、複数宣言の時だけ後ろの混在で使ってる人がほとんどじゃね?
838デフォルトの名無しさん:2010/11/23(火) 14:32:26
>>835
Cではint *p
C++ではint* p
が使われることが多い。
839デフォルトの名無しさん:2010/11/23(火) 15:16:24
>>835
Cではint *p
C++ではint* p
が使われることが多い。
840デフォルトの名無しさん:2010/11/23(火) 15:17:19
へえ
841デフォルトの名無しさん:2010/11/23(火) 15:17:40
それほど大事なことでもないから2回言わなくていい
842835:2010/11/23(火) 15:24:42
なるほど

ちなみに
int* x, y;
とした場合はxだけがポインタ変数ということで
いいんでしょうか?
843デフォルトの名無しさん:2010/11/23(火) 15:25:57
いいです。
844835:2010/11/23(火) 15:29:13
ありがとう
また来る
845デフォルトの名無しさん:2010/11/23(火) 15:37:34
typedef int *intptr_t;
intptr_t x, y;

では両方ともポインタですねか?
846デフォルトの名無しさん:2010/11/23(火) 15:39:50
はい。そうです。
847デフォルトの名無しさん:2010/11/23(火) 17:56:49
はい。違います。
848デフォルトの名無しさん:2010/11/23(火) 17:58:50
intptr_tとか紛らわしい型名つけんな
c99のstdint.hとかぶってる
849デフォルトの名無しさん:2010/11/23(火) 19:11:28
if (det > (1e-3))
あるサイトで,detは変数なんだけど。
1eから3引くってことなのかい?
1eってなんぞ?
850デフォルトの名無しさん:2010/11/23(火) 19:12:48
浮動小数点リテラル
851デフォルトの名無しさん:2010/11/23(火) 19:12:55
C言語以前の問題だな
852デフォルトの名無しさん:2010/11/23(火) 19:13:05
浮動小数点数の科学的記数法
853デフォルトの名無しさん:2010/11/23(火) 19:14:32
1e2 = 100
1e1 = 10
1e0 = 1
1e-1 = 0.1
1e-2 = 0.01
854デフォルトの名無しさん:2010/11/23(火) 19:48:07
>>848みたいに関係ないとこに噛み付く馬鹿ってなんで生きてるのかね
855デフォルトの名無しさん:2010/11/23(火) 19:51:08
糞スレだからだろ
856デフォルトの名無しさん:2010/11/23(火) 19:59:44
個人的には自治厨みたいな連中のほうがうざい。
857デフォルトの名無しさん:2010/11/23(火) 20:01:43
両方うざいです
858デフォルトの名無しさん:2010/11/23(火) 20:48:37
#include <stdio.h>

int sum(int *kadf[2]) {
return *kadf[1]+*kadf[2];
}

int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}

なぜかエラーが起こる
859デフォルトの名無しさん:2010/11/23(火) 20:50:08
>>858
return *kadf[0]+*kadf[1];
860デフォルトの名無しさん:2010/11/23(火) 20:53:07
#include <stdio.h>

int sum(int *kadf[2]) {
return *kadf[0]+*kadf[1];
}

int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}

修正したけど
何故かエラーになる
861デフォルトの名無しさん:2010/11/23(火) 20:57:26
>>860
なぜかじゃねーよ。
#include <stdio.h>
int sum(int *kadf) { /* もしくは int kadf[] */
return kadf[0]+kadf[1];
}
int main(void) {
int valew[]={1,2};
printf("%d\n",sum(valew));
return 0;
}
862デフォルトの名無しさん:2010/11/23(火) 20:59:38
彼はポインタと配列の関係で混乱しているように見える
863デフォルトの名無しさん:2010/11/23(火) 21:01:06
>>860
#include <stdio.h>

int sum(int (*kadf)[2]) {
return (*kadf)[0]+(*kadf)[1];
}

int main(void) {
int valew[2]={1,2};
printf("%d\n",sum(&valew));
}
864デフォルトの名無しさん:2010/11/23(火) 21:03:56
>>863
君は 860 ではないか? return 0; がないけど。
865デフォルトの名無しさん:2010/11/23(火) 21:04:00
int sum(int *kadf[2]) {
return *kadf[0]+*kadf[1];
}
とした場合の、
int *kadf[2] 、*kadf[0]は何を表すか教えて

sum(&valew)とした時に
&valewで何が渡ってるんですか
866デフォルトの名無しさん:2010/11/23(火) 21:08:37
>>865
kadf[0]でintへのポインタで*kadf[0]で、そのポインタの指す先のintの値だろ。
867デフォルトの名無しさん:2010/11/23(火) 21:09:00
int *kadf[2] は、
intへのポインタ型の要素数2の配列を引数kadfを取ることを示す。

*kadf[0] は、
kadfの0番目の要素(intへのポインター型)が指す要素(int型)を示す。
868デフォルトの名無しさん:2010/11/23(火) 21:09:52
&valewは、
変数valewのアドレスを示す。
869デフォルトの名無しさん:2010/11/23(火) 21:15:22
>>866-867
><むずかしいよー
>>868
アドレスだけで型情報はないの?
870デフォルトの名無しさん:2010/11/23(火) 21:16:46
無いよ。
871デフォルトの名無しさん:2010/11/23(火) 21:20:18
とにかくだ。
value じゃないか?
872デフォルトの名無しさん:2010/11/23(火) 21:28:46
> int *kadf[2] 、*kadf[0]は何を表すか教えて
まず関数の引数に使われる[ ]の中の数字に何の意味もない、
int *kadf[0] だろうが int *kadf[1000] だろうが同じ意味。
* は一番優先度が低い、したがって"int *kadf[] は配列です"と解釈される。
配列のに格納されるデータ型は int*。
だから int sum(int *kadf[2]) は引数にint*の配列を取り、
戻り値 int の関数 sum と解釈される。
*kadf[0]は"配列kadfの最初の値(ポインタint*)"の中身。
873デフォルトの名無しさん:2010/11/23(火) 21:30:18
>>872
void aho(int saru[][100]);
874デフォルトの名無しさん:2010/11/23(火) 21:51:51
初心者なんだから背伸びしないでコツコツ行こう。
猛スピードで駆け抜けると何処かで転落する
875デフォルトの名無しさん:2010/11/23(火) 21:55:17
「C実践プログラミング」 でCの文法、make、デバッグ手法など、基礎を習得

                           ↓

「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                           ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                           ↓

「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ

                           ↓

                         神の誕生
876デフォルトの名無しさん:2010/11/23(火) 21:56:47
mallocで配列の配列を確保するにはどうしたら良いですか。
877デフォルトの名無しさん:2010/11/23(火) 22:00:41
頭でっかちの誕生じゃねーかwww
878デフォルトの名無しさん:2010/11/23(火) 22:00:48
mallocは指定されたサイズの領域を確保するだけ。型はない。
配列の領域として使いたいなら、配列にキャストして使えばいい。
879デフォルトの名無しさん:2010/11/23(火) 22:01:15
配列の配列の大きさを計算してまとめて取るか、分割で取るかだけ。
どちらでもお好きなように。
880デフォルトの名無しさん:2010/11/23(火) 22:02:35
なるほど分かりました。
どうもありがとう。
881デフォルトの名無しさん:2010/11/23(火) 22:09:06
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char (*p)[5];
char *pp;
int i;
p = (char(*)[5])malloc(3*sizeof(char[5]));
pp = (char*)p;
sprintf(pp,"123456789012");
p[0][4] = p[1][4] = p[1][4] = 0;
for (i=0;i<3;i++) printf("%s\n",p[i]);
return 0;
}
8821eの人:2010/11/23(火) 22:09:09
ありがとう!
883デフォルトの名無しさん:2010/11/24(水) 00:59:37
main関数で
scanf("%d",&i);
としてint型の変数iに数字を入力したらその変数iを子スレッドで使用するにはどうすればいいですか?
884デフォルトの名無しさん:2010/11/24(水) 01:07:21
イミフ
子スレッドにアドレス渡しとけばいいじゃん
885デフォルトの名無しさん:2010/11/24(水) 01:10:25
>子スレッドにアドレス渡しとけばいいじゃん
どうやって渡すんですか?
複数でもいけますか?
886デフォルトの名無しさん:2010/11/24(水) 01:10:48
子スレッドを開始するときにひとつだけポインタを渡せるはずだが
それを使って変数 i へのポインタを渡せばいいと思わないか
887デフォルトの名無しさん:2010/11/24(水) 01:11:34
複数なら構造体にまとめればいい
888デフォルトの名無しさん:2010/11/24(水) 01:13:54
hTh = (HANDLE)_beginthreadex(NULL,0,mythread,ここ?0,&thID);

>複数なら構造体にまとめればいい
なるほど。
そういう考えですか
889デフォルトの名無しさん:2010/11/24(水) 01:15:50
そう、そこ
890デフォルトの名無しさん:2010/11/24(水) 01:16:56
ありがとうございます。
891デフォルトの名無しさん:2010/11/24(水) 02:32:09
ダメだ・・・
今こんな感じなんですけど
滅多にスレッドが起動しません。
起動しても3回くらいです。
http://main.s377.xrea.com/test5.c
ソース見てください。
892デフォルトの名無しさん:2010/11/24(水) 02:53:54
スレッド間では静的領域しか共有できないんじゃなかったっけ?
struct test mode -> static struct test mode にしても駄目かな?
893デフォルトの名無しさん:2010/11/24(水) 03:00:53
こんな感じでしょうか?
http://main.s377.xrea.com/test5.c
なんか
始まりの数字を・・・:0
終わりの数字を・・・:100
とかにしてもスレッドが0から表示されないんですよね>_<

よかったらexeをぅpしたので実行してみてもらえないですか?
http://main.s377.xrea.com/test5.exe
894デフォルトの名無しさん:2010/11/24(水) 03:22:40
100くらいじゃmythreadが動き出す前にmain側で mode.start == mode.end までインクリメントしてしまうと思うよ
その後mythreadが動き出してもすでに lpx->start == lpx->end だから何もすることがない
895デフォルトの名無しさん:2010/11/24(水) 03:28:38
なるほど。
理解できました。
では書き方自体におかしいところはないのですね?

これたとえばすごい回数まわしたとして
普通にループするより早くなるのでしょうか?
896デフォルトの名無しさん:2010/11/24(水) 03:46:25
いまマルチスレッドで1万回まわしたのと
そのままmain関数で一万回まわしたのを比較したら
スレッド使わないほうが早かったんですけど・・・
897デフォルトの名無しさん:2010/11/24(水) 03:52:49
そりゃあなた、複数のスレッドで同じ処理をやっても意味がない
1スレッドで1万回と、2スレッドで各1万回=計2万回を、比べちゃいかん
スレッドを管理する負荷が増えるぶん遅くなるだけ
せっかく複数のスレッドを使うなら、それぞれのスレッドで役割を分担しなければ
1スレッド目は0から5000まで、2スレッド目は5000から10000まで、とか
898デフォルトの名無しさん:2010/11/24(水) 03:55:33
あとクリティカルセクションで囲ってたらその間は同時実行できないわけだから速くならないよ
899デフォルトの名無しさん:2010/11/24(水) 05:53:56
ありがとうございます。
やっと完成しました。
早すぎてびっくりです。
900デフォルトの名無しさん:2010/11/24(水) 17:11:10
へえ
901デフォルトの名無しさん:2010/11/24(水) 19:36:15
あはぁ
902デフォルトの名無しさん:2010/11/24(水) 19:52:08
ぶはっぶはっ
903デフォルトの名無しさん:2010/11/24(水) 19:55:42
どぴゅっどぴゅっ
904デフォルトの名無しさん:2010/11/24(水) 20:23:14
ほっほっ
905デフォルトの名無しさん:2010/11/24(水) 20:34:41
アッー!
906デフォルトの名無しさん:2010/11/24(水) 22:45:11
メリークリスマス! 素敵なイブしてるかい
907デフォルトの名無しさん:2010/11/25(木) 01:12:26
質問させて下さい。
配列に格納された英文があります。この英文の最初のみ大文字に、それ以外を小文字に変えてファイルに出力したいのですが、どのようにしたらよいのでしょうか。
英文の区切りはピリオドとしているのですが、複数の英文を配列に格納している場合、どのようにしたらいいのかわかりません。
一つの英文のみならtoupper関数などをそのまま利用するだけなのでしょうが、複数の英文を認識し、それぞれ変換させる方法がわかりませんでした。

Who are you. I am Tom.
というような感じの複数の英文が格納されています。

なお、ファイルへの出力そのものはできます。
908デフォルトの名無しさん:2010/11/25(木) 01:26:45
>>907
一例として、ざっくり書くなら

1.先頭文字を大文字にする
2.以降の文字を順に読み、どんどん小文字にしていく
3.ピリオドを発見したら1に戻る

こんな処理を文字列の最後まで繰り返すとかね
909デフォルトの名無しさん:2010/11/25(木) 01:36:11
>>908に加えて
読み込んだ文字がピリオドならheadフラグを立てる
その文字が英字なら
 headフラグが立っていれば大文字にしてフラグを消す
 立っていなければ小文字にする
英字でなければ(ピリオドの場合も)
 そのまま
文字列終端になるまで繰り返す
910デフォルトの名無しさん:2010/11/25(木) 07:24:33
Cのソースをフローチャートに起こして図示するものを作りたいのですが
条件分岐などはコンパイラの中身を理解していないと厳しいですかね
911デフォルトの名無しさん:2010/11/25(木) 07:27:33
いいえ
912デフォルトの名無しさん:2010/11/25(木) 09:15:36
今日も一日一あずにゃんペロペロ
913デフォルトの名無しさん:2010/11/25(木) 21:12:23
どん兵衛昔話!!
914デフォルトの名無しさん:2010/11/25(木) 21:18:24
糞スレ
915デフォルトの名無しさん:2010/11/25(木) 23:34:49
質問します


int flg=0,atk=0;

while( 「不明」 )
{
 flg ^= atk;
if( flg == 0 )
{
 character[1].nHP -= character[0].nAttack;
 printf("PHP %d \n", character[1].nHP );
}

if( flg == 1 )
{
 character[0].nHP -= character[1].nAttack;
 printf("敵HP %d \n", character[0].nHP );
}

}

互いにHPを削りあうプログラムを組んでるのですが、
マイナス値までいってしまいます。
マイナス値まで行かずに0で止めたいのですが、どうすればいいでしょうか?
お願いします。教えて下さい。
916デフォルトの名無しさん:2010/11/25(木) 23:42:42
>>915
character[1].nHP -= character[0].nAttack; のあとに
if (character[1].nHP <= 0) {
 character[1].nHP = 0;
 break;
}
を入れれば。
下の計算のあとにも。
917デフォルトの名無しさん:2010/11/25(木) 23:44:37
>>915
flg ^= atk; これだと、0と-1の繰り返しになるから
flg = !flg; で。
918デフォルトの名無しさん:2010/11/25(木) 23:47:01
>>916
ありがとうございます
おかげで解決しました

>>917
なるほど、ありがとうございます
919デフォルトの名無しさん:2010/11/26(金) 02:06:18
初歩的な事を聞いてさらにスレ違いかもしれなくて恐縮なのですが、
LinuxやBSDなどのシステムコールの表記方法としてopen(2)やexit(3)といったものがありますがカッコの中の数字はどういう意味なのでしょうか?
920デフォルトの名無しさん:2010/11/26(金) 02:10:44
man のセクションを表す、1はコマンド、2はシステムコール、3は関数、後は忘れた
921デフォルトの名無しさん:2010/11/26(金) 02:12:28
俺がついさっき始めて知ったことを >>919 が聞いているっ
同じスレにいたのかな
922デフォルトの名無しさん:2010/11/26(金) 02:26:05
>>920
ありがとうございます。
ということはカッコ内の数字でシステムコールか関数か判別できるということなのですね。

>>919
おそらく関係ないと思います。2-3日2ch開いてすらいないので…
923デフォルトの名無しさん:2010/11/26(金) 02:34:16
質問させてください
配列a[9]={1,3,2,5,8,4,0,9,0}があるとして
配列には1〜9の数字のどれかが入っているとして
配列の中にない数字6と7を出力したいんですが
やり方をおしえてください
924デフォルトの名無しさん:2010/11/26(金) 02:39:43
>>919
マニュアルの区分
標準コマンドとかC言語の関数とかで分けられてる
925デフォルトの名無しさん:2010/11/26(金) 02:51:10
>>923
まぁ、適当
ソートして隙間があったら表示
http://codepad.org/o2zq2j3d
926デフォルトの名無しさん:2010/11/26(金) 02:57:34
>>925 GJ!ありがとう
927デフォルトの名無しさん:2010/11/26(金) 02:59:33
>>923
普通は

int b[10] = 0;
int i;

for( i = 0; i < 9; i++ )
  b[a[i]]++;
for( i = 0; i < 10; i++ )
  if( ! b[i] ) printf( "%d\n", i );

ってやるんじゃない、a[] に10以上の数字が入ってたらアウトだけど
928927:2010/11/26(金) 03:04:52
× b[10] =10;
○ b[10] = {10};
929デフォルトの名無しさん:2010/11/26(金) 03:19:53
>>928 シンプルだ!ありがとう!
930デフォルトの名無しさん:2010/11/26(金) 03:22:21
VC++2008を使っています。
配列の初期化について質問があります。

test.Buffer[100] = 0.0;
構造体の中の配列を上のようにすると、中身が全て0.0にできていました。

インターネットや参考書には
test.Buffer[100] = {0.0};
とするように書いてあります。
しかしこちらでは構文エラーとなりコンパイルできません。

構造体の中の配列を一括で初期化する際、本当はどのように記述したらよいのでしょうか?
よろしくお願いいたします。
931デフォルトの名無しさん:2010/11/26(金) 03:28:53
>>930
それは初期化じゃなくて代入だよ
932デフォルトの名無しさん:2010/11/26(金) 03:42:51
>>931
納得しました!!
本当にありがとうございます。
933デフォルトの名無しさん:2010/11/26(金) 07:55:48
934デフォルトの名無しさん:2010/11/26(金) 14:23:47
>>932
いえいえ
935デフォルトの名無しさん:2010/11/26(金) 14:32:15
何を納得したのか本当に謎
おそらく根本的に勘違いしてる
936デフォルトの名無しさん:2010/11/26(金) 15:15:55
ほっほっ
937デフォルトの名無しさん:2010/11/26(金) 16:10:28
{}で一括代入できないとか正直、糞言語ですよね
938デフォルトの名無しさん:2010/11/26(金) 16:13:58
そうだな
別に無理して使わなくていいぜ
939デフォルトの名無しさん:2010/11/26(金) 17:31:38
釣れたw
940デフォルトの名無しさん:2010/11/26(金) 19:42:57
ほんとどうしようもないな
941デフォルトの名無しさん:2010/11/26(金) 20:24:39
純粋なC言語なら変数を宣言する以前に処理を記述することが出来ないだっけか
C++コンパイラでC使ってるから忘れちまったけど…
初期化はちょっと時間掛かるから使わないで済む場合は初期化しないってのが
始まりなのかな(今となっては読みにくくなるだけだから最初にmemsetとかしちゃうけどね)
942デフォルトの名無しさん:2010/11/26(金) 22:09:18
何を純粋と言ってるのかは知らんが変数宣言がブロック先頭に縛られる制約はC99で取っ払われた
943デフォルトの名無しさん:2010/11/26(金) 22:13:13
「C++ コンパイラで使う」という時点で C99 はない
944デフォルトの名無しさん:2010/11/26(金) 22:17:24
ほっほっ
945デフォルトの名無しさん:2010/11/26(金) 22:47:31
freadで格納する先の構造体を宣言するときって
普通に構造体を宣言する時となにか違うの?
946デフォルトの名無しさん:2010/11/26(金) 22:51:56
基本何も違わないけど
アライメントに気をつけないと想定していたサイズと違うサイズで読んじゃうことはあるかもね
947945:2010/11/26(金) 23:00:34
struct ○○ ○○[?];
948デフォルトの名無しさん:2010/11/26(金) 23:32:24
どぴゅっどぴゅっ
949デフォルトの名無しさん:2010/11/26(金) 23:35:27

「C++ クラスと継承完全制覇」 でCとC++の違いを垣間見る

                           ↓

「ロベールのC++入門講座」 でC++の文法など基礎を習得

                           ↓

「Effective C++」 でよりよいC++プログラムの記述法を学ぶ

                           ↓

「STL標準講座 標準テンプレートライブラリを利用したC++プログラミング」 でSTLを習得

                           ↓

「オブジェクト指向における再利用のためのデザインパターン」 で大規模プログラムの設計法について学ぶ

                           ↓

                      神を恐れぬ者の誕生
950デフォルトの名無しさん:2010/11/27(土) 00:17:22
ぶはっ!ぶはっ!
951デフォルトの名無しさん:2010/11/27(土) 00:52:04
初歩的な質問なんだが

chara cnt=’1’;
printf(“%d”,cnt);

49が表示されるのは何故?
952デフォルトの名無しさん:2010/11/27(土) 00:54:47
昔の人がそう決めたから
953デフォルトの名無しさん:2010/11/27(土) 01:00:03
int BottonCount;
int Part;

float i=1/Part*BottonCount;

Draw(float tx);って関数にiを突っ込もうとしてもうまくいきませんなぜ?
954デフォルトの名無しさん:2010/11/27(土) 01:00:33
キリッ
955デフォルトの名無しさん:2010/11/27(土) 01:16:36
>>951
Asciiコード表で1に割り当てられているコードを
%dで10進数で表示しているから
956デフォルトの名無しさん:2010/11/27(土) 01:25:53
float i=1.0/Part*BottonCount;
957デフォルトの名無しさん:2010/11/27(土) 01:39:33
ボットンカウント吹いたw
958デフォルトの名無しさん:2010/11/27(土) 01:43:47
>>953
なんなんじゃない?
959デフォルトの名無しさん:2010/11/27(土) 02:25:09
たとえば10000byteとか大量のBYTEデータをファイルに書き込むとき
fwrite ( data, 1, 10000, fp ) ;

fwrite ( data, 10000, 1, fp ) ;
だったらどっちがいいの?
なんか差はある?
960デフォルトの名無しさん:2010/11/27(土) 02:33:18
>>959
高々10KB程度、大差ないべさ。途中で失敗したときの戻り値は違ってくるけど。
961デフォルトの名無しさん:2010/11/27(土) 02:47:39
>>959
fwrite() のソース見ないと判らんね
結局は write() をコールするんだけど、write( fd, buf, size * n ) としてるのか write( fd, buf, size ) を n 回コールしてるのか
後者なら、>>959 の後者の方が良いのは明らかだ
962デフォルトの名無しさん:2010/11/27(土) 03:05:11
>>959
よく出る話題だわな。これ。

そういえばintelが「将来は1000コアのプロセッサを作るーー!!」とか言ってるそうで。
1byte を 1000回にして、1000個のコアに割り当てたら、1000倍速いじゃん! みたいな?

いや、どうもこの先コアあたりの速度ってムーアの法則みたいには行かないっぽいし? 多コアの時代になるだろうし?
963962:2010/11/27(土) 03:09:30
あ、でもよく考えたらプロセッサだけ一人で頑張っても、メモリとかバスとかの速度が追いつかないわな…(w

そのへん、どうなるんだろうか?やっぱメモリも1000枚差しとかになるのかね…w いや、wじゃなくて、ほんとに
964デフォルトの名無しさん:2010/11/27(土) 03:39:42
>>963
それ以前に read/write なら物理的な媒体の方が問題じゃね?
965デフォルトの名無しさん:2010/11/27(土) 09:13:52
if(a && b)
これはab共に真なら〜てことだけど
if(a & b)
てどういう意味?
966デフォルトの名無しさん:2010/11/27(土) 09:19:12
全ビットの論理積を計算して0出なければ真。
0x1 && 0x2 真
0x1 & 0x2  疑
0x2 & 0x2  真
0xF & 0x2  真

967デフォルトの名無しさん:2010/11/27(土) 09:25:52
おーきに
968デフォルトの名無しさん:2010/11/27(土) 09:35:40
偽じゃなくて疑かよw
969デフォルトの名無しさん:2010/11/27(土) 11:27:13
>>964
バッファリングについて調べるといいよ
970デフォルトの名無しさん:2010/11/27(土) 11:48:39
>>969
知らないとでも?
971デフォルトの名無しさん:2010/11/27(土) 12:18:30
疑ってw
972デフォルトの名無しさん:2010/11/27(土) 13:50:05
今勉強してるソースに
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
ってゆうのが出てくるんだけど
このprintfは何かを比べてその結果から'Y'か'N'を出力してるの?
973デフォルトの名無しさん:2010/11/27(土) 13:54:10
c_file.attrib & _A_RDONLY が真なら"Y"、偽なら"N"をprintfの引数として渡している
974デフォルトの名無しさん:2010/11/27(土) 13:55:50
>>972
c_file.attrib と _A_RDONLYをビット単位でAND演算して、結果が0以外であればY、0ならNが表示される
ビット演算と条件演算子でググると知りたいことが書いてあると思う
975デフォルトの名無しさん:2010/11/27(土) 13:56:53
putchar((c_file.attrib & _A_RDONLY) ? 'Y' : 'N')にするべき状況だな。
あー、空白も必要か。
それなら
printf(" %c ", (c_file.attrib & _A_RDONLY) ? 'Y' : 'N');だな。
976デフォルトの名無しさん:2010/11/27(土) 14:04:44
処理としてはprintf(" Y ");の方がprintf(" %c ", 'Y');より軽そうに見えるけど、
実際はどうなの?
977972:2010/11/27(土) 14:11:56
あーなるほど
処理の重い軽いはまだよく分からんが
使い方としては理解できた
ありがとう。
978デフォルトの名無しさん:2010/11/27(土) 14:18:32
>>976
フォーマット文字列のない場合printfじゃない別の関数に置き換えるコンパイラとかあるらしいが
979デフォルトの名無しさん:2010/11/27(土) 14:45:20
>>976
重さよりも、通常使用における安全をとって、第一パラメータを可変にするのを避けた。この場合は問題にはならないけどね。

>>978
「フォーマット文字列のない場合」なんて有り得ないので何を言いたいのか判らない。
フォーマット指定がある場合でも例えば、gccはprintf("%s\n", foo)をputs(foo)に置き換えるね。
980デフォルトの名無しさん:2010/11/27(土) 15:36:59
ふ〜ん
981デフォルトの名無しさん:2010/11/27(土) 17:20:26
で?
982デフォルトの名無しさん:2010/11/27(土) 19:47:40
>>979
死ね
983デフォルトの名無しさん:2010/11/27(土) 20:32:33
次スレ立てます
984デフォルトの名無しさん:2010/11/27(土) 20:33:50 BE:198810037-S★(532000)
次スレ立てました
C言語なら俺に聞け(入門編)Part 74
http://hibari.2ch.net/test/read.cgi/tech/1290857610/
985Perl忍者◇35I122rnS2:2010/11/27(土) 20:35:19
Cにコンプレックス持ってましたがもう一度勉強します。
良いサイトおしえてください
986デフォルトの名無しさん:2010/11/27(土) 20:48:20
987デフォルトの名無しさん:2010/11/27(土) 21:23:10
>>979
なるほど printf() 内ではフォーマット文字列終端に \n が有るか無いかで分岐が有るんですね


無いと思います
988デフォルトの名無しさん:2010/11/27(土) 21:30:59
だって puts は自動的に改行を追加するから、そうじゃなきゃ実行結果が変わってしまう
989デフォルトの名無しさん:2010/11/27(土) 21:37:26
printf() 内部では putc() をコールしてるのかな?それとも直接 write() をコールしてるのかな?
誰か知ってる人居ますか?
990デフォルトの名無しさん:2010/11/27(土) 21:40:59
答えに困ること聞くんじゃありません
991デフォルトの名無しさん:2010/11/27(土) 21:42:37
>>987
printf内で処理が分岐してるわけじゃなくて
コンパイル時にprintfをputsに置き換えてるだけだからなあ
992デフォルトの名無しさん:2010/11/27(土) 21:59:52
>>987
置き換えになってねえだろバカ
993デフォルトの名無しさん:2010/11/27(土) 22:57:32
>>984
乙梅
994デフォルトの名無しさん:2010/11/27(土) 23:31:11
>>987
やってみろよ、間抜け
995デフォルトの名無しさん:2010/11/28(日) 00:07:18
 ┌○┐
 │お|ハ,,ハ
 │断|゚ω゚ )  お断りします
 │り _| //
 └○┘ (⌒)
    し⌒
996デフォルトの名無しさん:2010/11/28(日) 05:57:21
ume
997デフォルトの名無しさん:2010/11/28(日) 10:43:11
やっぱり、このシリーズ糞だった
しかも途中で忍者が現れて荒し始めるし

トンでもテクニックワロタ
998デフォルトの名無しさん:2010/11/28(日) 15:53:52
>>998 なら宝くじが当たる
999デフォルトの名無しさん:2010/11/28(日) 15:54:35
>>999 なら背が伸びる
1000デフォルトの名無しさん:2010/11/28(日) 15:55:26
>>1000 なら彼女ができる
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。