トップページ⇒tech
1001コメント245KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG?S★(531777)
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++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん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《                    〔
0003デフォルトの名無しさん2010/11/06(土) 23:59:43
糞スレ
0004デフォルトの名無しさん2010/11/07(日) 15:40:08
俺は今せぐふぉにつまづいている
0005デフォルトの名無しさん2010/11/08(月) 08:08:20
Segmentation Fault
0006デフォルトの名無しさん2010/11/08(月) 08:32:03
ABEND S0C4
0007デフォルトの名無しさん2010/11/08(月) 14:28:51
バカな質問すみません

char *str;

scanf("%s", str);

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

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

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

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

                           ↓

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

                           ↓

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

                           ↓

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

                           ↓

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

p[0]にはいってるのはa[0]のアドレスが入ったアドレス
0023デフォルトの名無しさん2010/11/08(月) 23:59:20
>>21 ポインタ変数の配列は関数に引渡しできるのか、しらなかったです
>>22はどういう意味ですか?
0024デフォルトの名無しさん2010/11/09(火) 00:03:11
*(p) == *p == p[0] == &a[0] == a
0025デフォルトの名無しさん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))
0026デフォルトの名無しさん2010/11/09(火) 00:30:23
>>11
俺的には本気でポインタ完全制覇がお勧めだな。
騙されたと思って読んでみて欲しい
0027デフォルトの名無しさん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])

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

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

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

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

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


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

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

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

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

具体的に書き直すと、どんな感じでしょうか?
0051デフォルトの名無しさん2010/11/09(火) 12:07:21
>>49
さすがだな
>>50
自分で考える気が微塵もないなら宿題スレ行け
0052デフォルトの名無しさん2010/11/09(火) 12:14:19
>>49
最近の分岐予測はかなり高精度と聞くが……これはなかなか
0053デフォルトの名無しさん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;
}
0054デフォルトの名無しさん2010/11/09(火) 13:10:20
ひでえなw
0055デフォルトの名無しさん2010/11/09(火) 13:14:42
>>51
宿題スレに来てた子だよ
0056デフォルトの名無しさん2010/11/09(火) 18:27:32
>>53
基地外に回答しやがって
0057デフォルトの名無しさん2010/11/09(火) 18:37:20
>>53
クソコード垂れてんじゃねーよ。書き直してこい。
0058デフォルトの名無しさん2010/11/09(火) 20:45:13
C#にはデストラクタとファイナライザがあるそうですが、違いを教えてください
そして、使い分け方も教えてください
0059582010/11/09(火) 20:46:02
ごめん、誤爆した
0060デフォルトの名無しさん2010/11/09(火) 20:46:41
分からないなら書き込まないでください。
他のスレにもあたってみますので・・・
0061デフォルトの名無しさん2010/11/09(火) 20:49:22
どうぞどうぞ
0062デフォルトの名無しさん2010/11/09(火) 20:53:35
>>61
日本語が読めませんか?
知らないならレスしないでください迷惑ですこのスレの総意です。
人にれすんする前に日本語を勉強汗。
0063デフォルトの名無しさん2010/11/09(火) 20:54:38
釣れますか
0064デフォルトの名無しさん2010/11/09(火) 20:54:56
>人にれすんする
>人にれすんする
>人にれすんする
0065デフォルトの名無しさん2010/11/09(火) 20:55:58
すぐに釣り認定する馬鹿がこのスレにもいるものだなぁ。
0066デフォルトの名無しさん2010/11/09(火) 21:23:50
>>64
そこより勉強汗の方が気になった
0067デフォルトの名無しさん2010/11/09(火) 22:33:11
>>65
だってマって最底辺者の職種ITドカタが超多いんだからしょうがないよ
0068デフォルトの名無しさん2010/11/09(火) 22:37:43
釣れますか
0069デフォルトの名無しさん2010/11/09(火) 22:44:46
>>68
あなた、どかたでしょ
0070デフォルトの名無しさん2010/11/09(火) 22:46:17
C言語でヘッダファイルを利用するときは、externを付けないとダメなんですか?
hoge.h
extern void hoge(); ←何が違うの?
void hoge(); ←これと

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

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

説明が下手なんで分からんかな。
0075デフォルトの名無しさん2010/11/10(水) 00:39:58
結局実値まで言及しなければいけないのか
なんとなくだけどわかりました
0076デフォルトの名無しさん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|<ε



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

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

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

こういうのってできるのか?
0079デフォルトの名無しさん2010/11/10(水) 20:56:08
できる
0080デフォルトの名無しさん2010/11/10(水) 20:57:23
>>79
まじかー
簡単なプログラムきぼんぬ
0081デフォルトの名無しさん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;
}
0082デフォルトの名無しさん2010/11/10(水) 22:10:37
ありがとうございました。無事にできました。
0083デフォルトの名無しさん2010/11/10(水) 22:55:09
まじかーーー
0084デフォルトの名無しさん2010/11/10(水) 23:35:26
どうもー
0085デフォルトの名無しさん2010/11/10(水) 23:36:20
いえいえ
0086デフォルトの名無しさん2010/11/11(木) 00:49:19
8bitの2進数で、

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

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

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

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

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

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

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

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

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

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

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

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

>>117
知識がないなら黙ってろ。少なくとも、下から2行目は見当違いだ。
0121デフォルトの名無しさん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"には構造の定義だけしか書いてません。
教科書ではこのようにプロトタイプ宣言が書いておらず、それにも関わらず
実行可能です。なぜですか

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

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

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

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

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

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

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

こういう単にファイルを読み込んでコンソールに出力するプログラムなんですが、
読み込んだ文字列の頭に「・ソ」っていうゴミがいつもくっつくんです。
原因は何でしょうか?
0152デフォルトの名無しさん2010/11/12(金) 21:42:04
コードがC++だけど
bom付きのファイルじゃないかね
0153デフォルトの名無しさん2010/11/12(金) 21:56:15
>>148
嫌がらせのつもりじゃないがなんで質問する前にやって見ないのかが理解できない。
0154デフォルトの名無しさん2010/11/12(金) 21:59:19
>>78をちょっとやってみました
ttp://codepad.org/lQMNnmtQ
これでいいですか?最後が・・・
0155デフォルトの名無しさん2010/11/12(金) 22:23:30
>>154
もう少しシンプルになるんじゃないかね?
ttp://codepad.org/BOJN1X92
0156デフォルトの名無しさん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;
}
0157デフォルトの名無しさん2010/11/12(金) 22:33:43
>>155-156
ありがとうございます
まだまだ未熟でした
0158デフォルトの名無しさん2010/11/12(金) 22:36:02
複数ファイルをアップしたいんですがなんかいいサイトないですか?
0159デフォルトの名無しさん2010/11/12(金) 22:40:44
グラフとかgnuplot使えよ
0160デフォルトの名無しさん2010/11/12(金) 22:45:26
ふっ!
0161デフォルトの名無しさん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;
}
0162デフォルトの名無しさん2010/11/12(金) 23:03:05
全然 >>78 になってないんだが。
これだからゆとりは困る。
0163デフォルトの名無しさん2010/11/12(金) 23:13:10
>>78
おおあじなグラフ
http://codepad.org/1fmYgvQf
0164デフォルトの名無しさん2010/11/12(金) 23:21:10
>>158なんですが

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

という構造体があって、bのメモリ領域をmain関数内で動的に確保するにはどうすればいいですか?
0169デフォルトの名無しさん2010/11/13(土) 00:02:31
>>168
struct a x;
x.b = (int *)malloc(       );
じゃだめ?
0170デフォルトの名無しさん2010/11/13(土) 00:06:04
>>169
もしもbに確保した領域が構造体aのサイズより大きいサイズになっても問題とか起きないんですかね・・・
0171デフォルトの名無しさん2010/11/13(土) 00:07:06
C言語でセレクトボックスを出すことはできますか?
ありましたらヒントをお願いします。
0172デフォルトの名無しさん2010/11/13(土) 00:08:07
>>170
bはポインタ
つまり、構造体の外のどこかに確保したメモリ領域を「指している」だけ。
struct aのサイズは関係ないよ
0173デフォルトの名無しさん2010/11/13(土) 00:11:25
コンソールということならncursesで頑張ればできなくもない
0174デフォルトの名無しさん2010/11/13(土) 00:13:49
>>170
http://codepad.org/cUSf1lJB
確保したからってbのサイズが変わるわけではないよ。
0175デフォルトの名無しさん2010/11/13(土) 00:32:27
>>172>>174
ありがとうございます
そうなんですね・・・
もう少し勉強します
0176デフォルトの名無しさん2010/11/13(土) 00:45:50
>>152
ありがとうございます
新規作成からちゃんとテキストファイル作ったら大丈夫でした
0177デフォルトの名無しさん2010/11/13(土) 12:22:23
これだからゆとりは
0178デフォルトの名無しさん2010/11/13(土) 12:52:21
それは言い過ぎ
0179デフォルトの名無しさん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の動きについて教えてください
0180デフォルトの名無しさん2010/11/13(土) 13:54:10
>>179
printf の前に
if(p==NULL) break;
をいれればおk
0181デフォルトの名無しさん2010/11/13(土) 14:07:33
fgetの仕組みも教えてください
while(p!=NULL)
{
p=fgets(s,500,fp);

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

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

ある程度できるようになったけど、完全にできるようになったわけではない…
他のC派生行こうとと思うのですが(C#を勉強しようと思ってます)、C言語を完全に理解できているわけではありません
コンパイラの仕組みとかソースファイル分割とかがよくわかっていません
このまま他の言語行っても大丈夫でしょうか?つまずきそうですごく怖いんです・・・
0185デフォルトの名無しさん2010/11/13(土) 14:17:27
これでいいじゃん
while(fgets(s,500,fp)!=NULL){ printf("%s", s); }
0186デフォルトの名無しさん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 )
でも問題ない
0187デフォルトの名無しさん2010/11/13(土) 14:18:52
つまづいた時に調べればいいじゃん
0188デフォルトの名無しさん2010/11/13(土) 14:20:21
うーん、よく分からんが何故最初に使わないC言語を選んだんだと小一時間。

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

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

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

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

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

厳密さが必要な場合は、バイトを使わずにビットのみで表現するか
あるいは(特にネットワーク分野では)オクテットを使ったり
0258デフォルトの名無しさん2010/11/14(日) 02:03:42
ニブル
0259デフォルトの名無しさん2010/11/14(日) 02:05:27
>>256
じゃあCASL2の1バイトは何ビット?
0260デフォルトの名無しさん2010/11/14(日) 03:50:52
Shift JISが使えるフリーのC言語のコンパイラってどれがいいの?
0261デフォルトの名無しさん2010/11/14(日) 04:26:58
どれでも使えるよ。
0262デフォルトの名無しさん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 だと、最後という意味になる。
02632622010/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 のアドレスが入る。
02642622010/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 になる。
02652622010/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
という具合に、リストのリストも、わりと単純に書けそうな気がする。
0266デフォルトの名無しさん2010/11/14(日) 05:05:19
>>260
オススメはいつでも Turbo-C 2.01 だよ。
02672622010/11/14(日) 05:07:51
だれか実際に動作するコードに翻訳してくれるとうれしいです。
0268デフォルトの名無しさん2010/11/14(日) 06:36:44
宿題なら宿題スレへどうぞ
0269デフォルトの名無しさん2010/11/14(日) 09:52:04
なんでさ、C言語って速いわけ
他の言語も昔からあるけど、それらの言語よりも速いの
0270デフォルトの名無しさん2010/11/14(日) 10:11:34
Fortranのが速いよ
0271デフォルトの名無しさん2010/11/14(日) 10:12:36
アセンブラは爆速
0272デフォルトの名無しさん2010/11/14(日) 10:44:44
Fortranの方が速いって言うけどCの最適化性能も上がってるし実際あんまり変わらん
0273デフォルトの名無しさん2010/11/14(日) 10:55:34
昔、先生が言ってたんだけど
アセンブラで書いたコードが速度でC言語に負けたらしい
Cコンパイラ>先生の脳みそ
0274デフォルトの名無しさん2010/11/14(日) 11:57:23
>>273
12,3年前にアセンブラの高速化の本を読んだら、ペアリングがどうとか
分岐予測がどうとか、すでについていけない世界だった。
0275デフォルトの名無しさん2010/11/14(日) 13:55:21
不思議サイト見つけたw

ttp://www5f.biglobe.ne.jp/~mitarou_mutarou/index.html
0276デフォルトの名無しさん2010/11/14(日) 17:18:35
配列→ポインタは出来ますが、
ポインタ→配列はできるのですか?
0277デフォルトの名無しさん2010/11/14(日) 17:23:05
>>276
できるってどういう意味だろう。
[]でアクセスならできるけど。
0278デフォルトの名無しさん2010/11/14(日) 17:28:33
>>273
レジスタ割り付けとかごく低レベルな部分については
最適化コンパイラが人間を超えることも多い

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

int n[10] ;
int* p ;

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

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

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

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

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

>>296
C++だけどポインタだから、C言語スレに質問をしてたの
0298デフォルトの名無しさん2010/11/14(日) 18:34:20
個数じゃなくて、NULLを終端に使ってるんじゃあ?
0299デフォルトの名無しさん2010/11/14(日) 18:36:35
共用体で、基本的なブロックサイズ単位が決められてて、各ブロックはヘッダーにも領域にも使えるってことでは?
mallocで得たメモリの先頭アドレスから、基本ブロックサイズ分だけ戻ったアドレスに、確保された領域サイズの情報が入ってる実装が
おそらくいちばん素直な実装だと思う。だからfree89はサイズを必要としないのだと思う。
03002992010/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)
0301デフォルトの名無しさん2010/11/14(日) 18:59:13
[-4]あたりに確保したサイズが入ってたような
環境によって違うだろうけど
0302デフォルトの名無しさん2010/11/14(日) 19:08:22
>>300
他のメモリブロックと兼ね合いがあるから、勝手にサイズ変更したらうまくいかないだろ。
0303デフォルトの名無しさん2010/11/14(日) 19:13:27
*(p-1) = 0xFF;

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

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

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

こんな事しても平気かな(何もメリット有りませんが2)
0306デフォルトの名無しさん2010/11/14(日) 20:01:42
>>305
メリットない以前に、動かなくなるんじゃないか?
0307デフォルトの名無しさん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の動作に問題が生じるはずだと思います。
基本ブロックのサイズ次第だと思います。(そもそも、基本ブロックなんてものが本当に使われてるかどうかもわかりません。まったくの仮定の話です。もしかしたら別テーブルがあるのかもしれませんし…)
0308デフォルトの名無しさん2010/11/14(日) 20:22:32
>>300
exploitじゃねーか
0309デフォルトの名無しさん2010/11/14(日) 20:22:46
>>306
malloc() をキャストしてない点に突っ込んだのなら細かい奴だな

一応確認したけど動くよ、p + 3 は p に割り当てられてるから何の問題も無い
確認して気が付いたんだけど bcc の場合は malloc の最低単位は 12Byte みたいだ
つまり p[11] までは使えるって事だね(そんな実装したら殺されるけど)
0310デフォルトの名無しさん2010/11/14(日) 20:27:58
問題ないわけ無いだろアホ
0311デフォルトの名無しさん2010/11/14(日) 20:30:24
何の問題も無いとかほざくアホは死ね
0312デフォルトの名無しさん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だからサイズと領域以外は存在しない
0313デフォルトの名無しさん2010/11/14(日) 20:38:33
×p0のサイズが0x10でp1のサイズの0x04を足した0x14がp1-p0だからサイズと領域以外は存在しない 
○p0のサイズが0x10でp1のサイズ領域の0x04を足した0x14がp1-p0だからサイズ領域と確保領域以外は存在しない 
0314デフォルトの名無しさん2010/11/14(日) 20:40:28
>>310 >>311
倫理的とかの問題は有るけど、物理的な問題は無いって話だぉ
物理的に問題が有るならどういうケースか教えてほしいな
0315デフォルトの名無しさん2010/11/14(日) 20:41:26
死ね
0316デフォルトの名無しさん2010/11/14(日) 20:58:45
殺伐としてんな〜
0317デフォルトの名無しさん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 と、単位が異なるようですね。
これだと、メモリ領域を未使用領域として再設定する場合など、フラグ関係をどこでどのようにやっているのか想像つきません。
管理用にわざわざ別テーブルを用意するなら、管理情報もふくめて、共用体としてサイズ等のヘッダに項目を作ってしまった方が単純で良いような気が。はて?
0318デフォルトの名無しさん2010/11/14(日) 21:55:41
使用中と未使用の2種類しかないんですから、サイズが負の場合は未使用とか、いくらでもやりようがあります
そのサイズぶんだけ進んだところが次のブロックなのだからサイズさえわかれば先頭から順に全ブロック辿れますし
性能さえ気にしなければ、他に何の情報も要らないと思いますが
0319デフォルトの名無しさん2010/11/14(日) 22:14:17
C言語自体と特に関係のない特定のコンパイラの実装の話は他所でやってくれ。

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

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

開始アドレスより小さいアドレスへのアクセスなんて全く定義されていない。
0329デフォルトの名無しさん2010/11/14(日) 23:43:11
釣られたー!w
0330デフォルトの名無しさん2010/11/14(日) 23:47:03
規格に頼ってるようじゃアマだな。
組み込みシステムでは「規格に書いてないから・・・」とか通用しない。アドレスじかうち。
0331デフォルトの名無しさん2010/11/14(日) 23:48:08
アドレス直打ちは規格の範囲内。
0332デフォルトの名無しさん2010/11/14(日) 23:48:22
>>328
ソース
0333デフォルトの名無しさん2010/11/14(日) 23:49:45
>>331
*0xFFFFFFFFFFFFFFFFFFFF = 0;
0334デフォルトの名無しさん2010/11/14(日) 23:49:48
>>332
ISO/IEC 9899:1999
0335デフォルトの名無しさん2010/11/14(日) 23:51:02
>>334
馬鹿発見。w
0336デフォルトの名無しさん2010/11/14(日) 23:53:22
規格は根拠にならないと何度言えば(ry
0337デフォルトの名無しさん2010/11/14(日) 23:54:10
規格が根拠にならない話は、C言語の話ではないので、他のスレでお願いします。
0338デフォルトの名無しさん2010/11/15(月) 00:16:45
えwwwwww
0339デフォルトの名無しさん2010/11/15(月) 00:19:15
>>337は単なるage厨だろ。単発だし。
0340デフォルトの名無しさん2010/11/15(月) 01:11:00
んでC言語のコンパイラはどれを使えばいいの?
0341デフォルトの名無しさん2010/11/15(月) 01:14:18
>>340
VC#
0342デフォルトの名無しさん2010/11/15(月) 01:21:49
>>340
Turbo-C 2.01 がオススメだっつってんだろがよ。
0343デフォルトの名無しさん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/
0344デフォルトの名無しさん2010/11/15(月) 01:23:32
ごめん誤爆
0345デフォルトの名無しさん2010/11/15(月) 01:24:11
>>343
自己参照発見
0346デフォルトの名無しさん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したいのです。
私の頭は大丈夫でしょうか。
0347デフォルトの名無しさん2010/11/15(月) 01:32:22
>>342
その理由は?
0348デフォルトの名無しさん2010/11/15(月) 01:37:22
>>346
誘導されて来たみたいだけど、
テンプレ視てくれると分かるがC++は特別扱いなんですわ

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

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

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


puts(p);
}

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

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

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

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

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

}

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

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

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

ができるなら、同様に、

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

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

http://ideone.com/DnU3E
0400デフォルトの名無しさん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

です。
0401デフォルトの名無しさん2010/11/15(月) 23:32:52
>>400
コピペスレから転載乙。
0402デフォルトの名無しさん2010/11/15(月) 23:36:29
なんでこのスレに貼ったんだろうかな
氏ねばいいのに
0403デフォルトの名無しさん2010/11/15(月) 23:38:26
読解力の無い素人と呼ばれて逆ぎれしたんだろ。
0404デフォルトの名無しさん2010/11/16(火) 03:09:09
実行ファイルのサイズをなるべく小さくしたいんだけど
そういう用途に向いてるC言語のコンパイラって何があるの?
0405デフォルトの名無しさん2010/11/16(火) 03:18:10
コンパイルって言うか最適化次第
まぁ、いくら最近のコンパイラが頭いいからって
予め小さくなるようなコードで書いとかないと最適化きかないけどな
0406デフォルトの名無しさん2010/11/16(火) 03:26:12
>>404
Turbo-C 2.01 が最適だよ。
0407デフォルトの名無しさん2010/11/16(火) 07:17:02
mainstartupをお気軽にいじれる環境と方向付ければgccが一番小さくしやすいかな
0408デフォルトの名無しさん2010/11/16(火) 11:38:52
ふっふっ
0409デフォルトの名無しさん2010/11/16(火) 12:24:40
ほっはっ
0410デフォルトの名無しさん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);の意味がよくわかりません
説明をお願いします
0411デフォルトの名無しさん2010/11/16(火) 14:43:17
>>410
sum += prime(i);はsum = sum + prime(i);と同じ。
int prime(int n)の何がわからないのだ?
%は剰余(割った余り)。
0412デフォルトの名無しさん2010/11/16(火) 15:15:45
意味がよくわかりませんね
0413デフォルトの名無しさん2010/11/16(火) 15:28:28
やめてしまえ
0414デフォルトの名無しさん2010/11/16(火) 17:44:22
int prime(int n)
まずこいつが何をしてるか考えるんだ。
関数単位で物事を見れるようにならないとダメだぞ
0415デフォルトの名無しさん2010/11/16(火) 17:46:59
って上にコメントあるじゃねーかwww
悪かった。
プログラム辞めた方がいい
0416デフォルトの名無しさん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;
}
こうしても分からんか?
0417デフォルトの名無しさん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;
0418デフォルトの名無しさん2010/11/16(火) 18:33:39
釣りだろいくらなんでも。
0419デフォルトの名無しさん2010/11/16(火) 19:27:58
プログラムは、やれば出来る って言うけど
「それは素質のある人が言う言葉」って誰かが言ってたな
412には素質がないんだ諦めろ
0420デフォルトの名無しさん2010/11/16(火) 20:34:28
関数を知らないだけなのだと思うのだが
0421デフォルトの名無しさん2010/11/16(火) 20:52:54
素数の一般項出せよおう早くしろよ
0422デフォルトの名無しさん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です。
参考になるサイト等教えて頂けないでしょうか?
0423デフォルトの名無しさん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.
0424デフォルトの名無しさん2010/11/16(火) 21:22:59
>>422
80386以上のCPUではローテート・シフト回数を指定できるが、
32回を超えてシフトした場合の結果は未定義
0425デフォルトの名無しさん2010/11/16(火) 21:25:23
>>424
>>423
0426デフォルトの名無しさん2010/11/16(火) 21:28:24
>>422
IA-32 インテルR アーキテクチャ・
ソフトウェア・デベロッパーズ・
マニュアル
中巻:
命令セット・リファレンス

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

つまり32を5ビットでマスクすると0になってしまう
0427デフォルトの名無しさん2010/11/16(火) 21:30:29
>>426
>>423
0428デフォルトの名無しさん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.
0429デフォルトの名無しさん2010/11/16(火) 21:32:00
>>428
>>423
0430デフォルトの名無しさん2010/11/16(火) 21:32:29
>>428
しつこいカス
0431デフォルトの名無しさん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ビット以上シフトした結果は未定義だからです
の意味が分かった気がします。
0432デフォルトの名無しさん2010/11/16(火) 21:34:23
425 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

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

429 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
0433デフォルトの名無しさん2010/11/16(火) 21:42:15
Intel系のマップがどうなってるか分かってるけど
脳内でメモリマップするとZiLOG系でマップしてしまうな
変換するから別に困らんけどね
0434デフォルトの名無しさん2010/11/16(火) 21:43:35
428=432
0435デフォルトの名無しさん2010/11/16(火) 21:47:06
>>434
正しいかどうかも分からないサイトのURL貼るなや
0436デフォルトの名無しさん2010/11/16(火) 22:00:28
http://codepad.org/ti3PvNR9
エラーがでます 文法がおかしいのでしょうか
0437デフォルトの名無しさん2010/11/16(火) 22:04:42
全角スペースが入ってる点がおかしいです
0438デフォルトの名無しさん2010/11/16(火) 22:10:35
>>435
よっぽど悔しかったのか
0439デフォルトの名無しさん2010/11/16(火) 22:13:01
>>438
悔しいとかの問題ではなくて信用にもとる真似をするなという事
0440デフォルトの名無しさん2010/11/16(火) 22:18:47
>>439
必死すぎ
0441デフォルトの名無しさん2010/11/16(火) 22:39:23
規格至上主義の人間にはよくあること
0442デフォルトの名無しさん2010/11/16(火) 22:49:40
なんで規格貼る人って英語なの。
JISのを貼ればいいじゃん。
0443デフォルトの名無しさん2010/11/16(火) 22:51:52
>>442
できますか?
0444デフォルトの名無しさん2010/11/16(火) 22:54:43
英語読める俺すげぇーをやりたいだけ。
言わせんな恥ずかしい。
0445デフォルトの名無しさん2010/11/16(火) 22:56:51
>>442
JISに合致してると明言してる処理系使ってないくせに
0446デフォルトの名無しさん2010/11/16(火) 22:58:30
>>442
クレクレ乙
0447デフォルトの名無しさん2010/11/16(火) 23:14:14
>>433
最初に覚えたのが標準になっちゃうんだよな。
0448デフォルトの名無しさん2010/11/16(火) 23:31:15
マップって何?
0449デフォルトの名無しさん2010/11/16(火) 23:38:25
辞書型のこと
0450デフォルトの名無しさん2010/11/16(火) 23:39:02
>>449
あ?
0451デフォルトの名無しさん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 はググるとみつかるのですが、日本語のは転がっていないようです。
0452デフォルトの名無しさん2010/11/16(火) 23:53:25
ヤクザな商売だな。
送料だけで良いだろ
0453デフォルトの名無しさん2010/11/16(火) 23:56:21
給料をもらったことがない奴は楽でいいな。
0454デフォルトの名無しさん2010/11/16(火) 23:57:02
こんなふうにchar *a="abcdefghijkz";
ポインタ変数に文字列を代入してputs()やprintf()で個々の文字を出力する
ことってできないんですか 配列で宣言せずに
0455デフォルトの名無しさん2010/11/16(火) 23:58:25
無理です
0456デフォルトの名無しさん2010/11/16(火) 23:59:18
無理ぽ
0457デフォルトの名無しさん2010/11/17(水) 00:00:40
俺にはできる
Intelだからな
0458デフォルトの名無しさん2010/11/17(水) 00:04:14
puts は無理だが printf ならできる
0459デフォルトの名無しさん2010/11/17(水) 00:05:52
>>458は%cを使うと予想
0460デフォルトの名無しさん2010/11/17(水) 00:07:45
fwrite()でもできるんじゃないか?
0461デフォルトの名無しさん2010/11/17(水) 00:09:15
writeでもできる
outでもできる
0462デフォルトの名無しさん2010/11/17(水) 00:10:12
標準関数を使う方向でお願いします。
0463デフォルトの名無しさん2010/11/17(水) 00:12:17
全部標準関数なんだが
0464デフォルトの名無しさん2010/11/17(水) 00:15:47
VCだとアンダーバー付になってしまいます。
0465デフォルトの名無しさん2010/11/17(水) 00:19:38
(゚Д゚ )ハァ?
0466デフォルトの名無しさん2010/11/17(水) 00:20:26
aの中身は配列でも参照できるでしょ
0467デフォルトの名無しさん2010/11/17(水) 00:20:41
ほらできたぞ
http://codepad.org/3yfY7XhB
0468デフォルトの名無しさん2010/11/17(水) 00:20:55
>>460 は標準。>>461 は非標準。
どっちにしろ質問の意図から外れる。
printf でできるんだから解答は既に出てる。
0469デフォルトの名無しさん2010/11/17(水) 00:20:59
>>465
http://msdn.microsoft.com/ja-jp/library/1570wh78(VS.80).aspx
0470デフォルトの名無しさん2010/11/17(水) 00:22:04
>>465
まじでwrite()とかout()とか標準関数と思ってたのか。
0471デフォルトの名無しさん2010/11/17(水) 00:22:07
大真面目に返答しちゃってる>>468ってどうしちゃったの?
0472デフォルトの名無しさん2010/11/17(水) 00:24:45
C言語ってこんな感じでいいんじゃない?
入門書 適当な本
実用書 Cリファレンスマニュアル コーディングルール本 セキュアプログラミング本
教養書 K&R
娯楽書 エキスパートC
0473デフォルトの名無しさん2010/11/17(水) 00:25:11
↑いきなり何www
0474デフォルトの名無しさん2010/11/17(水) 00:28:26
どういうルートでおぼえたらwrite()を標準関数って勘違いしたままで
いられるんだろ。
入門書とか読まないで、ネットとかで偏ったおぼえ方でもしたのかね。
0475デフォルトの名無しさん2010/11/17(水) 00:28:27
>>467
設問を満4回は熟読して読み直せ。
0476デフォルトの名無しさん2010/11/17(水) 00:29:11
釣れたw
0477デフォルトの名無しさん2010/11/17(水) 00:30:22
熟読して読み直せ。
0478デフォルトの名無しさん2010/11/17(水) 00:31:33
満4回は熟読して読み直せ。
0479デフォルトの名無しさん2010/11/17(水) 00:32:44
>>476
満4回は熟読して読み直せ。
0480デフォルトの名無しさん2010/11/17(水) 00:34:24
>>479
満4回は熟読して読み直せ。
0481デフォルトの名無しさん2010/11/17(水) 00:35:14
>>480
満4回は熟読して読み直せ。
0482デフォルトの名無しさん2010/11/17(水) 00:35:35
>>481
満4回は熟読して読み直せ。
0483デフォルトの名無しさん2010/11/17(水) 00:35:52
>>472
「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                           ↓

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

                           ↓

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

                           ↓

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

                           ↓

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

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

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

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

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

ねえ「君逮捕だよwww

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

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

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

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

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

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

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

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


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

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

パステル調化のアルゴリズムはもうちょっと工夫したほうがいいかもしれません。
(現状、単に色あせた感じになっているだけ、という気が‥‥‥)
0561デフォルトの名無しさん2010/11/17(水) 23:26:13
◆QZaw55cn4cは自分の巣に引きこもってて下さい
0562デフォルトの名無しさん2010/11/17(水) 23:32:12
隔離した意味ねーじゃんか
ここ来るならせめてコテハン外せよ
0563デフォルトの名無しさん2010/11/17(水) 23:35:47
>>528 で呼ばれたようなので、つい。
0564デフォルトの名無しさん2010/11/17(水) 23:38:24
誘導して本人が行かなかったんだし呼んでもねえよ
0565デフォルトの名無しさん2010/11/17(水) 23:44:04
>>563なんかきもちわるい
0566デフォルトの名無しさん2010/11/17(水) 23:56:31
画像処理 その12
http://hibari.2ch.net/test/read.cgi/tech/1247100724/815-816
0567デフォルトの名無しさん2010/11/18(木) 01:12:59
死ねって言うのと殺すぞって言うのとあんまり違いが無い気がするが…
コテハン忍者がキモイのは分かったが
0568デフォルトの名無しさん2010/11/18(木) 01:17:43
大違いだろ。
0569デフォルトの名無しさん2010/11/18(木) 01:23:38
んじゃニヤニヤしながら忍者死んだほうが良いって書いてくるわw
0570デフォルトの名無しさん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()に"(全角文字)("が
余計に表示されてしまいます
なんでですか?
0571デフォルトの名無しさん2010/11/18(木) 02:00:40
>>570
文字列の終端 '\0' がないから
0572デフォルトの名無しさん2010/11/18(木) 02:04:42
じゃあ\0が抜けてるときに表示されるものは一体なんですか
0573デフォルトの名無しさん2010/11/18(木) 02:11:26
面白いレスが思い浮かばない・・・老いたな
0574デフォルトの名無しさん2010/11/18(木) 02:12:12
strを確保したときにメモリに記憶されていた不定の値とか
putsは'\0'にぶつかるまで表示し続けるからね。
0575デフォルトの名無しさん2010/11/18(木) 02:14:58
>>572
\0 が現れるまでのメモリの内容すべて
0576デフォルトの名無しさん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);





}

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

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

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

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

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

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

できるかたいればお願いします
0582デフォルトの名無しさん2010/11/18(木) 15:06:04
ベクトルわかんないのはC言語じゃなくて高校数学やるべき
0583デフォルトの名無しさん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;
}

0584デフォルトの名無しさん2010/11/18(木) 15:46:15
↑優しい
0585デフォルトの名無しさん2010/11/18(木) 15:51:54
そんなもん出されたって理解できないのわかってるのに、優しいなんて言っちゃうなんて
0586デフォルトの名無しさん2010/11/18(木) 15:57:29
ここは馬鹿が多いからな。
0587デフォルトの名無しさん2010/11/18(木) 16:00:14
多いですね
0588デフォルトの名無しさん2010/11/18(木) 16:04:20
ほんと多いよな
0589たせばいいんでしたっけ?(うろおぼえ2010/11/18(木) 16:34:49
#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);
}
0590デフォルトの名無しさん2010/11/18(木) 16:46:48
増えた!
0591デフォルトの名無しさん2010/11/18(木) 17:58:19
増えましたね
0592Perl忍者 ◆M5ZWRnXOj6 2010/11/18(木) 18:03:28
こんな基礎教養Cを質問してる時点でカスなんだろw

こんなのCできるうちにはいらねってw
0593デフォルトの名無しさん2010/11/18(木) 20:51:26
糞コテ「Perl忍者」が釣れたぞ!
0594Perl忍者 ◆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
0595デフォルトの名無しさん2010/11/18(木) 21:25:11
これだからruby信者は・・・・
0596Perl忍者 ◆M5ZWRnXOj6 2010/11/18(木) 21:28:38
ここにのってるCソースは全部クソ

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

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

暁に喧嘩うる下忍乙

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

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

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

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

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

よくしらんが

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

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

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

早くSkypeこいよ
perlkage

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

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

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

printfでの出力がうまくいきません
エラーはでませんが予想と違う動きになります
ちなみに一文字だけ出力させようとしています
0622デフォルトの名無しさん2010/11/19(金) 01:59:40
>>621
もしかして \0 と /0 のうち間違い?
0623デフォルトの名無しさん2010/11/19(金) 01:59:55
バックスラッシュがスラッシュじゃね
0624デフォルトの名無しさん2010/11/19(金) 02:00:36
× '/0'
○ '\0'
0625デフォルトの名無しさん2010/11/19(金) 02:02:55
そういえばゼニマークだったけ
ありがとうございます
0626デフォルトの名無しさん2010/11/19(金) 04:59:49
zeni mark
yen mark
back slash
0627デフォルトの名無しさん2010/11/19(金) 06:43:25
「マーク」は誤用
0628デフォルトの名無しさん2010/11/19(金) 11:44:13
>>627は誤用
06295602010/11/19(金) 12:28:22
>>533
>>543
http://hibari.2ch.net/test/read.cgi/tech/1289715349/43
0630デフォルトの名無しさん2010/11/19(金) 14:01:14
e?
0631デフォルトの名無しさん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デベロッパーです。
これでパステルカラーを作りたいんですがお願いします
0632デフォルトの名無しさん2010/11/19(金) 15:17:26
ふーん断る
0633デフォルトの名無しさん2010/11/19(金) 15:17:50
bmp.hはぐぐると一番上に出てくる静岡大のやつでいいのか?
0634デフォルトの名無しさん2010/11/19(金) 15:26:13
http://www.di.aomori-u.ac.jp/staff/tsunoda/workshop/20101027/bmp.txt
bmp.hはこれでお願いします
0635デフォルトの名無しさん2010/11/19(金) 15:30:09
ステルス調
0636デフォルトの名無しさん2010/11/19(金) 15:30:49
校内からじゃないとアクセスできないようだが大丈夫か?
0637デフォルトの名無しさん2010/11/19(金) 15:35:45
静岡大のでも大丈夫だと思います
0638デフォルトの名無しさん2010/11/19(金) 15:35:51
大丈夫だ、問題ない。
0639デフォルトの名無しさん2010/11/19(金) 15:39:30
定期あげ
0640デフォルトの名無しさん2010/11/19(金) 16:02:56
パステルカラーって何?
RGB→HSL から明度だけ底上げ→RGB なのか 減色なのか
0641デフォルトの名無しさん2010/11/19(金) 16:16:10
もうすでに答えをもらってんじゃねえか
0642デフォルトの名無しさん2010/11/19(金) 16:16:36
パステルカラーをしらないんですか
信じられないんですけど
0643デフォルトの名無しさん2010/11/19(金) 16:18:26
C言語で関数や構造体を作ることをモジュール化って言うんですか?
0644デフォルトの名無しさん2010/11/19(金) 16:29:12
パステル > ルルベル
だよな。
0645デフォルトの名無しさん2010/11/19(金) 16:34:15
>>631
なんで、static BMP bitmap1;
なの? 
そして、int i, j;
には、なんでstaticないの?
教えてください
0646デフォルトの名無しさん2010/11/19(金) 16:38:22
>>631
>>645が分らないようなレベルでは、パステルカラー作れないですよ
0647デフォルトの名無しさん2010/11/19(金) 16:39:40
>>645
bmp.hを読むことができないので、なんともエスパーするしかありませんが、
もしかして struct BMP bitmap1; のかきまちがいなんじゃないかなぁ〜〜…っておもいました。ちがってたらごめんなさい(^_^/
0648デフォルトの名無しさん2010/11/19(金) 16:41:20
bitmap1.image[j][i].r = 255;
bitmap1.image[j][i].g = 100;
bitmap1.image[j][i].b = 100;
0649デフォルトの名無しさん2010/11/19(金) 16:44:36
スタックに置くにはでかすぎるからだろうな
BMPが最大サイズ決め打ちの二次元配列持ってるんだろう多分
0650デフォルトの名無しさん2010/11/19(金) 16:55:54
BMP* p = new_BMP(bit, width, height)
みたいにして使用するメモリ領域を動的に確保できるようにはなってないの?
0651デフォルトの名無しさん2010/11/19(金) 17:02:46
誰に聞いてんの?
0652デフォルトの名無しさん2010/11/19(金) 17:25:56
君に
0653デフォルトの名無しさん2010/11/19(金) 17:38:36
あんだと?やるのお?(´・ω・`)
0654デフォルトの名無しさん2010/11/19(金) 17:39:00
やるよぉ。
0655デフォルトの名無しさん2010/11/19(金) 17:46:18
rが255だと問答無用でパステルカラーになるの?
06565992010/11/19(金) 17:49:39
>>599おめえこいよ?
びびってこれねえの?
ってことなのでSkype繋いでみました。
会話ログは「Perlで2ch系まとめサイトを作ろう」にあります。
怖い人ですねぇ
0657デフォルトの名無しさん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];
0658デフォルトの名無しさん2010/11/19(金) 18:17:22
定期あげ
0659デフォルトの名無しさん2010/11/19(金) 18:26:57
>>657
windowsビットマップとOS/2ビットマップは両対応なのか
0660デフォルトの名無しさん2010/11/19(金) 18:30:10
ttp://www.colordic.org/p/
300色あるっぽいから
int Pastel[300];
16進で全部埋めて、作ってやればいいのかね
質問の意味が良く分からないんでなんとも言えないんだが
0661デフォルトの名無しさん2010/11/19(金) 18:40:35
その解釈はいくらなんでもおかしいんじゃなかろうか
0662デフォルトの名無しさん2010/11/19(金) 18:46:41
ヘッダー分を読み飛ばしてBGRXの順に一バイトずつ読むだけだろ。
0663デフォルトの名無しさん2010/11/19(金) 18:50:42
パステルカラーって あくまで色合いの名称
だから相当のものを用意してるんでOKでしょ

パステル調 とか セピア調 とか 画像変換の話と違うぜ
0664デフォルトの名無しさん2010/11/19(金) 19:10:00
低脳じゃなければ、
>>631のプログラムから
読み込んだinput.bmpをパステルカラー調に変換してoutput.bmpに書き込む
んだって分るだろ。
つまり、パステルカラー調に変換するフィルタを作ってってこと。
断片から全体像を推察できないか?
0665デフォルトの名無しさん2010/11/19(金) 19:11:59
コーヒーフィルタみたいなもんか
0666デフォルトの名無しさん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];

の形だけど大きな問題は無いだろ
0667デフォルトの名無しさん2010/11/19(金) 19:16:53
あずにゃん
0668デフォルトの名無しさん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
0669デフォルトの名無しさん2010/11/19(金) 19:40:39
>>668
自分で書けよ
0670Perl忍者 ◆YNS0qIRC9I 2010/11/19(金) 19:44:30
>>669
いやお前が書けよ。
0671デフォルトの名無しさん2010/11/19(金) 19:47:14
30000は無い
0672デフォルトの名無しさん2010/11/19(金) 19:50:35
>>668
sizeof(struct BMP) を答えよ
0673デフォルトの名無しさん2010/11/19(金) 19:55:34
>>672
いまのパソコンってメモリー4ギガくらい普通だし、ダイジョブダヨ!! バンテリンあるよ!! ぜったい有利だよ!!
0674デフォルトの名無しさん2010/11/19(金) 19:56:46
width と height はヘッダから読むんだから p は可変長になるだろうな
06755602010/11/19(金) 20:11:00
>>666
修正しました。
http://hibari.2ch.net/test/read.cgi/tech/1289715349/53
0676Perl忍者 ◆YNS0qIRC9I 2010/11/19(金) 21:26:00
無修正がいいです。
0677Perl忍者 ◆35I122rnS2 2010/11/19(金) 21:39:52
また偽者が
0678Perl忍者2010/11/20(土) 00:38:58
いい加減偽物ウザいな
0679デフォルトの名無しさん2010/11/20(土) 02:15:49
パステル変換エラー処理最低限
>>675はよく見てないけどやってることは大体同じ臭い
パステル変換っていうかHSVに変換して白にちょっと近づけてるだけ
だれか上手い変換式考えてみて

http://codepad.org/YwgJpPli
0680デフォルトの名無しさん2010/11/20(土) 02:22:30
そういうライブラリないのかよ
0681デフォルトの名無しさん2010/11/20(土) 02:37:24
◆QZaw55cn4cって知識はそこそこ有りそうだけどセンスは無いな
0682デフォルトの名無しさん2010/11/20(土) 02:40:31
>>681
センス不足と言うより経験不足、学生だと思うよ
0683デフォルトの名無しさん2010/11/20(土) 04:35:13
すごいおっさんくさいこと言ってるし、コピペしてるうちに勘違いした底辺コーダーかも知れん
0684デフォルトの名無しさん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");
}
06856842010/11/20(土) 08:02:49
パステルカラーってのがよくわからないので、どうせよくわからないのなら、でたらめでもいいだろう(笑)と…w
あえて明示的なRGB←→HSV変換を経ないでやってみるアプローチを試してみようと思いました。
ほぼ、でたらめやってます。数式に理論的根拠はあんまり無いですw

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

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

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

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

これはなんでエラーなんですか
0704デフォルトの名無しさん2010/11/20(土) 21:56:47
>>703
pは定数だから代入できない
0705デフォルトの名無しさん2010/11/20(土) 21:57:10
pは配列だから、それ自身には代入できない。
0706デフォルトの名無しさん2010/11/20(土) 21:57:20
配列自体に代入はできないから。
0707デフォルトの名無しさん2010/11/20(土) 22:00:53
pに代入することは俺が許さない
0708デフォルトの名無しさん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);
}

ならわかるが
0709デフォルトの名無しさん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);
}


これもエラーです 
0710Perl忍者 ◆M5ZWRnXOj6 2010/11/20(土) 22:19:18
C言語のどこらへんに魅力を感じるの?
0711デフォルトの名無しさん2010/11/20(土) 22:19:33
>>709
だから配列名は定数だからエラーだって
変数じゃないか
0712デフォルトの名無しさん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);
}

書くならこうしなければならない
0713デフォルトの名無しさん2010/11/20(土) 22:23:01
>>710
あなたは普段生活していて日本語に魅力を感じますか?
つまりはそういうことです。
0714デフォルトの名無しさん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);
}


なるほど代入できない
なんとなくわかったよ
0715デフォルトの名無しさん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 */
0716デフォルトの名無しさん2010/11/20(土) 22:38:19
>>713みたいに上手いこと言おうとして見当外れのこと言っちゃう人って多いよね!ムッハー!!
0717デフォルトの名無しさん2010/11/20(土) 22:52:34
C言語は、メモリ上でデータがどのように展開されているかとか
PC側に偏った考え方を学べる。(アセンブラやっても構わない)
Cを分かっているかは他の言語をやる上でも基盤になっていくと思うよ。
脳内にメモリマップしたりするしな
0718デフォルトの名無しさん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);

}

またまたエラーです なんでですかね
0719Perl忍者 ◆35I122rnS2 2010/11/20(土) 23:27:29
どひゅっどひゅっ
0720デフォルトの名無しさん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);

}
0721デフォルトの名無しさん2010/11/20(土) 23:32:59
*aが未定義だから、その参照外しで死ぬ。
0722デフォルトの名無しさん2010/11/20(土) 23:34:00
何も学ぼうとしないバカが沸いてるな・・・
718とかスルーだな。712で書かれたことを全く理解してない
0723デフォルトの名無しさん2010/11/20(土) 23:36:05
それし、スルー出来ないお前がいるわけだ。
0724Perl忍者 ◇35I122rnS22010/11/20(土) 23:38:44
C言語とかアホしか使わないからなwww
Perl最強だぜ!
0725デフォルトの名無しさん2010/11/20(土) 23:40:39
perlはperlで出来てるのか?
0726デフォルトの名無しさん2010/11/20(土) 23:41:46
言うはやすし、行うはたかし。
Cは書きやすし、読みたかし。
0727デフォルトの名無しさん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";←ここです

}

すいません 二次元配列の関数側からのアクセス方法を教えてください
07287222010/11/21(日) 00:14:13
いやどうせ構ってちゃんなんだろうと思ってな。
初心者がポインタのポインタなんぞ使うもんでもあるまい
警告を発したまでだ、それ以上でもそれ以下でもない。
難解なコード大会があるようにもはやCだかなんだか分からない構文も多々ある
ここは初心者の来るべき場所であって適当な構文を理解すべき場所ではない。
0729デフォルトの名無しさん2010/11/21(日) 00:21:13
>>727
ポインタの概念から読み直してこいよ
正直言って同じような質問にうんざりなんだよ
1+1=2って説明しないと分からないのか?
1+2=が分からないんならプログラム辞めることをオススメする
0730デフォルトの名無しさん2010/11/21(日) 00:24:50
参考書の流れどおりやってるだけだよ
疑問に思ったこととか周りに聞く人がいないからここで質問してるわけ
ここならスパッと解答してくれるから重宝してまつ
0731デフォルトの名無しさん2010/11/21(日) 00:26:38
strcpy(n[0],"hkh");←ここです
strncpyのほうがいいかも
それと関数tの宣言がおかしい
0732デフォルトの名無しさん2010/11/21(日) 00:29:44
参考書全部読み終わってからこい
0733デフォルトの名無しさん2010/11/21(日) 00:31:31
読み終わらないうちに挫折するような
0734デフォルトの名無しさん2010/11/21(日) 00:37:24
素質が無いなら早めに挫折したほうがいい
0735デフォルトの名無しさん2010/11/21(日) 02:53:32
みなさんどんな職業ですか
C言語をはじめるきっかけは?
0736デフォルトの名無しさん2010/11/21(日) 02:55:04
会社員
I/Oの特集を見て
0737デフォルトの名無しさん2010/11/21(日) 03:17:09
会社員
BASICが処理が遅い → Cが速いらしいと訊いて
0738デフォルトの名無しさん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
0739デフォルトの名無しさん2010/11/21(日) 04:00:04
struct 型 名前 = { {a,b,c},{d,f,g},{h,i,j},};
と言う感じで代入してたのですが
ループを出たら全部消えてしまうのですが何故でしょうか?
0740デフォルトの名無しさん2010/11/21(日) 04:31:43
消える書き方をしたから
0741デフォルトの名無しさん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];
}
}
0742デフォルトの名無しさん2010/11/21(日) 08:01:37
無理です
長さを別に渡して下さい
0743デフォルトの名無しさん2010/11/21(日) 08:16:11
他の言語を検討しましょう
0744デフォルトの名無しさん2010/11/21(日) 08:21:10
>>742
やっぱりかー
そうします。
ありがとうございます。

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

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

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

何が疑問なのかよく判らない。
0755デフォルトの名無しさん2010/11/21(日) 17:47:55
↑ただのバカ
0756デフォルトの名無しさん2010/11/21(日) 17:54:35
このスレにずっと粘着してるコピペ馬鹿は何がしたいんだ?
0757デフォルトの名無しさん2010/11/21(日) 17:55:22
↓>>756が釣れました。w
0758デフォルトの名無しさん2010/11/21(日) 17:57:23
↓>>756が釣れました。w
0759デフォルトの名無しさん2010/11/21(日) 17:58:31
↓↓>>756が釣れました。w
0760デフォルトの名無しさん2010/11/21(日) 17:59:07
前スレも前前スレもその前も、ずっとこんな感じだろ
なんかツライことでもあった?死ねよ
0761デフォルトの名無しさん2010/11/21(日) 17:59:40
釣れたwwww
0762デフォルトの名無しさん2010/11/21(日) 18:00:02
なんだこいつ
0763デフォルトの名無しさん2010/11/21(日) 18:01:12
定期あげ
0764デフォルトの名無しさん2010/11/21(日) 18:01:26
あずにゃんペロペロ
0765デフォルトの名無しさん2010/11/21(日) 18:02:58
このスレにずっと粘着してるコピペ馬鹿は何がしたいんだ?
0766デフォルトの名無しさん2010/11/21(日) 18:03:18
前スレも前前スレもその前も、ずっとこんな感じだろ
なんかツライことでもあった?死ねよ
0767デフォルトの名無しさん2010/11/21(日) 18:03:41
                           , ヘ\
                            /   ヽヽ,
        /ヘ、                /      l |
       /,/   \               /           | |
       | l       \          ./          | |
.      | |       \       /           /'⌒(⌒\
      | |           \  /           / _/~___`\ \
      /⌒)¨゙\        X          //:::::::::::::::ノ、`ヽ\
     / /  ~\ \     /. \       /./::::;;-‐‐''"´  |:::::::|. \
   / /  .ノ´⌒`ヽヽ   /     \    / ..|:::|  。    .|:::::::|、 \
  / γ⌒´       \ヽ/        \ (   |:/ ⌒  ⌒   ヽ::::| )   )
. / .// ""´ ⌒\  / ヽ.         \', .| -・‐  ‐・-  |:::| /  /
 | .i /  ⌒  ⌒  i./) ノ          \ | ー'/ _.'ー    `|/  /
 | i   (・ )` ´( ・)/,/ /           V \(_人__)ヽ   |  / こっちも釣れた!
 | l    (__人_)/ |  /.            丶ヽ゚しニ ノ   / /  こいつはもっとスゴいぞ!
 | \    |┬J゚ ノ/ つ、釣れた!     〉  ヽ_    _/ /
 ヾ、.     `ー'  く   これは大物のバカに違いない!/
   ヽ          ヽ           /        /
    ヽ                            /
0768デフォルトの名無しさん2010/11/21(日) 18:04:37
>>767
0769デフォルトの名無しさん2010/11/21(日) 18:05:28
AAでウケを狙う流れでもない
0770デフォルトの名無しさん2010/11/21(日) 18:07:16
糞スレ
0771デフォルトの名無しさん2010/11/21(日) 18:08:28
一気に糞化したなw
0772デフォルトの名無しさん2010/11/21(日) 18:09:41
元から糞だっただろ
なんかツライことでもあった?死ねよ
0773デフォルトの名無しさん2010/11/21(日) 18:11:53
前スレも途中から>>1000までずっとコピペだった
一人そういう奴がいて、そいつが気に入らないレスがあったらこうなるってこと
おそらく自分の考えたレスが馬鹿にされたもんだから、他人のレスのコピペしてるんだろうな
0774デフォルトの名無しさん2010/11/21(日) 18:12:40
まあ自分の考えが書けない奴は死ねばいいと思うよ、いやマジで。邪魔なだけだし
0775デフォルトの名無しさん2010/11/21(日) 18:15:11
解説する奴って過去にそういうことがあったんだよな
0776デフォルトの名無しさん2010/11/21(日) 18:15:45
>>774
じゃあ早く死ねよ。
0777デフォルトの名無しさん2010/11/21(日) 18:16:54
糞スレ
0778デフォルトの名無しさん2010/11/21(日) 18:18:34
>>776
図星突かれて悔しいんか?あ?w
0779デフォルトの名無しさん2010/11/21(日) 18:18:46
C言語なんかやらずにPerlやれよ。w
0780デフォルトの名無しさん2010/11/21(日) 18:19:39
>>778
これは恥ずかしい。
0781デフォルトの名無しさん2010/11/21(日) 18:21:59
>>780
あ?w
0782デフォルトの名無しさん2010/11/21(日) 18:22:48
>>780
そんなに悔しいのか?w
0783デフォルトの名無しさん2010/11/21(日) 18:23:26
釣れた!
0784デフォルトの名無しさん2010/11/21(日) 18:23:57
定期あげ
0785デフォルトの名無しさん2010/11/21(日) 18:24:01
釣られてんのはお前だカス
0786デフォルトの名無しさん2010/11/21(日) 18:24:25
どぴゅっどぴゅっ
0787デフォルトの名無しさん2010/11/21(日) 18:25:13
うひょーーーーーーーーーー!!!!!!!!!
0788デフォルトの名無しさん2010/11/21(日) 18:25:34
卑猥だカス
0789デフォルトの名無しさん2010/11/21(日) 18:26:18
で、Perlだと何ができるんだい?
0790デフォルトの名無しさん2010/11/21(日) 18:27:05
Welcome to Underground
0791デフォルトの名無しさん2010/11/21(日) 18:27:20
あ
0792デフォルトの名無しさん2010/11/21(日) 18:27:45
 
0793デフォルトの名無しさん2010/11/21(日) 18:28:05
でもコピペの奴消えたwwwだっさ
0794デフォルトの名無しさん2010/11/21(日) 18:29:03
でも>>793にも消えて欲しいな
0795デフォルトの名無しさん2010/11/21(日) 18:29:42
下手に煽ってる奴も一緒に死ねばいい
0796デフォルトの名無しさん2010/11/21(日) 18:30:01
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!コピペ厨出てこいw
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
0797デフォルトの名無しさん2010/11/21(日) 18:30:22
あげ
0798デフォルトの名無しさん2010/11/21(日) 18:31:14
今度はAA厨か
どっちもどっちだカス
0799デフォルトの名無しさん2010/11/21(日) 18:32:04
>>796
ここぞとばかりにAA貼ってるけど、お前も同類だからね。
0800デフォルトの名無しさん2010/11/21(日) 18:33:09
釣れたw
0801デフォルトの名無しさん2010/11/21(日) 18:33:10
C言語の話しようぜ
0802デフォルトの名無しさん2010/11/21(日) 18:34:05
796 :デフォルトの名無しさん:2010/11/21(日) 18:30:01
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!コピペ厨出てこいw
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

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


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

C言語なんてお前らがやっても
まじいみねーだろ
0827Perl忍者 ◆M5ZWRnXOj6 2010/11/22(月) 23:58:50
こ
こ
の
ス
レ
来
た
の
が
間
違
え
だ
っ
た
0828デフォルトの名無しさん2010/11/23(火) 00:24:39
(´・ω・`) ぶつぞ〜
0829デフォルトの名無しさん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の被視感度補正も考慮するべきなのだろうか?と思った。でもそれをすると色ズレが起こるし?。はて?
0830デフォルトの名無しさん2010/11/23(火) 03:07:09
ポインタ変数の記述は*p←このようになりますが
p*←これはなんですか
0831デフォルトの名無しさん2010/11/23(火) 03:07:56
乗算
0832デフォルトの名無しさん2010/11/23(火) 05:32:17
糞スレ
0833デフォルトの名無しさん2010/11/23(火) 11:47:47
アナル
0834デフォルトの名無しさん2010/11/23(火) 13:18:15
ほっはっ
0835デフォルトの名無しさん2010/11/23(火) 14:21:17
教材のソースをみてると
ポインタ変数を宣言するとき
int* i;
int *i;
というように*の位置が違うんだけど
なにか違いがあるの?
0836デフォルトの名無しさん2010/11/23(火) 14:25:07
ない
int*i; でもいいし
int * i; でもいいし
int
*
i; でもいいよ
0837デフォルトの名無しさん2010/11/23(火) 14:31:58
どっちでもいい

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


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

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

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

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

なぜかエラーが起こる
0859デフォルトの名無しさん2010/11/23(火) 20:50:08
>>858
return *kadf[0]+*kadf[1];
0860デフォルトの名無しさん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));
}

修正したけど
何故かエラーになる
0861デフォルトの名無しさん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;
}
0862デフォルトの名無しさん2010/11/23(火) 20:59:38
彼はポインタと配列の関係で混乱しているように見える
0863デフォルトの名無しさん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));
}
0864デフォルトの名無しさん2010/11/23(火) 21:03:56
>>863
君は 860 ではないか? return 0; がないけど。
0865デフォルトの名無しさん2010/11/23(火) 21:04:00
int sum(int *kadf[2]) {
return *kadf[0]+*kadf[1];
}
とした場合の、
int *kadf[2] 、*kadf[0]は何を表すか教えて

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

*kadf[0] は、
kadfの0番目の要素(intへのポインター型)が指す要素(int型)を示す。
0868デフォルトの名無しさん2010/11/23(火) 21:09:52
&valewは、
変数valewのアドレスを示す。
0869デフォルトの名無しさん2010/11/23(火) 21:15:22
>>866-867
><むずかしいよー
>>868
アドレスだけで型情報はないの?
0870デフォルトの名無しさん2010/11/23(火) 21:16:46
無いよ。
0871デフォルトの名無しさん2010/11/23(火) 21:20:18
とにかくだ。
value じゃないか?
0872デフォルトの名無しさん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*)"の中身。
0873デフォルトの名無しさん2010/11/23(火) 21:30:18
>>872
void aho(int saru[][100]);
0874デフォルトの名無しさん2010/11/23(火) 21:51:51
初心者なんだから背伸びしないでコツコツ行こう。
猛スピードで駆け抜けると何処かで転落する
0875デフォルトの名無しさん2010/11/23(火) 21:55:17
「C実践プログラミング」 でCの文法、make、デバッグ手法など、基礎を習得

                           ↓

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

                           ↓

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

                           ↓

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

                           ↓

                         神の誕生
0876デフォルトの名無しさん2010/11/23(火) 21:56:47
mallocで配列の配列を確保するにはどうしたら良いですか。
0877デフォルトの名無しさん2010/11/23(火) 22:00:41
頭でっかちの誕生じゃねーかwww
0878デフォルトの名無しさん2010/11/23(火) 22:00:48
mallocは指定されたサイズの領域を確保するだけ。型はない。
配列の領域として使いたいなら、配列にキャストして使えばいい。
0879デフォルトの名無しさん2010/11/23(火) 22:01:15
配列の配列の大きさを計算してまとめて取るか、分割で取るかだけ。
どちらでもお好きなように。
0880デフォルトの名無しさん2010/11/23(火) 22:02:35
なるほど分かりました。
どうもありがとう。
0881デフォルトの名無しさん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;
}
08821eの人2010/11/23(火) 22:09:09
ありがとう!
0883デフォルトの名無しさん2010/11/24(水) 00:59:37
main関数で
scanf("%d",&i);
としてint型の変数iに数字を入力したらその変数iを子スレッドで使用するにはどうすればいいですか?
0884デフォルトの名無しさん2010/11/24(水) 01:07:21
イミフ
子スレッドにアドレス渡しとけばいいじゃん
0885デフォルトの名無しさん2010/11/24(水) 01:10:25
>子スレッドにアドレス渡しとけばいいじゃん
どうやって渡すんですか?
複数でもいけますか?
0886デフォルトの名無しさん2010/11/24(水) 01:10:48
子スレッドを開始するときにひとつだけポインタを渡せるはずだが
それを使って変数 i へのポインタを渡せばいいと思わないか
0887デフォルトの名無しさん2010/11/24(水) 01:11:34
複数なら構造体にまとめればいい
0888デフォルトの名無しさん2010/11/24(水) 01:13:54
hTh = (HANDLE)_beginthreadex(NULL,0,mythread,ここ?0,&thID);

>複数なら構造体にまとめればいい
なるほど。
そういう考えですか
0889デフォルトの名無しさん2010/11/24(水) 01:15:50
そう、そこ
0890デフォルトの名無しさん2010/11/24(水) 01:16:56
ありがとうございます。
0891デフォルトの名無しさん2010/11/24(水) 02:32:09
ダメだ・・・
今こんな感じなんですけど
滅多にスレッドが起動しません。
起動しても3回くらいです。
http://main.s377.xrea.com/test5.c
ソース見てください。
0892デフォルトの名無しさん2010/11/24(水) 02:53:54
スレッド間では静的領域しか共有できないんじゃなかったっけ?
struct test mode -> static struct test mode にしても駄目かな?
0893デフォルトの名無しさん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
0894デフォルトの名無しさん2010/11/24(水) 03:22:40
100くらいじゃmythreadが動き出す前にmain側で mode.start == mode.end までインクリメントしてしまうと思うよ
その後mythreadが動き出してもすでに lpx->start == lpx->end だから何もすることがない
0895デフォルトの名無しさん2010/11/24(水) 03:28:38
なるほど。
理解できました。
では書き方自体におかしいところはないのですね?

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

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

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

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

こんな処理を文字列の最後まで繰り返すとかね
0909デフォルトの名無しさん2010/11/25(木) 01:36:11
>>908に加えて
読み込んだ文字がピリオドならheadフラグを立てる
その文字が英字なら
 headフラグが立っていれば大文字にしてフラグを消す
 立っていなければ小文字にする
英字でなければ(ピリオドの場合も)
 そのまま
文字列終端になるまで繰り返す
0910デフォルトの名無しさん2010/11/25(木) 07:24:33
Cのソースをフローチャートに起こして図示するものを作りたいのですが
条件分岐などはコンパイラの中身を理解していないと厳しいですかね
0911デフォルトの名無しさん2010/11/25(木) 07:27:33
いいえ
0912デフォルトの名無しさん2010/11/25(木) 09:15:36
今日も一日一あずにゃんペロペロ
0913デフォルトの名無しさん2010/11/25(木) 21:12:23
どん兵衛昔話!!
0914デフォルトの名無しさん2010/11/25(木) 21:18:24
糞スレ
0915デフォルトの名無しさん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で止めたいのですが、どうすればいいでしょうか?
お願いします。教えて下さい。
0916デフォルトの名無しさん2010/11/25(木) 23:42:42
>>915
character[1].nHP -= character[0].nAttack; のあとに
if (character[1].nHP <= 0) {
 character[1].nHP = 0;
 break;
}
を入れれば。
下の計算のあとにも。
0917デフォルトの名無しさん2010/11/25(木) 23:44:37
>>915
flg ^= atk; これだと、0と-1の繰り返しになるから
flg = !flg; で。
0918デフォルトの名無しさん2010/11/25(木) 23:47:01
>>916
ありがとうございます
おかげで解決しました

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

>>919
おそらく関係ないと思います。2-3日2ch開いてすらいないので…
0923デフォルトの名無しさん2010/11/26(金) 02:34:16
質問させてください
配列a[9]={1,3,2,5,8,4,0,9,0}があるとして
配列には1〜9の数字のどれかが入っているとして
配列の中にない数字6と7を出力したいんですが
やり方をおしえてください
0924デフォルトの名無しさん2010/11/26(金) 02:39:43
>>919
マニュアルの区分
標準コマンドとかC言語の関数とかで分けられてる
0925デフォルトの名無しさん2010/11/26(金) 02:51:10
>>923
まぁ、適当
ソートして隙間があったら表示
http://codepad.org/o2zq2j3d
0926デフォルトの名無しさん2010/11/26(金) 02:57:34
>>925 GJ!ありがとう
0927デフォルトの名無しさん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以上の数字が入ってたらアウトだけど
09289272010/11/26(金) 03:04:52
× b[10] =10;
○ b[10] = {10};
0929デフォルトの名無しさん2010/11/26(金) 03:19:53
>>928 シンプルだ!ありがとう!
0930デフォルトの名無しさん2010/11/26(金) 03:22:21
VC++2008を使っています。
配列の初期化について質問があります。

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

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

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

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

                           ↓

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

                           ↓

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

                           ↓

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

                           ↓

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

                           ↓

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

chara cnt=’1’;
printf(“%d”,cnt);
で
49が表示されるのは何故?
0952デフォルトの名無しさん2010/11/27(土) 00:54:47
昔の人がそう決めたから
0953デフォルトの名無しさん2010/11/27(土) 01:00:03
int BottonCount;
int Part;

float i=1/Part*BottonCount;

Draw(float tx);って関数にiを突っ込もうとしてもうまくいきませんなぜ?
0954デフォルトの名無しさん2010/11/27(土) 01:00:33
キリッ
0955デフォルトの名無しさん2010/11/27(土) 01:16:36
>>951
Asciiコード表で1に割り当てられているコードを
%dで10進数で表示しているから
0956デフォルトの名無しさん2010/11/27(土) 01:25:53
float i=1.0/Part*BottonCount;
0957デフォルトの名無しさん2010/11/27(土) 01:39:33
ボットンカウント吹いたw
0958デフォルトの名無しさん2010/11/27(土) 01:43:47
>>953
なんなんじゃない?
0959デフォルトの名無しさん2010/11/27(土) 02:25:09
たとえば10000byteとか大量のBYTEデータをファイルに書き込むとき
fwrite ( data, 1, 10000, fp ) ;
と
fwrite ( data, 10000, 1, fp ) ;
だったらどっちがいいの?
なんか差はある?
0960デフォルトの名無しさん2010/11/27(土) 02:33:18
>>959
高々10KB程度、大差ないべさ。途中で失敗したときの戻り値は違ってくるけど。
0961デフォルトの名無しさん2010/11/27(土) 02:47:39
>>959
fwrite() のソース見ないと判らんね
結局は write() をコールするんだけど、write( fd, buf, size * n ) としてるのか write( fd, buf, size ) を n 回コールしてるのか
後者なら、>>959 の後者の方が良いのは明らかだ
0962デフォルトの名無しさん2010/11/27(土) 03:05:11
>>959
よく出る話題だわな。これ。

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

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

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

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

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


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

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