トップページ⇒tech
991コメント269KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

コンパイラを探しているなら >>2-13 を。
C machineはCに非ず
上記を逸した場合の結果は激しく未定義だYO!

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

C言語なら俺に聞け! Part 60
http://pc2.2ch.net/test/read.cgi/tech/1056806789/
0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003_NGNG
http://homepage.mac.com/hiroyuki44/hankaku09.html
0004デフォルトの名無しさんNGNG
>>1
乙NULL
00054NGNG
宣伝に負けた( ̄o ̄;)
0006デフォルトの名無しさんNGNG
宣伝君をだれか出入り禁止にしてくれ。鬱陶しくてかなわん。
0007デフォルトの名無しさんNGNG
>>6
禁止は無理だけど、削除依頼してくれれば消すよ。
0008デフォルトの名無しさんNGNG
MTっていう乱数生成アルゴリズム知ってますか?
0009デフォルトの名無しさんNGNG
有名だな
0010デフォルトの名無しさんNGNG
>>2-13なのに続きが現れる気配なし…
0011デフォルトの名無しさんNGNG
>>10
ねーもん
0012デフォルトの名無しさんNGNG
インタプリタのサイトはテプレから外さないか?
0013デフォルトの名無しさんNGNG
と亀さんはいった。
0014デフォルトの名無しさんNGNG
亀さんそれじゃあだめだよ。
0015デフォルトの名無しさんNGNG
なまらやる気の無い亀さん?
0016デフォルトの名無しさんNGNG
東京発13:XXのぞみXX号に乗って静岡駅で降りる
ここまでは、目撃されている情報から間違いがない
そして、今度は東京行きのぞみXX号にのって…
0017デフォルトの名無しさんNGNG
>>8
http://www.math.keio.ac.jp/~matumoto/mt.html
0018デフォルトの名無しさんNGNG
fread ってどするの?
0019デフォルトの名無しさんNGNG
よむんだよ。
0020デフォルトの名無しさんNGNG
>>18
#include <stdio.h>
typedef size_t At;
typedef const void * N;
typedef size_t T;
typedef FILE * DoCoMo;

At fread(N,T,T,DoCoMo);
0021前スレ912NGNG
レス遅くなりました。
前スレの913,914さん、ありがとうございました。
特に914さんの説明、かなり納得できました。
どうもでした。
0022デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(){
int a=1000,b=1000,i=0,mina=0,minb=0,r=rand();
printf("%d %d %d\n",i,a,b);
for(i=1;i<100;i++){
if(16000<r&&r<24000){
a+=4; b-=4;
}
if(24000<r&&r<32000){
a-=2; b+=7;
}
if(mina<a) mina=a;
if(minb<b) minb=b;
printf("%d %d %d\n",i,a,b);
}
printf("mina=%d minb=%d\n",mina,minb);
}
どんな(1-32768のどれか)乱数を出すかで、乱数がどの範囲に入るかで
a,bの値が下がったり上がったりするプログラムを作ったつもりなんですが、
aの値もbも1000を出力したままずっと変わりません。何でなんですか?
0023デフォルトの名無しさんNGNG
r = rand() がループの外だから
0024デフォルトの名無しさんNGNG
C言語についてなんですが、文字コード番号を打って入力し、出力する方法が分かりません。
どなたか知ってたら教えてください
0025デフォルトの名無しさんNGNG
>>24
>>1
0026デフォルトの名無しさんNGNG
日本語についてなんですが、脳内語を入力し、口語を出力する方法が分かりません。
どなたか知ってたら教えてください
002722NGNG
#include <stdio.h>
#include <stdlib.h>
int main(){
int a=1000,b=1000,i=0,j,mina=1000,minb=1000,a0=0,b0=0;
printf("%d %d %d\n",i,a,b);
for(j=0;j<20;j++){
for(i=1;i<100;i++){
if(16000<rand()&&rand()<24000){
a+=4; b-=4;
}
if(24000<rand()&&rand()<32000){
a-=2; b+=7;
}
if(mina>a) mina=a;
if(minb>b) minb=b;
printf("%d %d %d\n",i,a,b);
a0+=mina; b0+=minb;
}
printf("mina=%d minb=%d\n",a0/1000,b0/1000);
}
}
上のプログラムにちょっと付け足したものです。
mina,minbを試行で何度も出して、試行回数で割って
平均値を求めようとしたんですけど、mina,minbは変な値が出てきました
普通は1000程度の数がでます。どこがおかしいんでしょうか?
0028デフォルトの名無しさんNGNG
>>22
おまい、わざとだろ
0029デフォルトの名無しさんNGNG
>27
>if(16000<rand()&&rand()<24000){
最初のrand()と二つ目のrand()は別の値になる。
0030前スレ1000NGNG
マヌケだ…
0031前(々)スレ999NGNG
勝った・・・
0032デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
char str[] = "abcdefg";
int k;

for(k = 0; k < 7; k++){
if(str[k] == "b"){
printf("%s\n", str);
break;
}
}
return 0;
}

abcdefgが出力されるはずなんですが・・・。
移植性の無いポインタ変換という警告が出てます。
よろしくお願いします。
0033デフォルトの名無しさんNGNG
関数内で fopen したファイルのポインタを呼び出し元に返すことは可能か?
例えば、こんな感じ。

main(){
 FILE *file;
 func(file);
}

void func(FILE* f){
f=fopen("xxx", "r");
}

この場合、勝手にクローズされちゃう?
0034デフォルトの名無しさんNGNG
>>32
str[k] と "b" を比較しているから。

>>33
当然可能。勝手にクローズするはずがない。行方不明になるが。

0035デフォルトの名無しさんNGNG
>>33

void func(FILE** fp) {
 *fp = fopen(...);
}

FILE* func() {
 return fopen(...);
}
003633NGNG
ごめんなさい。書き方悪かった。
return しないでできる?引数渡しで。
0037デフォルトの名無しさんNGNG
出来るってばよ。
0038デフォルトの名無しさんNGNG
>>36
35を良くみろ。
0039デフォルトの名無しさんNGNG
returnしなけりゃ処理が戻ってこないから難しいな。
0040デフォルトの名無しさんNGNG
質問
varchar型に格納されている文字列の比較ってどうやるん?
そのまま == で比較したらキャストエラーが出るのだが

varchar A[10][5];
varchar B[10][5];

---詳細省略--------------------------------------------
varcharのA配列にSQLで取った値をカーソルFETCHで値格納
varcharのB配列にSQLで取った値をカーソルFETCHで値格納
-------------------------------------------------------

if(A[1].arr == B[1].arr){

}
0041デフォルトの名無しさんNGNG
Cにvarcharなんていう型はありません。
0042デフォルトの名無しさんNGNG
Pro*Cは駄目なの?
0043デフォルトの名無しさんNGNG
>>1
0044デフォルトの名無しさんNGNG
>>40
AとBは二次元配列だから、添え字がおかしいんじゃないの?

あと、varchar同士の比較は、長さを比較して、一致してたら
memcmpを使えばいいのかな?
Pro*Cって知らんから、間違ってるかもしれんけど。
0045デフォルトの名無しさんNGNG
Pro*cは、SQLをCのソースに埋め込む開発ツールですな。
ということで、スレ違いなんだってばさ。
0046デフォルトの名無しさんNGNG
激しくアフョ丸出しで悪いんだけど、
画面をクリアする方法ってどこ探しても載ってないんすよね・・・
0047デフォルトの名無しさんNGNG
>>46
載ってる。
0048デフォルトの名無しさんNGNG
>>46
Cと関係ないからな
0049デフォルトの名無しさんNGNG
system("cls"); /* Windows/MS-DOS */
system("clear"); /* UNIX/Linux */
0050デフォルトの名無しさんNGNG
int i;for(i=0;i<1000;i++){printf("\n");}
005146NGNG
>>49
激しく感謝。
0052デフォルトの名無しさんNGNG
C言語ならオレだよオレオレ
0053デフォルトの名無しさんNGNG
>>52
すげえ。C 言語とかいっといてオレだよとかいってるよ。この人。
0054デフォルトの名無しさんNGNG
>>53
それ言うならスレタイが既に(ry
0055デフォルトの名無しさんNGNG
>>40
if(A[1].arr == B[1].arr)
でなくて
if(strcmp(A[1].arr, B[1].arr)==0)
では。
005655NGNG
厳密に言うと
if (A[1].len == B[1].len
&& strcmp((char*)A[1].attr, (char*)B[1].attr)==0)
かな。スレ違いなのでこれくらいに。
0057_NGNG
http://homepage.mac.com/hiroyuki44/
0058デフォルトの名無しさんNGNG
>>56
varcharの文字列は0がついてるとは限らないから、strcmpで比較はまずいよ。
0059デフォルトの名無しさんNGNG
strncmp
0060デフォルトの名無しさんNGNG
>>52はオレオレ詐欺!
0061デフォルトの名無しさんNGNG
registerは古くさいですか?
0062デフォルトの名無しさんNGNG
名無しさん  2003/07/09(Wed) 19:20

◎無修正画像をご覧下さい◎無料パスワードをゲットすれば、もっと凄い画像とムービーがご覧頂けます◎
      ★見て見ておまんこ★
★http://yahooo.s2.x-beat.com/linkvp/linkvp.html★
0063デフォルトの名無しさんNGNG
staticって何ですか?
「静的変数」と言われても良く分かりません。
0064デフォルトの名無しさんNGNG
古いです。
0065デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(){
int a[99],i1,i2,i3,i4;
for(i1=0;i1<99;i1++){
a[i1]=rand()%51;
}
for(i2=1;i2<12;i2++){
for(i3=0;i3<99;i3+=49){
while((a[i3]==a[i3+1]||a[i3]==a[i3+2]||a[i3]==a[i3+3]||a[i3]==a[i3+4]||a[i3+1]==a[i3+2])
||(a[i3+1]==a[i3+3]||a[i3+1]==a[i3+4]||a[i3+2]==a[i3+3]||a[i3+2]==a[i3+4]||a[i3+3]==a[i3+4])){
a[i3+1]=a[i3+1+(4*i2)]; a[i3+2]=a[i3+2+(4*i2)]; a[i3+3]=a[i3+3+(4*i2)]; a[i3+4]=a[i3+4+(4*i2)];
}
i4=(i3/49)+(i3%49);
printf("a[%d]=%d\n",i4,a[i4]);
}
}
}
トランプを5枚配ったときのトランプの出方を出力使用としたのに、
このソースでは実行すると何にもでてきません
一応、同じカードを引かないように工夫はしたつもりです。
0066デフォルトの名無しさんNGNG
ここって、バグを指摘するスレなの?
006765NGNG
放置でつか?
0068デフォルトの名無しさんNGNG
>>67
ソース読むのメンドクセ
0069デフォルトの名無しさんNGNG
>>65
よーわからんが動いたぞ。
007065NGNG
間違えました。上のプログラムはちゃんと動きます
でも、なんで結果は、a[0],a[1],a[2]が延々とでてしまうんでしょうか
0071デフォルトの名無しさんNGNG
>>70
正直ソースが煩雑で見る気にならない。
山から1枚カードを引く関数 pull_card()
を作ってmainから必要な数だけ呼べ。
そうすればすっきりして、おかしいところもわかるだろ。
0072デフォルトの名無しさんNGNG
>>65
おまえ、www.ioccc.orgに出馬しろ、ぜひ。天然は強い。
0073デフォルトの名無しさんNGNG
>65
ひょっとして、0-nまでの数を、n個の配列に、重複無く・ランダムに
放り込む方法を知らないとか?
0074デフォルトの名無しさんNGNG
本当は頭のいい人なのかもしれない
0075デフォルトの名無しさんNGNG
知るとか知らないとかいうもんか?
ちょっと考えれば思いつくと思うが。
0076デフォルトの名無しさんNGNG
∩( ´Α`)質問です

static const int big_tbl[] = {
/*
ウンザリするほど巨大なテーブル
*/
};

static void func(void){
/*
テーブル使ってほにゃらら
*/
}

があった時、ソースが激しく見づらいので、

static void func(void){
/*
テーブル使ってほにゃらら
*/
}

static const int big_tbl[] = {
/*
ウンザリするほど巨大なテーブル
*/
};
という配置のしたいのですが、どうすればいいんでしょうか?
前方参照みたいなことは可能ですか?
0077デフォルトの名無しさんNGNG
乱数の出方によっては、whileが無限ループにならないか?
0078デフォルトの名無しさんNGNG
>>76
staticをexternに。
007978NGNG
じゃなくて、staticを消して先頭にstatic const int big_tbl[];
008078NGNG
またまちがった(T_T)
staticを消して先頭にextern const int big_tbl[];
008178NGNG
またまちがった(T_T)
externを消して先頭にstatic const int big_tbl[];
0082デフォルトの名無しさんNGNG
>>80

extern const int big_tbl[];

static void func(void){
/* テーブル使ってほにゃらら */
}

const int big_tbl[] = {
/* ウンザリするほど巨大なテーブル */
};

こんなカンジですか?
ありがとうございます。今環境がありませんが後で試して見ます
008378/80NGNG
>>82
そう。
元のままの方がいいと思うけどね
0084デフォルトの名無しさんNGNG
tableは大きいなら別のファイルにするという手もあるな。
0085デフォルトの名無しさんNGNG
別ファイルにしてインクルード、
もしくは実行時にファイルから読み込み。
0086デフォルトの名無しさんNGNG
>>65
シャッフルアルゴリズム
1. とりあえず順列にでいいから配列に全部の数を詰める。
2. i 番目の要素と別の要素とを入れ替える作業を i = 0 〜 (n-1) まで順番に行う。
3. それを何度か繰り返す。
0087デフォルトの名無しさんNGNG
define マクロについて質問です。
既製のソースをそのままで for の条件式の所にだけチェック用の関数を入れたいのですが

#define for(a) for(a)

のようにはできても

#define for(a;b;c) for(a;check(b);c)

のようにはできません(「;」は区切りに使えないみたいです)

置き換え後は別に for じゃなくてもいいので
#define for(a;b;c) {a;while(b){c;}}
とかも考えたのですが、左側部分の問題は残ったままです。

カンマで
#define for(a,b,c) {a;while(b){c;}}
とすると、そもそも現在のソース全てに手を入れなければならずに、
元に戻すのも大変な上、
for(a=0, b=0; a < b; ++a, --a)
みたいに書いてある所はどうしようもなくなってしまいます。
何か方法はないでしょうか?
0088デフォルトの名無しさんNGNG
>>87
#define FUNCTIME(f,r) \
{    \
    unsigned long time = GetTickCount();  \
    (r) = (f);  \
    time = GetTickCount() - time;  \
    printf("%s time = %lu[ms]\n",#f,time);   \
}

0089デフォルトの名無しさんNGNG
VCじゃデバッグしか使えないから
0090デフォルトの名無しさんNGNG
あ、勘違い。
0091デフォルトの名無しさんNGNG
>>87
無理。
0092デフォルトの名無しさんNGNG
>>65
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int have[5];
  int opn[52]={0};
  const char mark[4][3]={"▲","■","●","★"};
  const char num[13][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
  int i,r;
  srand(time(NULL));
  for(i=0;i<5;i++)
  {
  r=rand()%52;
  if(opn[r]) continue;
  else {opn[r]=1;have[i]=r;}
  }
  for(i=0;i<5;i++) printf("%s%s\n",mark[have[i]/13],num[have[i]%13]);
  return 0;
}
009392NGNG
>>92 間違えた。
if(opn[r]) continue;
↓
if(opn[r]) {i--;continue;}
0094デフォルトの名無しさんNGNG
>>87
awkとかperlで加工しちゃったら?
0095デフォルトの名無しさんNGNG
>>94
同意。で、それやるなら「プリプロ後ファイルを」行連結しつつ処理かな。
それでも "for (x;y" なんて意地悪な文字列があるとコケがちなんで、
文字列識別位はしないといかんかも。

>>87
どうしても既成のソースいじれないの?
正規表現置換で for (a; CONDCHKFOR (b); c) とかにしちゃって
チェック外す時に #define CONDCHKFOR なり、
inline static int CONDCHKFOR (int a) { return a; }
で良い気がするんだけど。
0096デフォルトの名無しさんNGNG
>CONDCHKFOR
やぼったい
0097デフォルトの名無しさんNGNG
>>87
#define for(a;b;c) for(a;check(b);c)

↓
for(a;

と展開されるはず

だいたい大して楽になってないじゃないか
0098うぇ〜〜〜〜NGNG
0099デフォルトの名無しさんNGNG
#include<stdio.h>

int main()
{
printf("1+2=%d\n",1+2);

return 0;
}
↑これをコンパイルして実行したら
何か一瞬だけ表示されて閉じちゃうんですけど…何ででしょ?
ちなみにVisual C++.net2003使ってます、よろしくお願いしまつm(__)m
0100デフォルトの名無しさんNGNG
main でファイルから読み込んでいた文字列を、
関数内で行うようにしたいのですが、うまくいきません。
具体的に、
main(){
char file[]="filename";
 char a[LENGTH], b[..], c[...];
 char str[LENGTHLINE];
 FILE *fp;
 /* a の読み込み */
 if ((fp=fopen(filename, "r"))!=NULL){
  fgets(str, LENGTHLINE, fp);
  sscanf(str, "%s\n", &a);
  fclose(fp)
 }
 /* b の読み込み */
 /* c の読み込み */
 処理
}
0101デフォルトの名無しさんNGNG

となっているところを、
main(){
 char file[]="file";
 char a[LENGTH], b[..], c[..];
 read_abc(file, a, b, c);
 処理
}

void read_abc(char *file, char *a, char *b, char *c){
 char str[LENGTHLINE];
 FILE *fp;
 /* a の読み込み */
 if ((fp=fopen(file, "r"))!=NULL){
  fgets(str, LENGTHLINE, fp);
  sscanf(str, "%s\n", &a);
  fclose(fp);
 }
 /* b, c の読み込み */
}
というようにしているのですが、
コンパイルは通っても segmentation Fault になってしまいます。
main で配列サイズを決めていても、read_abc で配列サイズを確保しなくては
ならないのでしょうか?
また、一般的には関数間での文字列の受け渡しはどのようにするのでしょうか。
ご教授お願いいたします。
0102デフォルトの名無しさんNGNG
sscanf(str, "%s\n", &a);
0103デフォルトの名無しさんNGNG
>>99
プログラムが終了すればコマンドプロンプトも閉じられる。
そういう仕様。(at Windows コマンドプロンプト)
つか、スレ違い。

>>101
>sscanf(str, "%s\n", &a);
a はポインタぢゃないのか?
ところでコレ、sscanf の仕様を理解して使っているならいいが、それにしても
無駄だな…
0104デフォルトの名無しさんNGNG
デバッグ出力用のマクロの引数を
printfみたいな、引数の数無制限みたいな感じにしたいんですが

↓現在こんな感じ
#ifdef DEBUG_
#define DEBUGOUAT( _f_ , _v_ ) \
{\
fprintf(stdout,_f_,_v_);\
}\
#else
#define DEBUGOUAT( _f_ , _v_ )
#endif

こうやっても、_v_の所は、一個しか引数かけないです。
どう記述したら、無制限にできるのですか?
0105デフォルトの名無しさんNGNG
>>104
コンパイラが C99 に対応してれば

#ifdef DEBUG_
 #define DEBUGOUAT(...) fprintf(stdout, __VA_ARGS__)
#else
 #define DEBUGOUAT(...)
#endif /* DEBUG_ */

が使えるんだが、そうでなけりゃ関数作るしか。

int debugprintf(const char *form, ...)
{
  va_list p;

  va_start(p, form);
  return vfprintf(stdout, form, p);
}

#ifdef DEBUG_
  #define DEBUGOUAT debugprintf
#else
  #define DEBUGOUAT /* none */
#endif /* DEBUG_ */
0106デフォルトの名無しさんNGNG
>>104
#ifdef DEBUG_
#define DEBUGOUT(params) printf params
#else
#define DEBUGOUT(params)
#endif

DEBUGOUT(("Hoge %s.\n", "hoge"));

で、fprintf は諦める。
stderr とかに出したい場合はそれなりの関数を用意する。
0107デフォルトの名無しさんNGNG
そういや、

((void*)0)(i = 0);

とできて、さらに i = 0 が実行されないというのは、
C++ のみの仕様だっけ?
C89 でもできるなら

#ifdef DEBUG_
#define DEBUGOUT printf
#else
#define DEBUGOUT ((void*)0)
#endif

でいいんだけど。
0108デフォルトの名無しさんNGNG
#define DEBUGOUT 0 ||
で、最適化を期待
0109デフォルトの名無しさんNGNG
何秒間の間に数字の1を何回押したかというプログラムを作りたいのですが
誰か教えて下さい。

何秒間というのはランダムです(5秒〜30秒ぐらいの間)
0110デフォルトの名無しさんNGNG
> 誰か教えて下さい。
何を?
0111デフォルトの名無しさんNGNG
malloc関数について教えてください!

mallocが返す値ってポインタですよね。
IBMにあったサンプルプログラムで下記のようなコードがあるんですけど、
TIFFRead~()の3つ目の引数で、ポインタにint型の整数を加えているのがわかりません。
確保した領域がどこにあるのかを示す値に加えちゃたら
どこか変なところを指しちゃったりしないんですか?


char *buffer;
int imageOffset=0;

buffer = (char *) malloc(bufferSize)

for (stripCount = 0; stripCount < stripMax; stripCount++){

if((result = TIFFReadEncodedStrip (image, stripCount,buffer + imageOffset,stripSize)) }
0112デフォルトの名無しさんNGNG
>>109
>>1を読めないような奴に、何を教えても無駄。
0113デフォルトの名無しさんNGNG
>>111
buffer += imageOffset じゃないから大丈夫。
0114デフォルトの名無しさんNGNG
質問(C言語)
構造体 name のメンバ変数 strName の値をqsort関数を使い
ソートを行いたい。
どうやれば良いのか教えてください。

typedef struct _Name{
char strName[30] ;
} Name ;

Name name[7] ;

strcpy( name[0].strName, "C" ) ;
strcpy( name[1].strName, "X" ) ;
strcpy( name[2].strName, "B" ) ;
strcpy( name[3].strName, "BB" ) ;
strcpy( name[4].strName, "A" ) ;
strcpy( name[5].strName, "AB" ) ;
strcpy( name[6].strName, "ZX" ) ;
0115デフォルトの名無しさんNGNG
strName をソートすんの?
0116デフォルトの名無しさんNGNG
>>115
そうです。
文字列ですが出来ますか??
0117デフォルトの名無しさんNGNG
>>116
本当に?
strName でソートすんじゃないの?
0118デフォルトの名無しさんNGNG
strNameをkeyにしてnameをソート

#include <stdio.h>
#include <string.h>
typedef struct _Name{
char strName[30] ;
} Name ;
int NameCmp(const void *a, const void *b){
return strcmp(((Name*)a)->strName,((Name*)b)->strName);
}
main(){
Name name[7] ;
int i;
strcpy( name[0].strName, "C" ) ;
strcpy( name[1].strName, "X" ) ;
strcpy( name[2].strName, "B" ) ;
strcpy( name[3].strName, "BB" ) ;
strcpy( name[4].strName, "A" ) ;
strcpy( name[5].strName, "AB" ) ;
strcpy( name[6].strName, "ZX" ) ;
qsort(name, 7, sizeof(Name),NameCmp);
for(i =0;i<7;++i)
printf("%s\n",name[i].strName);
}
0119デフォルトの名無しさんNGNG
>>117
そうです。
strNameでソートします。
0120デフォルトの名無しさんNGNG
>>99
スレ違いだけどヒント。

int main()
{
…
(σ゜Д゜)σゲッツ!!
return 0;
}








若しくは、コマンドプロンプト開いて、
プロンプト>実行ファイル名
0121デフォルトの名無しさんNGNG
(σ゜Д゜)σゲッチャー!!だろ
0122デフォルトの名無しさんNGNG
ヒントだからさ。
0123デフォルトの名無しさんNGNG
>>113
なるほど。言われてみれば確かにそのとうりですね。
ありがとうございます。

でも、それじゃあ buffer + imageOffset ってどういう処理をしてることになるんでしょうか。
度々すいませんがお願いします。
0124デフォルトの名無しさんNGNG
>>123
buffer先頭からimageOffsetだけポインタをインクリメントした先のポインタを返す。
0125デフォルトの名無しさんNGNG
>>118
ありがとうございます。
0126デフォルトの名無しさんNGNG
>>124
なるほど。
よく見れば>>1にも書いてあるのに
丁寧にどうもありがとうございました。
0127デフォルトの名無しさんNGNG
うに
0128デフォルトの名無しさんNGNG
int型変数、a,b,の値をそれぞれ10,4として、次の文をそれぞれ
実行したときのaの値を表しなさい。
(1) a/=b
(2) a+5*b--
(3) a=a!=b
(4) a=a%b
(5) a=a>b
(6) a=a||b
(7) a++
(8) a=!a
(9) a+=b*2
(10) a=(++a)*(b++)
0129デフォルトの名無しさんNGNG
マルチすんなよボケ
0130デフォルトの名無しさんNGNG
>>128
>>1読めバーカ
0131デフォルトの名無しさんNGNG
(10)は未定義
0132デフォルトの名無しさんNGNG
stderr ってなんだよ

stdinやstdoutは
unko.exe < data.txt
unko.exe > data.txt
で、使えること知ったけどよ。

stderr ってなんだよ
0133デフォルトの名無しさんNGNG
unko.exe > data.txt
とやっても、data.txtに書き出さずに、プロンプトにエラーメッセージを表示できる。
0134デフォルトの名無しさんNGNG
>>133

突然、変なこと聞くけど
unko.exe > data.txt
data.txtへリダイレクトしている内容を、Cのプログラムで直接受け取ることは不可能ですか?

int main(int argc, char **args){
unko.exe の出力をこの中でいじる!
}
0135マルチでごめん!NGNG
>>134
system("unko.exe > data.txt ");
data.txtを開いて読むというのは無しね。 
0136デフォルトの名無しさんNGNG
どうしたいのかよくわからん。
リダイレクトはファイルへしかできない。
標準出力に出されたものを、標準入力から取り込むならパイプがあるが。
0137デフォルトの名無しさんNGNG
>>133
( ゚∀゚ )なるほど

ありがたい
0138134NGNG
>>136
/* wget で取り込んだhtmlファイルをdata.txtという名前で保存する*/
system("wget http://hanyan.co.jp -O data.txt ");
data.txtを開いて読む。
ということをやっていたプログラムをファイルの使えない
組み込みLINUXに移植することになりましたので、よい方法を探しています。

wget の出力を、C言語の中で、charの配列か何かで受け取る方法は無いかなあと。

0139デフォルトの名無しさんNGNG
共有メモリとかあるはずだが。
0140デフォルトの名無しさんNGNG
popen
0141デフォルトの名無しさんNGNG
unko.exe | hoge.exe
0142134NGNG
>>140
それだ〜〜〜〜〜っ!
ありがとう。ありがとう。
0143デフォルトの名無しさんNGNG
文字で図形を描こう
繰り返しを使い、三角形を画面に表示させましょう。ただし、表示する三角形の
高さをキーボードから指示するものとします。


高さが n の三角形を表示するには、
1行目ではスペースをn-1回表示し、アステリスクを1回表示
2行目ではスペースをn-2回表示し、アステリスクを3回表示

k行目ではスペースをn-k回表示し、アステリスクを2k-1回表示

という処理をn行目まで繰り返します。

0144デフォルトの名無しさんNGNG

□□□□□□□*↓
□□□□□□***↓
□□□□□*****↓
□□□□*******↓
□□□*********↓
□□***********↓
□*************↓
***************↓


あとは、簡単ですからプログラムを作ってみよう。

応用編
□□□□□□□*↓
□□□□□□*□*↓
□□□□□*□□□*↓
□□□□*□□□□□*↓
□□□*□□□□□□□*↓
□□*□□□□□□□□□*↓
□*□□□□□□□□□□□*↓
***************↓


にチャレンジしてみよう。
0145143−144NGNG
よろしくおねがいします。
0146デフォルトの名無しさんNGNG
>>145
自分でやれ!
0147デフォルトの名無しさんNGNG
>>143
しゅくだいは、じぶんでしましょうね。(いちおうひらがなでかいておきます)
0148デフォルトの名無しさんNGNG
>>144
>>1
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0149デフォルトの名無しさんNGNG
>>101
sscanf()のパラメータが間違いだらけ。
受け渡し方としては、まぁいいんでないかい?
尤も、LENGTHとLENGTHLINEの値によっては問題あり。
0150デフォルトの名無しさんNGNG
>>101
・sscanf()のパラメータが間違いだらけ。
・そもそもsscanf()の必然性が不明。
・LENGTHとLENGTHLINEを分ける理由も不明。
・fileもレゾンデートルが不明。
・a,b,cを読むたびにファイルを開きなおすのか? その辺も不明。

「具体的」と書く以上、もっとちゃんと元のソースを載せろよ。
元々おかしいのか、コピーの段階でおかしくなったのか判らないじゃないか。
0151 NGNG
LinuxでC言語を使ってMACアドレスを取り出すにはどうするの?
0152デフォルトの名無しさんNGNG
>>151
>>1
0153デフォルトの名無しさんNGNG
>>143-145
ここまでハッキリとアルゴリズムが示されていて、何がわからないと言うのだろうか?
0154デフォルトの名無しさんNGNG
C。
0155デフォルトの名無しさんNGNG
外部シンボル "__imp__timeEndPeriod@4" は未解決です
外部シンボル "__imp__timeBeginPeriod@4" は未解決です

というエラーが出ます。

ちゃんと
#include <mmsystem.h>
をインクルードしてから、
timeBeginPeriod(1);
を使っているのですが
0156デフォルトの名無しさんNGNG
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/



有償?
0157デフォルトの名無しさんNGNG
>>155
それはリンクエラー
ヘッダーファイルをインクルードしたかどうかは関係ない。
0158155NGNG
winmm.libをリンクしたらいきました
しかし、なぜMSDNで検索してもtimeEndPeriodは見つかりませんなんだ?
0159デフォルトの名無しさんNGNG
正常に動いていたプログラムを2つのファイルに分割しコンパイルしたところ、
次のようなエラーが発生しました。
codemlmain.c が main を含み、codemlwrap.c が関数 codemlwrap を含むファイルです。
read_control_file, get_num_of_trees などは codemlmain 内で定義し、
codemlmain ファイル内からのみ呼び出している関数です。
codemlwrap.c, codemlmain.c 内の関数のプロトタイプは codemlmain.h で
宣言し、codemlmain.c からのみ include しています。
codemlwrap.o: In function `read_control_file':
codemlwrap.o(.text+0x554): multiple definition of `read_control_file'
/tmp/ccIGiNsI.o(.text+0x0): first defined here
/usr/bin/ld: Warning: size of symbol `read_control_file' changed from 897 to 893 in codemlwrap.o
codemlwrap.o: In function `get_num_of_trees':
codemlwrap.o(.text+0x8d4): multiple definition of `get_num_of_trees'
/tmp/ccIGiNsI.o(.text+0x384): first defined here
codemlwrap.o: In function `get_tree':
codemlwrap.o(.text+0x978): multiple definition of `get_tree'
/tmp/ccIGiNsI.o(.text+0x428): first defined here
codemlwrap.o: In function `get_seq':
codemlwrap.o(.text+0xa1c): multiple definition of `get_seq'
/tmp/ccIGiNsI.o(.text+0x4cc): first defined here
codemlwrap.o: In function `print':
codemlwrap.o(.text+0xba4): multiple definition of `print'
/tmp/ccIGiNsI.o(.text+0x654): first defined here
collect2: ld returned 1 exit status

以上、よろしくお願いいたします。
0160デフォルトの名無しさんNGNG
>>159
オブジェクトファイルを二重にリンクしようとしてないか?
makefileなどを見なおしてみるように。
尚、これ以上はスレ違い。
0161_NGNG
http://homepage.mac.com/hiroyuki44/jaz09.html
0162デフォルトの名無しさんNGNG
>>159
1 ファイル内のみでしか使わない(staticな)関数の宣言は
  そのファイルの頭で宣言する(ヘッダファイルを使用しない)
2 ファイル外で使う(externな)関数と変数の宣言は、ヘッダファイルにまとめ
  その関数及び変数を使用する全てのファイルの頭で #include する
3 2で宣言した関数と変数は、全てのファイルの中で
  必ず、1回だけの定義をする必要がある

>>160
別にスレ違いではないような…
0163デフォルトの名無しさんNGNG
>>159
関数プロトタイプを勉強しませう。
0164デフォルトの名無しさんNGNG
>>162
リンク手続きの問題なら、コンパイル環境の使い方になるからスレ違い。
まぁ、あんたの指摘するような問題もあるからその点に関してはスレ違いではないな。
0165159NGNG
まだ Makefile とか書いていなくて、
gcc -c codemlwrap.c
gcc -o codemlmain codemlmain.c codemlwrap.o
としているだけなのですが、問題ありますか?
>>162
>>3 2で宣言した関数と変数は、全てのファイルの中で
>>  必ず、1回だけの定義をする必要がある
これは全てのファイルを通して、各関数が1回だけ定義されている必要がある、
ということですよね。

codemlmain.c, codemlwrap.c の両方で #include しましたが同じ結果になります。
んんー、特に問題ない気がするのですが・・・。
0166159NGNG
同一ファイル内からしか呼び出さない関数を全て static にしたら
できました。お騒がせしました。
でも、これって static 付けなきゃいけないもんなんですか〜?
0167デフォルトの名無しさんNGNG
>>166
疑問があるなら調べろよ。
staticとは何か理解しているのか?
0168デフォルトの名無しさんNGNG
>>166
ソース晒してみ?
static宣言しなくても普通はコンパイルできるんだがな。
#ヘッダファイルじゃなくてソースをincludeしているに一票。
0169デフォルトの名無しさんNGNG
関係ないけど
gcc -c codemlwrap.c
gcc -c codemlmain.c
gcc -o codemlmain codemlmain.o codemlwrap.o
これと>165のは同じ意味ですか?
0170デフォルトの名無しさんNGNG
だから関数プロトタイプを勉強しろって。
0171デフォルトの名無しさんNGNG
>>170
なんとかの一つ覚え?

>>169
ほぼ同じ。
但し、>>165ではcodemlmain.oが生成されない。
つーのはgccの話であって、コンパイラによっては一概に言えない。
0172169NGNG
なるー
0173デフォルトの名無しさんNGNG
Cをはじめて3日目です。
平方根を求めるプログラムを作っているのですが、実行時にエラーになってしまいます。
コンパイル時の警告メッセージも意味がわかりません。

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

/*平方根を求めるプログラム*/
intmain()
{
char*i;
intl;
doublej,k;
for(l=0;l!=EOF;l++)
{
printf("数値を入力してください。\n");
gets(i);
i[strlen(i)-2]=NULL;
j=atof(i);
k=sqrt(j);
printf("平方根は%fです。\n",k);
}
return0;
}
0174デフォルトの名無しさんNGNG
>>173
sageているし、ネタだと思っていいのか?
iはどこを指しているの?
0175デフォルトの名無しさんNGNG
>>173
あえて言おう!

> 平方根を求めるプログラムを作っているのですが、

君が作っているのは平方根を求めるプログラムを使うプログラムだ!
0176デフォルトの名無しさんNGNG
gets(i);
i[strlen(i)-2]=NULL;
j=atof(i);

scanf("%d", &j);
0177デフォルトの名無しさんNGNG
>>173
char* i; → char i[128];
i[strlen(i)-2]=NULL; → 不要
0178デフォルトの名無しさんNGNG
>>173
君にはまだ早いような気がします。
0179デフォルトの名無しさんNGNG
こんばんわ。
ちょっと質問させてください。

12bitの整数型を使ってmalloc()で領域を確保したいのですが
どうすれば12bitの値を扱えるのでしょうか?
0180デフォルトの名無しさんNGNG
>>179
ビットフィールド
0181デフォルトの名無しさんNGNG
int12 *p;
p = malloc(sizeof(int12));
0182デフォルトの名無しさんNGNG
>>179
32ビットで我慢しろ。
0183デフォルトの名無しさんNGNG
C言語にも
http://java.sun.com/j2se/1.4/ja/docs/ja/api/
みたいな関数リファレンスってネットにありますか?
0184デフォルトの名無しさんNGNG
>>183
JISに仕様書があるけど、とてもみづらいので、
http://www.bohyoh.com/CandCPP/C/Library/index.html
これで。全てサポートしていないかもしれないけど。
0185デフォルトの名無しさんNGNG
swprintfとか載ってねーな
0186183NGNG
>>184
今の自分にはこれで十分そうです。
ありがとうございます。
0187179NGNG
>>180
ビットフィールドって7bit以上でも使えましたっけ?

>>181
Linux上でgccを使ってるのですが、
コンパイル時にint12で弾かれてしまいます。
どうしたらいいでしょうか。

>>182
12bitは決定で変えられないんです。
0188デフォルトの名無しさんNGNG
>>187
12bitの整数を扱わなければいけないのはなぜ?
何をしようとして必要なんだ?
0189179NGNG
>>188
画像処理で使うのですが、
機械の都合でピクセル毎の輝度が12bitで与えられるからです。
0190デフォルトの名無しさんNGNG
C++でclass Int12を作って、それを使うとか。
0191デフォルトの名無しさんNGNG
>>189
演算は32bitで行って、必要なときに12bitにつめればいいんでないの?
0192デフォルトの名無しさんNGNG
>>187
何だかよー分からんが、
例えばフロッピーディスクの FAT のように、
12 ビット長の値の羅列を扱う必要があるって状況なわけね?

12 ビットの型を用意することはできないので、
(ビットフィールドを使っても、
 その構造体のサイズはバイト単位になってしまう)、
8 ビットの配列を使って、
それを 12 ビットの配列であるかのように扱うしかない。

例えば、char a[3]; とすると、CHAR_BIT が 8 だとすると
((int)a[0] << 4) | (a[1] >> 4) と
((int)a[1] & 0x0F) << 8 | a[2] を
第 0, 1 要素として扱うわけだ。
0193デフォルトの名無しさんNGNG
それって12bitしか使わなければいいのでは?
0194デフォルトの名無しさんNGNG
>>189
頭が固い奴は(ry
0195デフォルトの名無しさんNGNG
>>187
あれってひとつのメンバーに割り当てられるのは6ビットまでなの?
0196デフォルトの名無しさんNGNG
ビットフィールドじゃ解決にならないってば
0197デフォルトの名無しさんNGNG
>>189
12bitで画像処理ってIKONOS画像か?
算術演算のみでビット演算しないんだったら32bit整数で間に合うと思うけど。
0198179NGNG
>>190
C++は全く齧ったことがないのですが、ちょっと調べてみます。

>>191
12bitの値を32bitの型で受けるんですか。
やってみます。

>>192
>12 ビット長の値の羅列を扱う必要があるって状況なわけね?
はい。その通りです。

ちょっと難しそうですが、例に挙げていただいた通りやってみます。

>>193
12bitしか使わなければいいっていうのは
どういうことでしょうか?

>>197
算術演算のみです。32bitで間に合いますか。
ちょっと考えてみます。
0199デフォルトの名無しさんNGNG
>>196
それなら191も駄目ってことになるけど。
0200デフォルトの名無しさんNGNG
具体的にはその12bit整数配列に対してどういう処理が必要になるの?
0201200NGNG
12bit のintを使おうとせずに、12bitデータが入ったデータ領域に対して処理をするような関数を作っていったほうがいいと思われ。
0202179NGNG
>>200
ここにある処理と同じことがしたいです。
http://www-6.ibm.com/jp/developerworks/linux/020517/j_l-libtiff.html
基本的には、ただ配列から値を取り出せれば問題ないと思うのですが。
0203デフォルトの名無しさんNGNG
12bitなのは輝度だけなの?
0204179NGNG
>>203
はい。
他の要素(サイズとか圧縮方式とかメモとか)は
ヘッダーに格納されていて、別の関数で取り出します。
0205デフォルトの名無しさんNGNG
答えになっていないと思う。
0206デフォルトの名無しさんNGNG
>>199
なんでやねん。
ビットフィールドと、ビット演算は違うぞ。

そもそも、ビットフィールドって互換性がぐちゃぐちゃだから、外界とのやり取りにはつかえないし。

(まあ、ビット演算の方もエンディアンの問題が歩けど。)
0207179NGNG
>>205
失礼しました。
12bitの配列は輝度だけです。
RGB+1の合計4つの12bit整数で1ピクセルができます。
0208デフォルトの名無しさんNGNG
int12arrを12ビット整数の配列のポインタ
idxを取り出したい12ビット整数の配列のインデックス
として、以下の関数でデータを取り出す。
int GetInt12(unsined char* int12arr, int idx)
{
  int int12;
  if (idx%2) {
    int12 = array[3*idx/2]<<4 + array[3*idx/2+1]>>4
  } else {
    int12 = array[3*idx/2+1]<<8)&0x00000f00 + array[3*idx/2+2]
  }
  return int12;
}
速度が気になるならマクロかinline関数にする。
0209デフォルトの名無しさんNGNG
>>202
ソース見せられても困るんだけど。
そうじゃなくてさ、int12の配列に対して具体的に何がしたいのか。

indexで要素を取り出すとか、
指定範囲を取り出すとか、
指定範囲に書き込むとか、
コピーするとか、移動するとか。

そういう風に必要な処理を作って、それらを使って最終的な目的を果たせばいいでしょ。
0210209NGNG
おっと、取り出せばいいって言ってるか。
じゃぁ、>>208で解決?
0211179NGNG
>>208
サンプルコードまで書いて頂いて、ありがとうございます。
参考にさせて頂いてしっかり身に付けたいと思います。

>>210
はい。解決です。
長々とお騒がせしましてすみませんでした。


レスして頂いた方、ありがとうございました。
とても勉強になりました。
0212デフォルトの名無しさんNGNG
ビット演算してる最中にエンディアンでハマるようなトロいやつはシスプロに向かん
0213デフォルトの名無しさんNGNG
エンディアンの確認を忘れてハマルことはたまにあるな。
0214デフォルトの名無しさんNGNG
>>212
ビット演算してる最中にエンディアンではまるなんてことがあると思ってる奴は、プログラマに向かん。
エンディアンではまるのは、外部とのやり取りか、変なキャストをした時だけだろ。
0215デフォルトの名無しさんNGNG
外部とのやり取りか、変なキャストをするときだけ特別なのか、あんたは
0216デフォルトの名無しさんNGNG
>>215
はぁ ?
それ以外で、エンディアンではまる例をあげてみなよ。
0217デフォルトの名無しさんNGNG
だからハマんねーつってるだろ
0218デフォルトの名無しさんNGNG
とっても恥ずかしーバグ出して欝な香具師同士で傷のなめ合いでもするスレかここは
0219デフォルトの名無しさんNGNG
>>217
なんだ、日本語できないクンだったのか...。

エンディアンではまる (可能性がある) のは、外部とのやり取りか、変なキャストをした時だけだろ。
0220keiNGNG
課題1:3科目(英数理)の点数をキーボードから入力して、それらの点数のうち最も高い点数を表示するプログラムを作りなさい。
自分が作ったのは下のです
#include<stdio.h>
main()
{
int eng,math,sci,max;
printf("英語の点数--->");scanf("%d",&eng);
printf("数学の点数--->");scanf("%d",&math);
printf("理科の点数--->");scanf("%d",&sci);
if(eng>math){
if(eng>sci){
max=eng;
}
else{
max=sci;
}
}
else{
if(math>sci){
max=math;
}
else{
max=sci;
}
}
printf("最高点は%d点です\n",max);
}
でもどうやら「関数」構造でなければならないらしいのですが、その時の講義に法事の為出席できなくて関数がわかりません。
本も読んだのですがプロトタイプが必要とかそれくらいしか理解できなかったです。
基礎論なので難しい関数は使わないはずです。void return ansとか本に書いてあります。
他のスレにも書いたんですが、レスないのでお願いします。
0221デフォルトの名無しさんNGNG
>>219
うっせえ、日本語以前にC言語できないクソにタメ口たたかれる憶えはない
いつまでもてめえのスキルを当然だと思っていろヘボ
0222デフォルトの名無しさんNGNG
>>220
その程度なら特に関数はなくても困らないけど、
まぁ関数作るとしたら
3つの値を引数にとって、その中の最大値を返す関数
を作るかな。

int max(int eng, int math, int sci)
{
 /* 中身は自分で考えてちょ */
 return ans;
}
こういうの作って、

printf("最高点は%d点です\n",max(eng, math, sci));
こういうことする。

数学の関数と同じで、関数は引数をとって、結果として値を返す。
その値は数学と同じ様な格好で使う。
printf も scanf も main も関数だし、
それが使えてるなら特に難しいことはないと思う。

あと、main の最後では return 0; を忘れずに。
0223デフォルトの名無しさんNGNG
ちなみに220はマルチです。
0224デフォルトの名無しさんNGNG
>あと、main の最後では return 0; を忘れずに。
voidがない処理系だろ、そんくらい嫁
0225デフォルトの名無しさんNGNG
>>221
> タメ口

彼には、あれがタメ口に聞こえるんだ...。
好意的な解釈する奴だな。(藁
0226デフォルトの名無しさんNGNG
>>225おいエンディアン、反論できないと自作自演かw
0227デフォルトの名無しさんNGNG
で。答えは何なの?
0228デフォルトの名無しさんNGNG
エンディアンではまるやつはバカ
0229keiNGNG
ご丁寧にありがとうございます。
せっかく教えていただいたのに答えがわかりません。関数なしのプログラムが僕の精一杯なのかも…
223さん、マルチってどういった意味でしょうか?
224さん、それはどういうことですか?
なんだか聞いてばかりでごめんなさい。お願いします。
0230デフォルトの名無しさんNGNG
エンディアンうそつかない。
0231デフォルトの名無しさんNGNG
ハオハオ
0232デフォルトの名無しさんNGNG
>>223
> 他のスレにも書いたんですが、レスないのでお願いします。
>>224
main() だから戻り値の型は int だろう。
>>225
8〜23行目をコピペして max → ans にして、
int ans; をつければ終わりだよ。
0233デフォルトの名無しさんNGNG
>>232
>main() だから戻り値の型は int だろう。

そうだよ。それを百も承知で国家する場合を知らんらしいな。
0234デフォルトの名無しさんNGNG
国家する?
0235デフォルトの名無しさんNGNG
ねむ。。。漏れもそろそろ国家するぞ
0236デフォルトの名無しさんNGNG
国家とリス
0237デフォルトの名無しさんNGNG
C++ では main の return 0; を省略することは規格で許されている。
C では main の return 0; を省略することは規格で許されていない。
0238デフォルトの名無しさんNGNG
そんな役所気質な...
0239デフォルトの名無しさんNGNG
>>226-228
わかりやすい、自演ありがとう。

で、君は何に反論して欲しいんだ ? (藁
0240227NGNG
真実はいかに?俺はどっちでもいいんだけど
0241デフォルトの名無しさんNGNG
>>230で結論出たんだからもういいじゃん。
0242デフォルトの名無しさんNGNG
キャストに変も糞も無いと思うけど?
0243keiNGNG
>>232
レス遅くなってすいません。
どうもありがとうございました。
良い人ばかりで嬉しいです。
0244199NGNG
あーなんか喧嘩になっとる。。。

>>206
互換性がぐちゃぐちゃ?12bit割り当てたつもりが実際はそれ以上割り当てられることもあるとか?
0245デフォルトの名無しさんNGNG
>>242
はぁ ? 腐るほどあるけどな。
まあ、出会ったことないなら、それに越したことはないよ。

>>244
それに加えて、MSB/LSB のどっちからビットを割り当てるとかがぜんぜん決まってないよ。
>>214 が書いてる通り、キャストや外部とのやり取りしないなら問題ないけどな。
0246199NGNG
>>245
この場合はどちらから割り当てるかってのは関係ないと思うけど、「それに加えて」ということは244で言ったことがありえるの!?
0247199NGNG
あー、関係ないと言ったのは例えばbitfield.member=12345;とやった時(12345を受けるだけの大きさを持っている)、
ビットパターンがどうであろうとbitfield.memberの値は12345でしょ?ということ。
0248デフォルトの名無しさんNGNG
>>242
int a = 0xFF000000;

*(char*)&a はなーんだ?
0249デフォルトの名無しさんNGNG
>>245
あんた、何の為にキャストすんの?
ある型を無理矢理、他の型に変換する為に必要だからじゃないの?
それとも、何か他に笑えるキャストがあるとでも?
0250デフォルトの名無しさんNGNG
くだらん! おまえのはなしはくだらん!
0251デフォルトの名無しさんNGNG
>>248
int a=1;にしろよ。0xFF...が入らないという問題も起こりうるだろ。
0252デフォルトの名無しさんNGNG
くだらない事で議論するな。この、方形ヤロウども!!
0253デフォルトの名無しさんNGNG
例えば、速度重視の場合でアライメントが16bitだったとしよう、
で数パターンしかない情報が3つと、フラグが1つの情報が絶対に必要。
そうしたら、普通は1-5-5-5bitで16bit内に情報を詰めると思うんだけど?
勿論キャストなんてしないしですが、エンディアンとやらは問題になりませんか?
値セットや値を取り出すとき。<<>>
0254デフォルトの名無しさんNGNG
>>251
これって、ソフト的なエンディアン判定に使えるんだよな。
0255デフォルトの名無しさんNGNG
>>253
最後の<<>>はなんですの?
0256デフォルトの名無しさんNGNG
>>253
[0] [1]
とデータが入っていると、

リトルエンディアンの場合
[1] << 8 + [0]
が 16 ビット値になる。

ビッグエンディアンの場合
[0] << 8 + [1]
が 16 ビット値になる。
0257デフォルトの名無しさんNGNG
>>253
ならない
が、通常、そのデータを外部に保存する必要がある為
その時にエンディアンが問題となる

>>255
シフトでしょ
0258デフォルトの名無しさんNGNG
>>256
それだと、セット時に値を壊さないか?
0259デフォルトの名無しさんNGNG
x <<>> = 6; とか出来たらちょっと便利かも。
0260デフォルトの名無しさんNGNG
>>258
どの値が壊れるの?
0261デフォルトの名無しさんNGNG
>>257
まったくもって訳わからんよ?
何故、値を保持する目的のデータを外部に
ま・た・保持しなおすの?

よっぽど外部以外の事にしたくなんだね。
0262デフォルトの名無しさんNGNG
>>259
どう言う値が入ると便利だと思ってるの?
0263デフォルトの名無しさんNGNG
>>262
上位nビットをクリアするときとか。
nが変数のとき

x <<>> = n; で上位 n bitクリアできる。

ようするに
x <<= n;
x >>=n;

エンディアンのことは何にも考えてないので突っ込まないでね。
0264デフォルトの名無しさんNGNG
>>261
>>253が言ってる事は
typedef short i16 ; /* short は16bit */
typedef struct { char flag ; char data[3] ; } info ;
これを、キャストを使わずにシフトとビット演算のみで
infoの値をi16にセットしたりi16からinfoの値を取り出す事で
エンディアンとは全く関係ない
0265デフォルトの名無しさんNGNG
>>264
要するにその構造体をパックしたいの?
0266デフォルトの名無しさんNGNG
>>263
&= 使え。
0267デフォルトの名無しさんNGNG
>>263
関係あるのはエンディアンでは無く算術シフトやね
0268264NGNG
>>265
>>253の説明から、それ以外、どのように解釈すれば良いと?
0269デフォルトの名無しさんNGNG
>>264
で、リトルエンディアンとビッグエンディアンで
同じコードで問題無いの?
どっちにシフトするの?
って話じゃないの?
0270デフォルトの名無しさんNGNG
>>268
あ、俺は261じゃないよ。ずっと見ているだけだった。
もしそうならエンディアンは関係ないなぁ。
関係あるのはファイルに書き出すときと読み出すときだな。
0271デフォルトの名無しさんNGNG
>>269
int i = 257 >> 1 ;
この結果がエンディアンで変わるとでも?
0272デフォルトの名無しさんNGNG
>>270
メモリでもエンディアンは問題になるが?
0273デフォルトの名無しさんNGNG
>>272
ファイルからの読み出し時と書き出し時にバイトオーダーを統一する処理をするだろ?
0274デフォルトの名無しさんNGNG
>>274
はぁ?
Bit処理って書いてあるだろ?
0275デフォルトの名無しさんNGNG
>>267
こうだ!

x &= ~0 >> n;

俺って頭いい〜。
0276275NGNG
アンカー間違えました
>>266でつ
0277デフォルトの名無しさんNGNG
今日は、とても芳ばしい香具師がいるようで…
0278273NGNG
ネットワークでのhtonlやntohlみたいに。
0279デフォルトの名無しさんNGNG
>>275
x &= ~0u >> n;

符号ありで符号が残されるかどうかは未定義だけど、
符号なしなら符号ビットは残されない...よね?
0280デフォルトの名無しさんNGNG
>>279
うん
0281デフォルトの名無しさんNGNG
>>279
xを符号なしにキャストすれば
~0uも符号無しの演算になると思う…
0282デフォルトの名無しさんNGNG
で、リトルエンディアンとビックエンディアンで
bit = 1;//ビットのつもり
bit << 6;//6ビット目
valure | bit;//セット
見たくセットして問題ないの?
例えば、マスク処理とかで
valure & 0xf0;//上位ビットが欲しい
なんて場合でも?
0283281NGNG
良く考えたら、やっぱり、駄目やね…
0284デフォルトの名無しさんNGNG
>>282
そういうのは問題ない。
0285デフォルトの名無しさんNGNG
>>282
>bit << 6; /* 6ビット目と言う表現は別にして */
問題ない
ただし、ファイルから読み込む時、ファイルに吐き出す時は要注意
0286デフォルトの名無しさんNGNG
>>282
キャストがなければ大丈夫。
intをキャストでcharに分割したときとか、その逆とかで問題が起きる。
0287デフォルトの名無しさんNGNG
0xf0でマスク取ってるのは問題にならないの?
0288285NGNG
>ただし、ファイルから読み込む時、ファイルに吐き出す時は要注意
は、この場合、全く関係無かったから、無視してちょ
0289デフォルトの名無しさんNGNG
>>287
対象のエンディアンが変われば、マスクのエンディアンだってかわるっしょ。
0290デフォルトの名無しさんNGNG
>>289
だから
valure & 0xf0; /* 上位はエンディアンに関係なく上位だ */
エンディアンを考慮しなければならない時は
(異なるエンディアンの)ファイルをバイト単位で読み込んで
そのまま、何もせずに、マスク処理をほどこす時
0291デフォルトの名無しさんNGNG
そりゃ違うフォーマットのデータだものな。
0292デフォルトの名無しさんNGNG
>>290
突っ込む相手を間違えてるぞ。
0293290NGNG
>>292
書き込んだ直後に気付いたけど
>>287の答えとしては、少し不適切だから
そのままでも良いかと思わなくもなかったり…
0294デフォルトの名無しさんNGNG
まぁね。
0295教えてくださいNGNG
/*InputTest.cpp*/

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

char *ary[1000];
void test();
void main()
{
test();
printf("\n\n");
}

void test() {
char c;
int i=0;
do{
printf("\nEnter string: ");
char s[256];
ary[i] = gets( s );
printf("You typed: %s", ary[i] );
i++;
printf("\n\t****Press any key to continue or quit to press (q)**** ");
c = getch();
}while( c != 'q' );
printf("\nHere:\n");
for( int j=0; j < i; j++ )
printf("\n%s", ary[j] );
}
0296295NGNG
上記のコードだと全て、最後のインプットのみになってしまいます。
本来なら、
dog
cat
bird
となるはずですが、どなたか原因が分る方教えてください。

Enter string: dog
You typed: dog
****Press any key to continue or quit to press (q)****
Enter string: cat
You typed: cat
****Press any key to continue or quit to press (q)****
Enter string: bird
You typed: bird
****Press any key to continue or quit to press (q)****
Here:

bird
bird
bird

Press any key to continue
0297295NGNG
補足です。本来なら
dog
cat
bird
となるはずなのに、
bird
bird
bird
となってしまいます。なぜでしょうか?どなたか原因が分りますか?
0298_NGNG
http://homepage.mac.com/hiroyuki44/jaz09.html
0299デフォルトの名無しさんNGNG
>>295
ポインタを理解してください。
0300デフォルトの名無しさんNGNG
>>297
s[256]はループするたびに書き換わる。
aryにはその領域へのポインタしか入れないんだから、常に最後に入力したものが表示されて当然。
03012NGNG
>>300
ありがとうございます。早速
char s[256];
をループの前、にもっていきましたが、結果はおなじでした。
そのあと、グローバル・バリアブルにしましたが、やはり、
結果は同じでした。
0302297NGNG
でも>>300さん、応えてくださって感謝します。
0303デフォルトの名無しさんNGNG
>>301
なぜそんな事する?
0304297NGNG
>>303
ポインタに慣れていないので、今の自分にはそれが精一杯です。
しかし、charのポインタのアレーを使うことが条件なのです。
0305300NGNG
>>301
要するに>>299
ポインタ配列に入れた値は全てsを指しているからそうなるの。
0306297NGNG
>>305
要するに配列のインデックスをインクリメントしても、全てのインデックス
を指してしまうのでしょうか? インデックスごとに違うものをさすことは
不可能なのでしょうか?
0307300NGNG
>>306
sを二次元配列にするなどして、ループするごとに違う領域に書き込むようにすればよい。
今のままでは大勢で一人を指さしているようなもの。
0308デフォルトの名無しさんNGNG
ary[i] = gets( s );
を
ary[i] = strdup(gets( s ));
にでもしろ。

>しかし、charのポインタのアレーを使うことが条件なのです。
宿題なら余所いけ。
0309297NGNG
>>305
char *c[] = {"dog", "cat", "bird" };
for( int i=0; i < 3; i++ )
printf("%s", c[i] );

このようにテストした時は、ちゃんと大丈夫だったのに。
どうすれば、キーボードのインプットをそれぞれのインデックスに
アサインできるのでしょうか?
0310297NGNG
>>308
ありがとうございます。strdup というファンクションは私の5冊の本の
いずれにもでてないので、知りませんでした。感謝します。

>>307
ありがとうございます。2D配列を使いたいのですが、ポインタの練習
なので、それはだめとのことです。Javaのように簡単ではないですね。
ことでそ。
0311300NGNG
ところで、>>295でコンパイルが通るということはC++としてコンパイルしているんだな。
それと、よく見たらs[]ってブロックを抜けているじゃない・・・
たまたまデータが消えずに残っていたんだな。
0312デフォルトの名無しさんNGNG
>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0313300NGNG
あれ?ブロックを抜けた後じゃなくて関数から抜けたあとだっけ?
自動変数が消滅するのは。
0314デフォルトの名無しさんNGNG
>>313
ブロックでしょ、
たまたま、毎回同じ所に確保されてるっだけかと。
0315297NGNG
>>311
>それと、よく見たらs[]ってブロックを抜けているじゃない・・・
すみません、この意味をおしえてください。

>>312
今回は知らなかったけど、次からそうします。
0316300NGNG
>>315
ブロック(ここではdoの)を抜けた後にブロック内で定義した自動変数sを、ブロックを抜けたあとにポインタを介してアクセスしてもいいのかどうかと・・・・
勘違いしていることがあるかもしれないので自信ない。
0317デフォルトの名無しさんNGNG
朝っぱらから書き込み激しいな
0318300NGNG
少なくともsという名前にはアクセスできないけど、その領域はどうだったかなぁと。
>>314さんはブロックを抜ければその領域は不安定なものになると言っているけど。そうなるのは関数を抜けたあとかもしれないので。
0319デフォルトの名無しさんNGNG
厨房キター!
延髄反射で質問を返してきまふ。
0320デフォルトの名無しさんNGNG
延髄かよ
0321297NGNG
>>316
sはループの中のみと思ったので、ポインタが絡むとそこまで気を
つかわなければいけないんですね。ありがとうございました。

>>317
こちらは今、金曜午後8時です。
0322デフォルトの名無しさんNGNG
とりあえず解法としては
sを2次元にしてary[i]=s[i];とするかmallocしかないと思うのだがどうか?
dog,cat,birdしか入力されないとわかってるならほかにもあるが。
0323300NGNG
>>319
申し訳ない。
こんなこと考えたこともなかったもので。自動変数のアドレスを返すというのは考えたことがあるんだけど。
0324デフォルトの名無しさんNGNG
>>310
ANSI Cにstrdupはないから
0325300NGNG
イメージとしてはループするたびs[]をつくるんだから、毎回消えるとも言えるか。
じゃあ>>314さんの言うとおりでいいのか。
0326デフォルトの名無しさんNGNG
つまりだ、>>295はスレ違いの質問をしているわけだ、と。
>>299-324は釣られてしまった、と。
阿呆な回答なんかしてるんじゃね、と。

>>295
宿題丸投げなら宿題スレへ行け、と。
C++の質問したいならC++スレで叩かれろ、と。
Cで書きたいならはじめからファイル名が間違っているぞ、と。
0327デフォルトの名無しさんNGNG
HP-UX11iのHP Cですが、oracle9.2.0のライブラリをリンクしたCプログラムで
dirname()関数の動作が異なってしまいます。

cc -o test1 -L/oracle/app/oracle/product/9.2.0/lib32/ -lclntsh test1.c

通常は、dirname()の引数で指定してパス名文字列が書き換わることはないですが、
上のコマンドラインでclntshをリンクした場合、dirname()の引数に指定したパス名
文字列からファイル名が削除されてしまいます。
(dirname()のリターン値が示す文字列と同じになる)

何かご存知ないですか?
0328デフォルトの名無しさんNGNG
>>327
>何かご存知ないですか?

知ってる。しかしスレ違いなので書かない。
0329327NGNG
>>328
HP板に逝くべきでしょうか?
0330デフォルトの名無しさんNGNG

米オークションサイトのeBayのツールを日本語化しています。
Resource Hackerで日本語に置き換えているのですが文字化けが発生してしまいます。
日本語化のサイトを見て回ったのですがこのソフトのタイプの対応例が無く、
どのリソースの始めの部分にも

STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

が書いてあったので検索しました所、
かろうじて英語で表示しろという命令らしい?事がわかりました。
fontの指定するリソースが無いので上記の文章で
英語として表示させている?と思うのですが、
これをどのように置き換えれば日本語が表示されますでしょうか?
どなたかお教えいただければ幸いです。
0331デフォルトの名無しさんNGNG
>>330
>>1
スレ違い
0332デフォルトの名無しさんNGNG
C++マンセー
0333デフォルトの名無しさんNGNG
C++はウンコカス
0334デフォルトの名無しさんNGNG
333に反応するやつはさらにカス
0335デフォルトの名無しさんNGNG
>>334
自分のことか?w
0336デフォルトの名無しさんNGNG
一通りCの基本はできるようになったんですが、
次に何をしようか悩んでます。
APIの使い方を覚える?
それとも、SDKでも覚えてWinアプリ作成?
0337デフォルトの名無しさんNGNG
>>336
スレ違い
>>1読め
0338デフォルトの名無しさんNGNG
>>336
http://pc2.2ch.net/tech/#4
0339デフォルトの名無しさんNGNG
>>338
それはネタか?
0340デフォルトの名無しさんNGNG
TCHARとはなんでしょうか?
0341デフォルトの名無しさんNGNG
先生
0342デフォルトの名無しさんNGNG
関数の中に関数を作る方法を教えてください。
0343デフォルトの名無しさんNGNG
>>336
SDKに1票
0344デフォルトの名無しさんNGNG
>>342
C はやめて、Pascal 使え。
0345デフォルトの名無しさんNGNG
>>343
わざと吊られたんだろ?そうだよな?そうだと言ってくれー!
0346デフォルトの名無しさんNGNG
>>340
これです。
#ifdef UNICODE
typedef WCHAR TCHAR , *PTCHAR ;
#else
typedef char TCHAR , *PTCHAR ;
#endif

charやWCHARでなくてTCHARを使っていれば、文字コードが
ワイドキャラクタ環境でもマルチバイト環境でもソースの変更
の必要性がなくなる。

はなっからワイドキャラクタ(=UNICODE)を想定してなければ
charで十分。

0347デフォルトの名無しさんNGNG
初歩的な質問なのですが、gccのオプションの-cってどんな意味があるんでしょうか?
0348デフォルトの名無しさんNGNG
>>347
マニュアルに書いてあるだろ?
0349デフォルトの名無しさんNGNG
>>342
C++ なら工夫すれば作れるんだけどなぁ。
ローカルクラスの static メンバ関数にすれば。
0350デフォルトの名無しさんNGNG
>>348
コンパイルのみでリンクしないと書いてあるのですが、
リンクしないという意味がよくわからなくて。。。
0351デフォルトの名無しさんNGNG
同じこと考えてる奴がもう一人いたか。。
0352デフォルトの名無しさんNGNG
>>347
オプション -o はなんですか?これがヒント。
0353デフォルトの名無しさんNGNG
>>350
オブジェクトファイルをつくって終わり?
0354デフォルトの名無しさんNGNG
もうちょいヒントをください
0355デフォルトの名無しさんNGNG
>>354
とりあえず本でも買って読めよ、
金が無いなら図書館に行けばあるだろう。
大抵の本に書いてある。

こんな事くらいで聞いてるくらいじゃ、この先ずっと聞きっぱなしか?
0356デフォルトの名無しさんNGNG
>>354
ここは初心者質問スレじゃねーんだよ、かえれ!
0357デフォルトの名無しさんNGNG
>>354
a.c -> a.o
b.c -> b.o
a.o+b.o+etc -> a.out
上2行がコンパイルで最下行がリンクです。
0358デフォルトの名無しさんNGNG
>>354
なぜこんなオプションがあるかというと。
たとえばオブジェクトライブラリを作るときに便利だからです。
0359340NGNG
>>346
ありがとう
どこのヘッダーにその定義があるのでしょうか?
windows.hかな?
0360343NGNG
>>345
いえ、わざとではありません。
釣られてもないです
0361346NGNG
>>346, 359
windef.hかな?
0362デフォルトの名無しさんNGNG
>>359
tchar.h
0363デフォルトの名無しさんNGNG
>>351 誰の事よ
0364デフォルトの名無しさんNGNG
>>349
はぁ ? もうちょっと具体的に書いてくれると、もっと笑えると思う。
0365デフォルトの名無しさんNGNG
これじゃあかんのか?
void f()
{
 struct Inner {
  static void foo() {
   std::cout << "foo()" << std::endl;
  }
 };
 Inner::foo();
}
0366デフォルトの名無しさんNGNG
>>364 >>365
スレタイみれ。
0367デフォルトの名無しさんNGNG
>>366
そんなことは分かってるし。
0368デフォルトの名無しさんNGNG
>>367
そんなことは分かってるし。 
0369デフォルトの名無しさんNGNG
つまらん質問ですがおまいら聞いてください。
"C" はなんで "C言語" と言うのでしょうか!?

Fortran COBOL Pascal BASIC

"言語" ってつけるとなんか変に聞こえるんだけど。
0370デフォルトの名無しさんNGNG
石田先生の訳に準拠
以上
0371369NGNG
>>370 ガーン そんだけですか。ガックシ
0372デフォルトの名無しさんNGNG
俺は C と呼ぶことにしているがな。
0373デフォルトの名無しさんNGNG
>>372
えっち
0374デフォルトの名無しさんNGNG
>>369
漏れもCダケで通じるときはCだぞ。
逆に他の言語も後ろに言語って付けることがないとは言えないな〜。
0375369NGNG
みなさん

 すぃ〜

ですか。よかった。なんか周りが "しーげんご" という人ばっかりで。
( "しー" じゃないですよね… )
0376デフォルトの名無しさんNGNG
>>369
もう少し C 言語の歴史を勉強シレ!
0377デフォルトの名無しさんNGNG
でも、イパーン人に対してだけは C 言語って使うな。
C だけだと通じないことが多いだろうし。
0378369NGNG
>>376
へへぇ〜!
顔あらっておととい来ます。

みなさんどもでした!
0379よし@C++NGNG
英語・国語・数学の点数を入力して、それらの点数のうち、どれか一つでも90点以上であれば“合格”、
または平均点が60点以上であれば“合格”と表示するプログラムを、関数構造を使って作成せよ。
という課題がでたんですが、正直全然わかりません。基礎論の授業の前期テストなんでホントは簡単なはずなんですが…
勉強がたりなかったようです(:_;) どなたか教えていただけませんか?
0380デフォルトの名無しさんNGNG
C++かこっちか迷いましたがここに書きます

func().a;

こういう風にできるらしい
びくーりしたーよ
0381デフォルトの名無しさんNGNG
>>379
(・∀・)C/C++の宿題やらせてください。ver10
http://pc2.2ch.net/test/read.cgi/tech/1057070174/
0382デフォルトの名無しさんNGNG
>>379
名前から見ると C++ の質問か?
C++ はスレ違いだぞ。
まぁ、確かにそれは C で十分なわけだが。
そういや、何か上のほうでもちょっと違うけど似たような質問があったなぁ。

点数を入力する関数、
どれか1つでもある点数以上であれば真を、さもなくば偽を返す関数、
平均点を返す関数、
の3つを作ればそれでええんでないかな(main 除く)。

>>380
C++ なら普通に使う。
まぁ、最初は違和感があるやもしれん。
俺もそうだった。
0383デフォルトの名無しさんNGNG
>>380
これは何を表してるのでしょうか?
0384よし@C++NGNG
>>382
スレ違い申し訳ありません。失礼しました。
CとC++の違いも分からないような素人なので。以後気をつけます。
0385デフォルトの名無しさんNGNG
>>383
点が見えずらいかもしれんが、
こんな感じ

struct AAA func();

で、構造体AAAがfuncから帰ってきたから、AAAのメンバにアクセスすると
C++だけどね
0386デフォルトの名無しさんNGNG
>>383
戻り値が構造体なら
そういう風に使うこともあるってことさ。
0387デフォルトの名無しさんNGNG
*func();
こうやって戻り値を間接参照するってのもあまりやらないな。
0388デフォルトの名無しさんNGNG
非 const な参照返しなら func() = 0; てなことも。
まるで関数に代入しているよう。
0389デフォルトの名無しさんNGNG
C++ なら
func()->foo(); ってこともするけどな。
0390デフォルトの名無しさんNGNG
>>388
スレち(ry
0391デフォルトの名無しさんNGNG
>>390
違いを見分けられる男なんですね。
0392デフォルトの名無しさんNGNG
参照なんてCにはないじゃん
0393デフォルトの名無しさんNGNG
>>336
やっぱSDK!
0394デフォルトの名無しさんNGNG
#ifndefと
#if !definedって
何が違うんでしょうか?
親切な方教えていただければ幸いです。
0395デフォルトの名無しさんNGNG
Cだと構造体へのポインタを返して
func()->a
の方が多いかな?
でも、
func().a
も小さい構造体や共用体を返すときには使うよ。
0396デフォルトの名無しさんNGNG
MFCとSDKって何が違うんですか?
普通Windowsアプリを作るときはどちらを使いますか?
言語はどれを使ったらいいんですか?
0397デフォルトの名無しさんNGNG
>>394
歴史の違いもあるけど、
#if defined(MACRO1) && defined(MACRO2)
って使い方ができるようになった。
#ifdef/#ifndef
だけだとこういうことはできない。
0398デフォルトの名無しさんNGNG
>>396
スレ違い。
0399デフォルトの名無しさんNGNG
>>394
同じじゃないの?
0400399NGNG
>>397
そうだったのか・・・ Σ(゚Д゚;
漏れの勉強不足でした・・・
0401デフォルトの名無しさんNGNG
>>397
&&なら
#ifdef MACRO1
#ifdef MACRO2
〜〜〜
#endif
#endif
これでできると思うけど。
0402_NGNG
http://homepage.mac.com/hiroyuki44/
0403394NGNG
>>397
>>401
すっきりしました
ありがとうございます
0404デフォルトの名無しさんNGNG
|| だとちょっとね。
0405デフォルトの名無しさんNGNG
0〜100までの数をランダムで取得して、
それを表示したいんですが、どうやって乱数を
発生させたらいいですか?
0406デフォルトの名無しさんNGNG
>>405
こんな所で聞くより、googleで検索すれば瞬時に分かるんだが。
0407デフォルトの名無しさんNGNG
>>405
rand()
0408デフォルトの名無しさんNGNG
>>394
#elif の場合は、
#elifdef, #elifndef ってのがないから、
defined ってのがどうしても必要になる。
0409デフォルトの名無しさんNGNG
int a=rand(1^100);
printf("%d",a);
0410デフォルトの名無しさんNGNG
>>409
( ´_ゝ`)プッ
0411デフォルトの名無しさんNGNG
なぜ俺はこんなに天才なんですか?
0412デフォルトの名無しさんNGNG
>>409
srand()もコールしる!
0413デフォルトの名無しさんNGNG
そんなこともわからないようじゃ天才とは言えんな
0414デフォルトの名無しさんNGNG
>>413
ここが2chだと言う事を忘れるな。

天才→天災
0415デフォルトの名無しさんNGNG
WinMainが未解決ってどういうことですか?
0416デフォルトの名無しさんNGNG
>>415
問題が山積ということです。
0417デフォルトの名無しさんNGNG
迷宮入り
0418デフォルトの名無しさんNGNG
>>404
とりあえず、
#ifdef MACRO1
#define MACRO1OR2
#endif
#ifdef MACRO2
#define MACRO1OR2
#endif
#ifdef MACRO1OR2
〜〜〜
#endif
ぐらいか。

>>408
ネストすればいいだけだろ。
#ifdef xxx
〜〜〜
#else
#ifdef yyy
〜〜〜
#else
〜〜〜
#endif
#endif

>>413-414
下らん餌に食いつくなよ。
0419デフォルトの名無しさんNGNG
大学の参考書だけでは足りないので、本屋で違ったのを買おうと思って
いるのですが、どの参考書がいいでしょうか?
この参考書を使っているがいいというのがあれば教えてください。
0420デフォルトの名無しさんNGNG
>>415
WinMainを記述してないと言う事。ウインドウズアプリではWinMainが必要。
逆にコンソールアプリではMainが必要。
http://pc2.2ch.net/test/read.cgi/tech/1056280510/l50
で聞くといいよ。
0421デフォルトの名無しさんNGNG
Mainと書いたらコンパイルエラーがでますた。
0422デフォルトの名無しさんNGNG
>>419
足りないところを補う本。
0423デフォルトの名無しさんNGNG
感じない日々を補うための映画ならば泣けるのに
0424419NGNG
>>422
そういった名前の本があるのですか?
0425デフォルトの名無しさんNGNG
>>421
そんなコンパイラは捨てろ。
普通は、リンクエラーだ。
0426デフォルトの名無しさんNGNG
なぜ俺はこんなに最強なんですか?
0427デフォルトの名無しさんNGNG
すんません、簡単な質問なんですけど
現在コンパイラはccを使ってます。
一般的にccとgccってどっちが早いんでしょう?
どっちのほうが使ってる人多いんでしょうか?
ネットで検索かけてもよくわかりませんでしたので
どなたか教えてください
0428デフォルトの名無しさんNGNG
cc はコマンド名。
Solaris だったら Sun C Compiler だろうし、
他のハード/OS なら gcc の別名かもしれない。
0429デフォルトの名無しさんNGNG
cc はユーザーフロントエンドだっけ?
ccはgccを呼んでいるから、直接gccを呼んだほうが早いんちゃう?
0430479NGNG
単なるエイリアスか。
ならいっしょかな。
0431479NGNG
>>427
ちなみに使っているのが多いのはgccだろうな。
>>428の理由で ccが動く処理系よりもgccの動く処理系のほうが多いから。
0432427NGNG
みなさんレスありがとうございます。
これからはgccを使っていこうと思います。
0433デフォルトの名無しさんNGNG
エイリアスというかシンボリックリンク。
0434デフォルトの名無しさんNGNG
なぜ俺はこんなに最狂なんですか?
0435デフォルトの名無しさんNGNG
printfの魅力にとりつかれたから
0436デフォルトの名無しさんNGNG
たまには保守しとこ。落ちたらいやだし。
0437デフォルトの名無しさんNGNG
>>427
質問が不正確だぞ
プログラミングでは「早い」と「速い」を使い分けろ
それから翻訳速度と実行速度のどっちを問うているのかも
いいか、『ものすごく』重要だ
おまえがそもそもプログラミングを学ぶこと自体の意義にかかわることだ

人が多いかどうかはゲスな問題だ
おまえは世の中の何の役に立ちたいんだ?
もしかして、究極に残酷な問題が根底にあるかも知れんぞ
0438デフォルトの名無しさんNGNG
キモイ
0439デフォルトの名無しさんNGNG
コワイ
0440デフォルトの名無しさんNGNG
てか、無茶なことを言っている >>429 への
ツコーミは禁止なんですか?
0441デフォルトの名無しさんNGNG
スレ違いだから禁止
0442デフォルトの名無しさんNGNG
究極に残酷な問題が根底にあるから禁止
0443デフォルトの名無しさんNGNG
LPDWORDって、unsigned long*
だったんですか?
int型のポインタ渡そうとしたら起こられましたけど
0444デフォルトの名無しさんNGNG
>>443
スレ違い。

名前からしてポインタ
0445デフォルトの名無しさんNGNG
unsigned long far*
とみた
0446デフォルトの名無しさんNGNG
>>444
windowsスレのほうですか?
お邪魔しました
0447デフォルトの名無しさんNGNG
環境依存質問なんですが、cygwin + g++ 3.2 で
malloc で 1420 バイトまでしか確保できないんです。
それ以上確保しようとすると Segmentation fault します。
(C++ の) new char[] でも同様で例外さえ投げずにコア吐きます。
そこまでにヒープを明示的に使っている個所はなく、
メモリが足りないとは思えません。また malloc やメモリアロケータを
置き換えたりもしていません。
何故こんな事になってしまっているのでしょうか?
0448444NGNG
int型の"ポインタ"と言っているな。見間違えた。見当違いなレスをしてしまった。
0449デフォルトの名無しさんNGNG
>>447
mallocを呼ぶとセグメンテーション違反?
信じられないな・・・
0450447NGNG
環境を書くのを忘れていました。
80486でメモリは1Mです。
0451447NGNG
追記です。
malloc(1420) の直後に
malloc(1) としても駄目です。
はじめから
malloc(1421) でも駄目です。
挙動としてはメモリ不足にも見えなくはないんですが
それなら 0 が返ってきますよね?
0452デフォルトの名無しさんNGNG
>>451
malloc(1421)とだけ書いたコードでもそうなるの?
0453447NGNG
>>450
それなら理由もわかるんですが…。
本当は 8086 で 640k ですた!

なんちゃって、本当は P4 で 1024M です。
0454デフォルトの名無しさんNGNG
>>447
実際にエラーを起こす、出来るだけ簡単なコードを晒してみそ
0455447NGNG
>>452
はい、>>451 で書いた感じになります。
1420 単体は OK で、はじめからそれ以上でも、
その後に追加でも NG です。
0456デフォルトの名無しさんNGNG
#include <stdlib.h>
int main()
{
malloc(1421);
return 0;
}

これだけでセグメンテーション違反・・・・やっぱり信じられない。
0457デフォルトの名無しさんNGNG
バッファーオーバーなんとやら?
どっかでメモリをおかしな状況にしてるとか?
0458デフォルトの名無しさんNGNG
>>456
ちゃうやろ
そこまでにとかいているから、他の処理部分もあるんやろ?
でなきゃやってられねーぜアニキ
0459452NGNG
>>458
452の質問に「はい」と答えているから・・・
0460デフォルトの名無しさんNGNG
>>447
レッツ再起動
0461447NGNG
>>454
晒そうと思って簡単なコードを書こうと思い、 >>456 さんの書いたコードと同じ物で試したら大丈夫でした。
というかバリバリ平気で 10メガくらい普通に確保できてるみたいです。

でよく考えたら stdlib.h インクルードして中田のですが、
恐ろしいことに windows.h に宣言が入っているみたい…
大丈夫だった時はライブラリを指定しなかったのですが、
これはリンクしてるライブラリを疑うべき状況でしょうか?
0462デフォルトの名無しさんNGNG
そういえばうちの環境だとwhile(malloc(1))とやるとそのうちkillされるな。
NULLが返る前に。
0463デフォルトの名無しさんNGNG
gcc のコンパイルに失敗してたり?
0464デフォルトの名無しさんNGNG
>>461
なら確保した領域の扱い方に問題がある可能性が高い。
きっとどこかでうっかりミスしていると思うよ。
0465デフォルトの名無しさんNGNG
>>461
君の全く別の部分のコードを疑うべき!!
多分変なところのメモリを書き換えちゃってる。
0466デフォルトの名無しさんNGNG
>>447
gccなら↓にチャレンジ♪

#include <stdlib.h>
int main()
{
int i=1421;
char buf[i];
return 0;
}
0467デフォルトの名無しさんNGNG
なぜ書き込みがない?
0468447NGNG
>>464
まだヒープから確保したものを使ってないんです。

そろそろスレ変えるべきかもと思いました。
こちらの説明にもだいぶ Windows SDK 色がでてきたので…。

>>456 さんの指摘する通りのメモリ破壊の可能性を探ってみて
その可能性もないと判断できたら Windows API系のスレに再度質問しようと思います。
みなさんありがとうございました。
0469デフォルトの名無しさんNGNG
>>468
WinのAPIじゃなくてgccのスレの方が良いと思うが…
0470デフォルトの名無しさんNGNG
ハゲ同
この場合、APIは関係ない
0471447NGNG
>>469-470
そうみたい…。
問題があると思っていたDIB取り扱い部分を切り離して
メッセージループ付近で
単純に1メガ確保→直後に解放
のコードを書いただけで駄目だったっぽいです…。
gcc のライブラリってヒープ足りなくなったらって自動的に OS から追加確保してくれないんですっけ?
0472デフォルトの名無しさんNGNG
>>471
自動的にヒープを追加してくれる OS の存在を、私は知らない。
0473472NGNG
って、ちょっと話の内容を勘違いしたかも。
0474デフォルトの名無しさんNGNG
(・д・)
Cってまだ現役なんだなあ...とこのスレ見て感動
0475デフォルトの名無しさんNGNG
ダマレコゾウ >(・д・,,)
0476デフォルトの名無しさんNGNG
関数の最後で、よくポインタ変数をインクリメントしているのを見るんですが
これはいったいどんな役割があるんですか?
0477デフォルトの名無しさんNGNG
>>476
具体例を挙げてみてくれ。
0478476NGNG
void sample(char **x, int *k, int n)
{
while(n-- >0){
switch(**x){
case '0':
sscanf(*x+1, "%o", k);
break;
case 'x':
sscanf(*x+1, "%x", k);
default:
sscanf(*x, "%d", k);
break;
}
x++;
k++;
}
}

xはmainで読み込んだ文字列。
nは読み込んだ文字列の数です。

文字列の先頭の文字によって読み込む進数を変えるプログラムです。
0479476NGNG
スペースがちゃんと適用されてない・・・見えづらくてすいません。
しかもsage忘れた(;´Д`)
0480デフォルトの名無しさんNGNG
>>479
関数の最後ではないではないか。
ループをひとつ回る毎にxとkを進めてるだけで、
つまりは次の文字列(x)とその文字列の数(n)を処理するようにしてるってことだ。
0481デフォルトの名無しさんNGNG
>>478
ループカウンタを用意してやった方が分かりやすいと思うがなぁ。

void sample(char **x, int *k, int n)
{
 int i;
 for(i = 0; i < n; ++i) {
  switch(x[i][0]) {
  case '0':
   sscanf(&x[i][1], "%o", &k[i]);
   break;
  case 'x':
   sscanf(&x[i][1], "%x", &k[i]);
   break;
  default:
   sscanf(x[i], "%d", &k[i]);
   break;
  }
 }
}
0482デフォルトの名無しさんNGNG
void sample(char **x, int *k, int n)
{
 int i;
 for(i = 0; i < n; ++i) {
  switch(x[i][0]) {
  case 'x':
   k[i] = strtol(&x[i][1], NULL, 16);
   break;
  default:
   k[i] = strtol(x[i], NULL, 0);
   break;
  }
 }
}
0483476NGNG
>>480-482
いろいろなアドバイス、どうもありがとうございましった!!
0484デフォルトの名無しさんNGNG
while(n-- >0){
これってwhile(n--){でいいよね。
0485デフォルトの名無しさんNGNG
よくない。
0486デフォルトの名無しさんNGNG
nはintだから負の場合もある
0487デフォルトの名無しさんNGNG
>>485
なんで?nの初期値が負だった場合に違いが出るから?
0488487NGNG
やっぱり・・・
「読み込んだ文字列の数」なのに負の数を渡す方が悪いと思うけど・・・
0489デフォルトの名無しさんNGNG
カウンターコードというやつじゃよ。
0490デフォルトの名無しさんNGNG
>>488
例えば君が仕事として関数を作り、それをDLLとして提供したとしよう。
たまたま実行中に引き数が負になる状況が発生したら、
そんな暢気なことは言えなくなるのだよ。
0491デフォルトの名無しさんNGNG
wihle(1)
{
printf("あれれ・・・止まんないよー\n");
}
0492デフォルトの名無しさんNGNG
>>484
if(n>0)
 while(n--){
0493デフォルトの名無しさんNGNG
たまたま実行中に末尾に'\0'のつかない配列をstrlenに渡したり、書き換え不能な領域をstrcatの第一引数にする状況が発生したら、
そんな暢気なことは言えなくなるのだよ。
0494デフォルトの名無しさんNGNG
たいしてコード量が増えないなら、安全側にプログラムするのは職業プログラマなら常識。
>>493 みたいなこという奴はおこちゃま。
0495デフォルトの名無しさんNGNG
>>478
%oと%xに対応するのはunsigned int *
0496デフォルトの名無しさんNGNG
>>494
自分が増やしたコード量を認識してないらしいな
なんせ「常識」つーくらいの常習者

STOPダイアログやSegmentation Faultとの重複コード書いて何やってんの?
0497デフォルトの名無しさんNGNG
>>496
> STOPダイアログやSegmentation Faultとの重複コード書いて何やってんの?

日本語に訳してくれ。
0498493NGNG
496は俺じゃないからな・・・
安全を云々言うならunsigned intにするが。
0499デフォルトの名無しさんNGNG
>たまたま実行中に引き数が負になる状況が発生したら、

だいいち責任範囲というものがまるでわかってない
他社製品のバグが出たときの対応まで保証してられるか
0500デフォルトの名無しさんNGNG
500
0501デフォルトの名無しさんNGNG
だいいち人生はトラップだらけということがまるでわかってない
0502デフォルトの名無しさんNGNG
と言うか責任範囲とかにすりかえてる点で、既に使えない奴の烙印は押されてるよ。
0503デフォルトの名無しさんNGNG
だいいち人生の主人公は自分だけということがまるでわかってない
0504デフォルトの名無しさんNGNG
int i[]={0,1,2,3,4,5,6,7,8,9};
これがOKで、

int i[][]={
{0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8},
{10,11,12,13,14,15,16,17,18}
};
これはダメ、、どうして?
0505デフォルトの名無しさんNGNG
>>504
配列の要素の大きさが分からないから。
int i[][N]ならOK(Nは定数)
0506デフォルトの名無しさんNGNG
>>504
仕様です。
0507デフォルトの名無しさんNGNG
規格博士に質問です

malloc()で割り当てられた(NULLでない)ポインタpを
remalloc()に渡し、メモリの再割り当てに失敗した(NULLが返ってきた)時は
元の領域は、解放されるんでしょうか?
それとも、領域は残っているのでしょうか?

また、fopen()で開いたストリームの(NULLでない)ポインタfpを
freopen()に渡し、ストリームを開くのに失敗した(NULLが返ってきた)時は
元のストリームは、閉じているのでしょうか?
それとも、開いたままなのでしょうか?

自分で同様の関数を書けば関係ないと言われそうですが
規格上で、どうなってるのかを知りたいので宜しくお願いします
0508507 訂正NGNG
× remalloc()に渡し、メモリの再割り当てに失敗した(NULLが返ってきた)時は
○ realloc()に渡し、メモリの再割り当てに失敗した(NULLが返ってきた)時は
0509デフォルトの名無しさんNGNG
>>507
規格博士じゃないが。

s/remalloc/realloc/だよな? 元の領域は解放されずに残るよ。
だからrealloc前のポインタは保存しておかないとfreeできなくてリークしちゃう。

freopenは、成功しようが失敗しようが元のファイルはfcloseされる。
0510デフォルトの名無しさんNGNG
>>509
サンクスコ
これで、安心して眠れます
0511デフォルトの名無しさんNGNG
>>509

いやあ、昔々のC言語だと、reallocに失敗するとメモリが
解放されちまったのよ。そんなバカなと思うだろうが、
実際バカなので、今じゃ直ってるけどな。

ANSI-C以前の暗黒時代の話なので、今時そんな実装を気に
する必要はないが。
0512デフォルトの名無しさんNGNG
BCBスレで聞いてたのですが、こちらのスレの方にあってきたので質問させてください。
ある固定長のデータを構造体にコピーするときアライン以外に気をつけることはありますでしょうか?

char []="0123456789" を

struct hoge{
char a[4];
char b[3];
char c[3];
};
にコピーして要素ごとに処理しやすくしたいんです。
当然、各要素の最後に"\0"がないので取り出した要素の使い方にも注意が必要ではあるのですが。

0513デフォルトの名無しさんNGNG
↑
char hogehoge[]="0123456789";
としてください。失礼。あ、"\0"が・・・うーむ・・・。
0514デフォルトの名無しさんNGNG
別にそのままでも変わらないような気がするんだが
やっぱウニオンかな
union hoge{
char hogehoge[10];
struct{
char a[4];
char b[3];
char c[3];
};
} hage={"1234567890"};

int main(){
fwrite(hage.a,1,4,stdout);
return 0;
}
0515山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0516デフォルトの名無しさんNGNG
質問です。
みなさんが gets ではなく fgets を使えと おっしゃるのは、getsにバッファ長の引数が無く、
バッファオーバーランの危険があるという理解でよいでしょうか?
0517デフォルトの名無しさんNGNG
>>516
>>1のC FAQ 日本語訳を見ての発言でしょうか?
0518デフォルトの名無しさんNGNG
>>514
printf("%.4s\n", hage.a);
或いは
printf("%.*s\n", sizeof(hage.a), hage.a);

って、書いてから気付いたけどstructに名前がついてないな。
struct {...} s;
として、
hage.s.a
か。

>>516
そうです。
0519デフォルトの名無しさんNGNG
>>518
hage.a にアクセスしたじてんで、hage.a は[1][2][3][4][\0]になるのでしょうか?
0520デフォルトの名無しさんNGNG
>>519
んなわきゃーない。
0521デフォルトの名無しさんNGNG
>>520
ああ、だからsizeof(hage.a)でブッコ抜くんすね。
"\0"がないから、char *tmp=hage.a; とかってすると、hage.bやらhage.c やらも引っ付いてくるのが
気持ち悪かったのでつ。
0522デフォルトの名無しさんNGNG
int i;
for(i=0;i<10;i++) ;

無限ループになります。なんで?
コンパイラのバグですか?
0523デフォルトの名無しさんNGNG
おまえのPCが遅すぎるんだ
0524デフォルトの名無しさんNGNG
>>522
それはコンパイラのバグ

そういやIntelのコンパイラで
short i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("%d%d\n, i,j );
}
}
とやると、外側のループが1回しか実行されないバグがあったな
0525デフォルトの名無しさんNGNG
>>524
shortなんか使うなという教え
0526デフォルトの名無しさんNGNG
>>522
参考までにコンパイラと OS を教えちくり。
0527デフォルトの名無しさんNGNG
>>526
Mini-C,Win98SEです
0528デフォルトの名無しさんNGNG
Mini-Cってなんだろう・・・
0529デフォルトの名無しさんNGNG
Mini-C...初めて聞く名だ。
とりあえず Mini-C だと空ループは無限ループになる...と。 、、φ(.. ) メモメモ
0530デフォルトの名無しさんNGNG
Z80。。
0531デフォルトの名無しさんNGNG
ネット上や参考書等のC言語ソースで、例えばfopen関数の戻り値はチェックするのに
fclose関数の戻り値をチェックをしていなかったりしています。なぜか自分も自然とそのように
プログラミングしてしまっていますが、このようにエラーのチェックをする時としない時があるのですが、
何を基準にしてする時としない時に分けられるのでしょうか?C言語に特化しておらず、抽象的な話かも
しれませんが、意見を聞きたいのでよろしくお願いします。
0532デフォルトの名無しさんNGNG
>>531
fclose()失敗したって何もフォロー出来ないからね…
0533デフォルトの名無しさんNGNG
>>531
戻り値を特に使用しない場合は受け取らない。
0534デフォルトの名無しさんNGNG
>>531
fopen(file, "r");
のときは
fclose()
の戻り値は無視していい。
しかし、
fopen(file, "w");
のときの
fclose()
の戻り値はチェックしてフォローする必要がある。

>>532
エラーメッセージくらい出さないのか?
0535デフォルトの名無しさんNGNG
>>534
どういう時に失敗するの?
つーか、その前に、読み書きで失敗しない?
0536デフォルトの名無しさんNGNG
for example.

/* ディレクトリエントリの読み出し */
FILE *fp = fopen("foo", "w");
char buf[200];
/* ここも当然、読むだけ */
fgets(buf, sizeof(buf), fp);
/* ここでは読みこみも書き出しも発生しないので通常、エラーになり得ない */
fclose(fp);

/* ディレクトリエントリの作成、当然ファイルの実体はない */
FILE *fp = fopen("foo", "w");
/* バッファリングされるのでここでは書き出されない */
fprintf(fp, "bar\n");
/* ここでフラッシュされるので、書き出しが行なわれる */
fclose(fp);

というわけで、ディスクフルのときにライト時のfclose()でエラーが発生する。
0537デフォルトの名無しさんNGNG
>>535
fflush(3)
close(2)
0538531NGNG
malloc関数のようなアプリケーションエラーとなる致命的なところでは
エラーチェックは当然だと思うのですが、あたりまえのように
使っていたりするstrcpy関数等も必ずチェックしなければいけないと
思います。確かに戻り値を拾ってきてもエラー文出すぐらいしか
できませんが…。経験で知れということなのでしょうか。
0539デフォルトの名無しさんNGNG
>>538
strcpy()はエラーを返さない。
0540デフォルトの名無しさんNGNG
strcpy なんか使わんし。
0541デフォルトの名無しさんNGNG
>>536
それって、オープンした時にエラーが出るでしょう?

>>537
そりゃ、不正なポインタを渡せばエラーが出るのは当然で
そんなプログラム書く香具師の方が悪いと思うけど?
0542デフォルトの名無しさんNGNG
>>535
他のプログラムから削除されたりとか、
ディスクをいきなり取り出したりとか、
ディスクがいかれたとか、
まぁ、いろいろありそうやね。
特にゲーム機のメモリーカードとかだと
そういうことに気をもむ必要はありそうやね。
0543531NGNG
strcpy -> strcmp 間違いでした。
0544デフォルトの名無しさんNGNG
>>542
メモリーカードか…
それは、考えた事なかったな…
0545デフォルトの名無しさんNGNG
fopenとかfcloseでメモリーカードのデータが読めるゲーム機なんてあるの?
システムコールとか使うんじゃないの?
0546542NGNG
まぁ、ゲームプログラマからの受け売りなのだが。
0547デフォルトの名無しさんNGNG
>>543
strcmpはエラーが発生しない(errnoにだってなにもセットしないよね?)
しかしあれは戻り値を見ないと何も意味がない・・・
0548デフォルトの名無しさんNGNG
>>545
まぁ、何を使うかは別としてやね。
0549535NGNG
基本的に他のプログラムに削除されるなんて事は考える必要ないと思うし
稼動中のディスクを抜き差しする香具師の事も考える必要はないと思うけど
(ディスクが壊れるのは(特殊なプログラムを除いて)論外)
確かに(ゲーム機に限らず)メモリーカードのように
動いてるのが見えないものの抜き差しは考えた方が良いかも知れないですね…
0550デフォルトの名無しさんNGNG
自分で検証もしないで推量だけで折角のヒントを否定する痛い
香具師が集まるスレはここですか?
0551デフォルトの名無しさんNGNG
>>550
違います
0552デフォルトの名無しさんNGNG
>>535
>基本的に他のプログラムに削除されるなんて事は考える必要ないと思うし

あ〜あ。
ついでに言えば、ディスクフルになることも考慮しないのかな?
0553デフォルトの名無しさんNGNG
>>552
それは絶対に他の何処かでエラーが出るでしょう
0554デフォルトの名無しさんNGNG
>>552
書き込み時にチェックしないの?(^_^;)
0555553NGNG
ごめん、バッファに溜まってたら出ないね
0556553NGNG
>>554
FILE *fp = fopen( "xx", "w" ) ; /* 開く */
fwrite ( buf, 1, 8192, fp ) ; /* バッファに溜まる */
fclose ( fp ) ; /* ディスクが一杯 */
0557デフォルトの名無しさんNGNG
>>556
いつもバッファリング無しにしているから
0558デフォルトの名無しさんNGNG
>>557
俺は必ずfflush()してるから失念してた
0559557NGNG
まあ冗談はおいておいて、ディスクフルまで考えたことはなかったかなぁ。
0560デフォルトの名無しさんNGNG
>>559
フロッピーなんて、たった1.4MBしか使えないんだからすぐ一杯になるよ。
0561デフォルトの名無しさんNGNG
フロッピーってなに?
0562557NGNG
>>560
そういえばそうだねー
メモリーカードもフロッピーほどじゃないけどディスクフルになる可能性が高いかも・・・
いつもHDにしか書き込まないもので
0563デフォルトの名無しさんNGNG
ところで、>>536のコードって、オープンした時に
NULLが返ってくると思うんだけど、
そのまま、fgets()やfprintf()にNULLを渡して大丈夫なの?
0564デフォルトの名無しさんNGNG
プレステ場合は容量決めとくのが普通だから
ディスクフルはあまり考えんでもいい気もする。
0565デフォルトの名無しさんNGNG
>>564
ゲーム機じゃなくて、フラッシュメモリとかを考えようよ
0566デフォルトの名無しさんNGNG
>>565
書き込む前に空き容量を調べるんじゃないの?
あれこそ他から書き込まれるおそれはないし。
0567デフォルトの名無しさんNGNG
>>566
Cに空き容量調べる関数なんて無いし
0568566NGNG
カードの故障まで考えるとそうはいかないかな?
0569566NGNG
>>567
Cの標準関数だけでやるのかよ!
0570デフォルトの名無しさんNGNG
段々スレ違いになってきた。
0571デフォルトの名無しさんNGNG
>>570
んじゃ、質問。
fopen()で得たポインタの実体がmalloc()で確保されてる場合
fclose()に失敗したら、その実体はfree()されるの?それとも、リークするの?
0572デフォルトの名無しさんNGNG
>>571
環境変数MEMLEAK_JOTOを検出した場合はリークする。
0573デフォルトの名無しさんNGNG
糞レスしたらスレ一覧のレス数に反映されんかった・・・
0574デフォルトの名無しさんNGNG
>>572
何その変数
0575デフォルトの名無しさんNGNG
ギャグなんだから笑ってやれよ
0576デフォルトの名無しさんNGNG
>>571
mallocで確保すると決められてはいない以上、どうなるかはライブラリのつくりに依存するんじゃない?
0577デフォルトの名無しさんNGNG
errno の取り得る値ってのは仕様では決められてないの?
0578デフォルトの名無しさんNGNG
>>576
まぁ、malloc()とは限らないけど、
基本的には、何かしらの方法で容量を確保する(されてる)訳で、
それを再利用出来るのだろうか、と言う事
それとも、どうせ僅かな容量なのだから、
そんな細かい事は気にするなって事なのだろうか…?
0579デフォルトの名無しさんNGNG
昔は何個くらいか固定長でとってある実装が普通だったと思うけど、
今はどうなってるんだろうね。
0580デフォルトの名無しさんNGNG
>>577
int












って話じゃなくて、何処から、何処までが処理系で
何処から、ユーザが使用して良いかって事?
0581デフォルトの名無しさんNGNG
>>578
様々な要因でfcloseに失敗してもメモリーの解放はできると思うから、しなかったらライブラリのバグじゃねーか?
0582デフォルトの名無しさんNGNG
>>580
errno の取る値がマクロか何かでよく定義されてあるけど、
それに互換性はあるのかってこと、と言ってもいいかもしれん。
0583デフォルトの名無しさんNGNG
>>581
でも、1度 fclose() に失敗しても、
もう1回やれば成功しない保証は無いと考えれば、
解放する方が、バグって考え方もあるよね
0584デフォルトの名無しさんNGNG
>>583
複数回クローズを試みるのか!
それは考えなかった!
0585デフォルトの名無しさんNGNG
>>582
互換性が無いから、値を #define してるのだと思われ
ちなみに、Cで標準に定義されてるのは
EDOM EILSEQ ERANGE
の三つだけ…
つーか、これ、1つも使った事ないし…
0586デフォルトの名無しさんNGNG
ERANGEってstrtolで発生するあれか

>>583
http://www.bohyoh.com/CandCPP/C/Library/fclose.html
無条件に解放しそう・・・
0587デフォルトの名無しさんNGNG
K&R のさ、malloc/free の実装の説明のさ、morecore ってあるじゃん。
あれの 下から 2 行目くらいの free((void*)(up + 1)); って何?
俺にはどう見ても sbrk から返されて s.ptr が不定な状態のチャンクを
解放しに行ってるようにしかみえないんだけど、何がしたいの?
0588デフォルトの名無しさんNGNG
>>586
freopen()の説明なんか見ると、
失敗は無視するって書いてあるから、
fclose()も同様に、失敗は無視して解放するのかな…
と言う事は、1度fclose()に失敗したストリームに
2度目のfclose()は無いのだろうか…
0589デフォルトの名無しさんNGNG
>>587
ソースを見てみないと分からないけど、俺には
>free((void*)(up + 1));
が、何故キャストしてるのかの方が不思議だ
もしかして、upってポインタじゃないとか?
0590デフォルトの名無しさんNGNG
Cコンパイラさっぱりワカンネ
0591デフォルトの名無しさんNGNG
最短経路を求めるアルゴリズムはDIJKSTRA法がありますが
最長経路を求める方法はありませんか?
0592デフォルトの名無しさんNGNG
>>585
なるほど。
標準なのは3つだけなんですか。
よく分かりました。
0593デフォルトの名無しさんNGNG
http://lvpeace.hp.infoseek.co.jp/index.htm
   ↑
みなさん、薬物、犯す、暴力三昧の元暴走族が
子供を二人産み過去を自慢するようなHPを
立ち上げて「遠い過去の事です♪」などと平和に語っております。
どう思いますか。特攻お願いします。

抜粋
>過去の己を描いただけのHPであることをご理解して欲しい
>俺は最近の族じゃないから!過去だから過去、昔!OK?
>それで俺は最近は族ではなく任侠団体にいたんだよ
>ちゃんと読んでから書き込みして下さいね
http://lvpeace.hp.infoseek.co.jp/yaki.jpg
http://lvpeace.hp.infoseek.co.jp/zoku5.gif
0594デフォルトの名無しさんNGNG
半角文字なら下のプログラムでできたんですが
全角文字じゃできません。考え方を教えてください。l初心者です。
scanf()やfor文とかしか知らなくてもできると言われたのですが
#include <stdio.h>
void main(void)
{
char a[100];
int i;
i=0;
scanf("%s",a);
while(a[i]!='\0')
{
i++;
}
for(i=i-1;i>=0;i--)
{
printf("%c",a[i]);
}
}
0595デフォルトの名無しさんNGNG
>>594
「全角文字」が2バイトの文字であるとする。
#define BYTE_OF_MBCHAR 2
#define STRINGNIZE_IMPLEMENTATION(x) #x
#define STRINGNIZE(x) STRINGNIZE_IMPLEMENTATION(x)
#include <stdio.h>
void main(void)
{
char a[100];
int i;
i=0;
scanf("%s",a);
while(a[i]!='\0')
{
i++;
}
for(i=i-BYTE_OF_MBCHAR;i>=0;i=i-BYTE_OF_MBCHAR)
{
printf("%" STRINGNIZE(BYTE_OF_MBCHAR) "s", &a[i]);
}
}
0596デフォルトの名無しさんNGNG
>>594
>半角文字なら下のプログラムでできたんですが
何が?
>全角文字じゃできません。
何が?
>考え方を教えてください。
何をしたいのか教えてください。
>初心者です。
言い訳のつもり?
0597デフォルトの名無しさんNGNG
説明不足でした。
12SD と入れたら DS21
あ位う123絵オ と入れたら オ絵321う位あ
という感じに出力されるプログラムです
0598デフォルトの名無しさんNGNG
ANSI以前の書式で書かれたソースをANSI形式に変換するツールってありますか?

int function(giko mona)
int giko
char *mona
{

}
↑のようなのを↓のような風に変換したいのですが、大量にあって手作業では時間がかかりすぎるのです。
int function(int giko , char *mona)
{

}
0599デフォルトの名無しさんNGNG
perl
0600デフォルトの名無しさんNGNG
コンパイルの仕方が分かんないです
OSウインドウズXP使ってるんですが
とりあえずBorland C++ Compiler 5.5落としてきて
#include <stdio.h>

maim()
{
printf("TEST");
}
てファイルをメモ帳で書いてtest.cって名前で保存してみたら
一応test Cファイルって出来ました。

コマンドプロンプト
C:\Document ***>bcc32 text.c
て入力してみたんですが
'bcc32' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とかでます。
0601デフォルトの名無しさんNGNG
>>600
UNIXスレで見たような....
本家のFAQに書いてあるので、それも含めてFAQを全部見ておいたほうがいい。
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
0602デフォルトの名無しさんNGNG
極私的C言語講座 - 環境設定 - Borland C++ Compiler (BCC) の場合
http://member.nifty.ne.jp/Norino/c_lang/c_lang_setup_bcc.html
0603デフォルトの名無しさんNGNG
>>594>>597
#include <stdio.h>
#include <string.h>
int main(void)
{
    const char s[11]="1山2本3山4";
    char s2[11];
    int i,l,c;
    for(i=0,l=strlen(s),c=0;i<l;i++)
        if(c){s2[i]=s[l-1-i+1];c=0;}//前がワイド文字
        else if(s[i]<=-1){s2[i]=s[l-1-i-1];c=1;}//ワイド文字
        else{s2[i]=s[l-1-i];}//普通文字
    s2[i]='\0';
    printf("%s\n",s2);
    return 0;
}
0604デフォルトの名無しさんNGNG
>>602
ありがとうございます。
結構分かり易いとりあえず書いてあることやってみました。
完璧と思ったのに、何故か
C:\>pathで
c:\borland\bcc55が出てきません・・・
環境変数のPATHのとこにはちゃんと書いたのに
てか、PATHの他の変数間違えて消しちゃったし・゚・(ノД`)・゚・
どうしおう
0605デフォルトの名無しさんNGNG
>>604
WinXPだったら一度ログオフしないといじった環境変数が有効にならなかったような。
0606デフォルトの名無しさんNGNG
>>605
ありがとうございます!
再起かけてみたらちゃんとなりました多謝!!

・・・でも血迷って消しちゃった他の変数は・゚・(ノД`)・゚・
ど、どうなっちゃんですかね。。。
0607デフォルトの名無しさんNGNG
構造体のポインタの配列を考えているのですが、
構造体 STRUCT が STRUCT の配列
STRUCT **children;
を持つ構造体としたとき、
STRUCT test;
を考えます。
このとき、test の配列 children の要素数 length を動的に取得し、
test->children の要素数 length だけ malloc したいのですが、
test->*childeren = (STRUCT *)malloc(length * sizeof(*STRUCT));
だと、左辺側でエラーになります。
どうすればよいでしょうか。

よろしくお願いします。
0608デフォルトの名無しさんNGNG
sizeof(*STRUCT))
0609デフォルトの名無しさんNGNG
・・・でもbcc入力しても相変わらず
'bcc32' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とか言われちゃいます。。。
0610デフォルトの名無しさんNGNG
>>609
BCCスレ池
0611デフォルトの名無しさんNGNG
#include<stdio.h>
int main()
{
int *ptr;
int num[2];
ptr = num;
*ptr = 20;
*ptr++=100;
*ptr++=200;

printf("%d\n",num[0]);
printf("%d\n",num[1]);

return 0;
}

このプログラムを実行すると
100
200
と出力されるのですが、*ptr=20の値はどこに行ったのでしょうか?
またnum[2]→num[1]に変更すると
100
204
というように値が変わって出力されてしまいます。

0612デフォルトの名無しさんNGNG
ダーリン、オーバーランだっちゃ
0613デフォルトの名無しさんNGNG
>>607
意味が分からない
欲しいのは、ポインタの配列?
それとも、実際の配列?
0614デフォルトの名無しさんNGNG
やっぱりここもスレ違いなのか。。。
>>610BCCで検索しても何もでないんですよ。。。
0615デフォルトの名無しさんNGNG
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/
0616デフォルトの名無しさんNGNG
>>615
ありがとうございます
思いっきり似たような話題でてますね
さっきの質問コピペようかと思ったけど、ちょとじっくり読んでみます。
0617デフォルトの名無しさんNGNG
>>611
自分で上書きしておいてどこに行ったもなにもないでしょ
0618デフォルトの名無しさんNGNG
>>611
『後置インクリメント』でググってみよう。
0619607NGNG
>>613
欲しいのは(malloc したいのは)構造体のポインタの配列です。
0620デフォルトの名無しさんNGNG
>>619
test->childeren=(STRUCT**)malloc(length*sizeof(STRUCT*));
0621デフォルトの名無しさんNGNG
12SD と入れたら DS21
あ位う123絵オ と入れたら オ絵321う位あ
という感じに出力されるプログラムお願いします。
printf()、scanf()やfor文、if()、while()、for()、配列だけで
できると言われたのでそれらだけで作ってください。
0622デフォルトの名無しさんNGNG
同じ質問見たが、宿題か。
0623デフォルトの名無しさんNGNG
ただしつこいだけです。constなんて習ってません
0624デフォルトの名無しさんNGNG
>>623
習ってないなら自ら学べ
0625_NGNG
http://homepage.mac.com/hiroyuki44/
0626デフォルトの名無しさんNGNG
>>624
激しくガンガリます(`・ω・´)
0627デフォルトの名無しさんNGNG
・・・正直みんなブチ切れています。
これが多額の税金で更生しPCの(?)職業訓練された元暴走族の方のHPです。
自分のかけた迷惑を省みず大事にしてるお子さんが二人います。

http://lvpeace.hp.infoseek.co.jp/index.htm
   
みなさん、薬物、犯す、暴力三昧の元暴走族が
子供を二人産み過去(+薬物の使用経験)を自慢するようなHPを
立ち上げて「遠い過去の事です♪」などと自慢気に語っております。
どう思いますか。掲示板へ直行お願いします。

抜粋
>過去の己を描いただけのHPであることをご理解して欲しい
>俺は最近の族じゃないから!過去だから過去、昔!OK?
>それで俺は最近は族ではなく任侠団体にいたんだよ
>逮捕12回(結構頑張ったでしょ)
http://lvpeace.hp.infoseek.co.jp/yaki.jpg
http://lvpeace.hp.infoseek.co.jp/zoku5.gif

正直、私たちの重税がこのような方に注ぎ込まれてる訳です。
施設・刑務官・警察の特別手当、いくらあっても足りません。
どうしたら理解して頂けるんでしょうか?
0628デフォルトの名無しさんNGNG
>>621
まず文字コード体系を判定する必要がある。
日本語などの多バイト文字はコード体系が変われば処理も変わる。
0629_NGNG
http://homepage.mac.com/hiroyuki44/
0630デフォルトの名無しさんNGNG
const char *c="abcdefg1234567890zx";
char str[16];
strcpy(str,c);
printf("%s\n",str);
printf("%c\n",str[0]);
printf("%c\n",str[18]);
getchar();
これが、コンパイル通るんだけどどういうこと?
[16]ってことは、[15]までだよね?VC6です。
0631デフォルトの名無しさんNGNG
>>630
Cは配列の添え字チェックをしない。
str[18]は*(str+18)という意味なので文法上全く問題ない。
0632631NGNG
三行目は見当違いだったかも。
とにかく文法上問題ないのでエラーになったりしない。
0633デフォルトの名無しさんNGNG
>>630
const char *c="abcdefg1234567890zx";
char str[16];
char aho[10];
strcpy(str,c);
printf("%s\n",str);
printf("%c\n",str[0]);
printf("%c\n",str[18]);
printf("%s\n",aho);/* これはどうなる? */
0634デフォルトの名無しさんNGNG
>>633
自動変数の確保の順番は未定義だったはず。
0635デフォルトの名無しさんNGNG
>>633
質問とまったく関係ない。
そしてそういう余計な話は初心者を混乱させるだけ。
0636デフォルトの名無しさんNGNG
>>635
オーバーフロウしたものがahoに入るかもしれないと言いたいんだと思われ。
でも>>634
0637デフォルトの名無しさんNGNG
>>630
コンパイルに関しては>631,632の通りだが
それ以前に
strcpy(str,c);
がいけないことだっていうのはOKなのかな?
18にアクセスしようとしてるからわかってそうだけど。
0638デフォルトの名無しさんNGNG
>>633
printf の第2引数は、constになってるから、警告が出るんじゃない?(コンパイラーにもよるけど)
ahoは初期化(値が設定)されていないのに参照される可能性がある。みたいな。
0639デフォルトの名無しさんNGNG
>>638
printfの第二引数以降は...だからなんでも受け付けます。
二行目と三行目のつながりが分からない。
0640デフォルトの名無しさんNGNG
>>633
これはどうなると聞かれても。
>630が自分のまだ答えてないよ。
0641デフォルトの名無しさんNGNG
>>639
せやった・・・失敬・・・
0642デフォルトの名無しさんNGNG
こんばんわ。わからないことがあるので質問させてください。

unsigned int *buffer;
unsigned long int result;

buffer = (unsigned int *)malloc(2048);

for (row = 0; row < height; row++) {
       TIFFReadScanline(tiff, buffer, row, 0);

             for(x=0;x<width;x++){
               result = * ((unsigned int *)(buffer + x));
            
                printf("%d %d %u \n",row,x,result);
                         }
                       }

このようなループがあるんですが
row=0,x=533までしか実行できず、セグメンテーションエラーと言われます。
どのように修正すれば最後まで実行できるでしょうか。
ちなみに
TIFFReadScanline(tiff, buffer, row, 0);
は開いたtiff画像を一行読み取り、各ピクセルの輝度を16bitの整数としてbufferに格納します。
rowは行番号、0は画像番号です。

拙い文章でわかりづらいとは思いますがよろしくお願いします。
0643デフォルトの名無しさんNGNG
malloc(sizeof(unsigned int)*width)
0644デフォルトの名無しさんNGNG
rewindってどういうときに使うんでつか?
0645デフォルトの名無しさんNGNG
人生に疲れたとき。
0646デフォルトの名無しさんNGNG
>>643
レスありがとうございます。

すみませんが、さらに質問させてください。

考えている対象は一行あたり1024ピクセルの画像で、
1024個の要素を持つint型の配列を読み込む事になるわけなので、
malloc(2048)としたのですが
これは 2byte×1024 = 2048byte ってことで
width = 1024 の時 sizeof(unsigned int)*width
と中身は同じかと思うのですが、いかがでしょうか?
0647デフォルトの名無しさんNGNG
int は 2 バイトとは限らない。
0648デフォルトの名無しさんNGNG
32bitなら4byteじゃないかな。
0649646NGNG
今確認してみました。
intは4byteありました。お騒がせしてすみません。
どうも僕の中では、
char は 8bit で 1byte
int は 16bit で 2byte
と思い込んでいたみたいです。
どうもありがとうございました。
0650デフォルトの名無しさんNGNG
>>637
いけないこと?
とりあえず試してみたんだけど、通ったから
問題ないのかと思ってた。

18にアクセスしたのは、こういう場合は後ろの方は切れてしまうのかな?
と、思ったのでちょっと試してみたら参照できた。なんで?って感じ。
>>633のやってることの意味がまったく分かりません。
お、オーバー浮浪?
0651デフォルトの名無しさんNGNG
>>650
>通ったから問題ないのかと思ってた。

Cでは「未定義の動作」に気をつけにゃならん。
エラーが出ることすら保証されていない。

要するに、自分がしていることが本当に正しいかどうかを
自分で判断できにゃならんのだ。真に科学的な態度が要求される。

Cではと言ったが、これができる者だけが長い目で見てやってける香具師だ。
0652デフォルトの名無しさんNGNG
【GUIライブラリ】wxWindowsでのひょーん スレからやってきますた。
http://pc2.2ch.net/test/read.cgi/tech/1052186697/335

質問です。
bcc32 v5.5.1 な環境において、
char *setlocale(int category, const char *locale) の戻り値を
第二引数にして、setlocale() を再度呼び出すと、
第二引数が破壊され、戻り値が NULL になってしまいます。

一応調べたところ、下記のような記述
> The application shall not modify the string returned
> which may be overwritten by a subsequent call to setlocale().
> アプリケーションは返されたストリングを修正しないものとします、
> それはsetlocale()への後の呼び出しによって上書きされるかもしれません。
> http://www.opengroup.org/onlinepubs/007904975/functions/setlocale.html
がMSのサイトやらMAN pageやらから見受けられたので、この動作は未定義?
とも思うのですがいまいちすっきりしません。

これって、bcc32 固有の不具合なのでしょうか?
それともCの仕様でしょうか?

ちなみに、gcc では locale の設定が行われ、問題なく動作できますた。

よろすくおながいします。
0653デフォルトの名無しさんNGNG
>>651
未定義の動作だよって報告すら出ないのか?
0654デフォルトの名無しさんNGNG
struct List
{
std::string buf_;
}

と、

printf("%s",l1.buf_.c_str());

を日本語で説明おねがいします。意味がわかりませんでした。。
0655デフォルトの名無しさんNGNG
>>654
スレ違い。そりゃCじゃない。
0656デフォルトの名無しさんNGNG
>>654
マルチ氏ね
0657デフォルトの名無しさんNGNG
>>650
>strcpy(str,c);
文法的には問題ないのでコンパイルは通るけどコピーするサイズが問題。
strよりcのサイズが大きいために
strをオーバーしてコピーしてしまって
意図しないメモリ領域を壊してしまっている可能性がある。
(バッファオーバーフローとかオーバーランとか言う)

なのでstrがc以上のサイズを持っているかチェックしてからコピーするか
strncpyを使うかしる。
0658デフォルトの名無しさんNGNG
連結リストや二分木などがわかりやすくのってるサイトってないでつか?
マジお願いします。
0659644NGNG
お願いします・・・。scanfと関係があるんですか?
バッファに文字を残した場合に、それをリフレッシュするって感じでしょうか?
0660デフォルトの名無しさんNGNG
>>659
いいえ
いいえ
0661644NGNG
>>660
ではどういった場合に使うのでしょうか?
0662デフォルトの名無しさんNGNG
>>658
二分木載っているけど、これでよければ
tp://www1.cts.ne.jp/~clab/hsample/Mem/Mem2.html#void
0663デフォルトの名無しさんNGNG
>>659
fseek(fp,0L,SEEK_END);
と同じで、scanf()とかとは、直接的には全く関係ない
ただ、rewind()すると、EOFをクリアしたり等々
標準入力で便利に使える処理系が多いのも事実
0664デフォルトの名無しさんNGNG
>>644
ファイルの先頭から読みなおしたいときによく使うが。
0665644NGNG
>>663
標準入力で便利に使えるというのは具体的にどういった場合なのでしょうか?
0666663NGNG
突っ込んでくれないと、おぢさんは悲ひい…
0667デフォルトの名無しさんNGNG
突っ込んでやるから、ケツを出せ
0668デフォルトの名無しさんNGNG
>>663
> fseek(fp,0L,SEEK_END);
(void)fseek(stream, 0L, SEEK_SET) だろ
0669デフォルトの名無しさんNGNG
>>665
>EOFをクリアしたり等々
って書いてあるじゃん
0670644NGNG
標準入力からのEOFはCtr+Z?
whileの判定でEOFを使ってるならまだしも、コントロールコードを用いてる場合は、
意味がありますか?
0671デフォルトの名無しさんNGNG
標準出力で rewind すると、
キーバッファクリアになる処理系が存在する。
0672671NGNG
出力じゃなくて入力だ。
0673デフォルトの名無しさんNGNG
>>671
それを標準の動作であるかのようなことを言っていた人がいたね。
0674デフォルトの名無しさんNGNG
'\0' は必ず 0 で定義されるんですか?
0675デフォルトの名無しさんNGNG
'\0'==0
文字定数か整数定数かの違い
0676デフォルトの名無しさんNGNG
>>675
その等式はどのコンパイラでも正しいですか?
C言語の規格として定まっているんですか?
0677デフォルトの名無しさんNGNG
>>676
手持ちの ANSI C/C++ 辞典には
「すべてのビットは 0 である」と書いてあるので、
大丈夫だと思います。
0678デフォルトの名無しさんNGNG
ところが整数0について「すべてのビットは 0 である」という記述はない。
よって'\0'==0という保証もない。○か×か
0679デフォルトの名無しさんNGNG
×に一票
0680デフォルトの名無しさんNGNG
>>678
0 と等しい内部表現を持つ、
という意味で全てのビットが 0 である、
と言ってるんだと思うので×。
でも、その視点は無かっただけにちょっと感動した。
0681デフォルトの名無しさんNGNG
あ、整数値としての 0 ね。
ヌルポインタじゃなくて。
0682デフォルトの名無しさんNGNG
文字定数は 'ab' のように、複数の文字からなる場合の値は
処理系定義となっているが、'\0\0' なら全てのビットが 0 なので
'\0\0' == 0 は成り立つ ○か×か
0683デフォルトの名無しさんNGNG
処理系定義なので何が起こっても構わないので×。
0684デフォルトの名無しさんNGNG
>>683
処理系定義が、何が起こっても構わないってのはダウト
0685デフォルトの名無しさんNGNG
おまえら糞壁と一緒だな(藁
0686デフォルトの名無しさんNGNG
>>657
あーなるほど、そういうプログラムがあるからOSが不安定になったりするのかな?
気を付けるようにします。
0687デフォルトの名無しさんNGNG
687ゲット!!

>>686
時々セキュリティ情報などでバッファオーバーフロウが云々という記事をみかけるでしょ?あれ。
0688687NGNG
657に書いてあるじゃん(鬱
0689デフォルトの名無しさんNGNG
あんなのがあるって事は。
M$の社員にも糞がいっぱいいるってことか。
0690デフォルトの名無しさんNGNG
VC++で、
文字列が英語の文かどうか判定したいです。
全角文字なら英語でないとすると、

こんなもじ↓
“
が全角文字で英語にならなくなってしまいます。
上の文字は英語のサイトでも使われてる文字なので、英語として扱いたいです。
0691デフォルトの名無しさんNGNG
>>689
実際にはコードの時点からオーバーしてるわけじゃなくて
何らかの方法で無理矢理あの状態を作り出されたときに
サイズチェックしてなくてあぼーんするって感じかな。
まあよく知らないんだけど( ´д`)
0692デフォルトの名無しさんNGNG
"と“は別物だが?
(C), (R), TM あたりで困るというのなら分かるけど。
0693デフォルトの名無しさんNGNG
英語のサイトで全角文字か…
0694デフォルトの名無しさんNGNG
>>690
先ずは文字コードについて勉強しろ。話はそれからだ。
0695デフォルトの名無しさんNGNG
エスケプシケンス使わずに画面をクリアするには、
printf("system・・・・
よく覚えてないです。
どなたか教えてください
0696デフォルトの名無しさんNGNG
おまえら、画面制御の質問するときは



   環  境  を  書  け
0697デフォルトの名無しさんNGNG
すみませぬ。
WinXP、BCC5.5です。
環境を書いてなくてすみませんでした。
0698デフォルトの名無しさんNGNG
system("cls");  /* DOS */
system("clear"); /* UNIX */
0699デフォルトの名無しさんNGNG
おまえら、画面制御の質問するときは



   そ の 環 境 の ス レ に 行 け



だろ?
0700デフォルトの名無しさんNGNG
>>698どうもありがとうございます。
勘違いしてました。
タブキーを押すと右に*が移動し、3回動いたら改行する
プログラムを作りたいんですが、根本的に間違ってますでしょうか?
まだ作りかけですが、どうか見てください
#include <stdio.h>
#include <conio.h>
int main(){
int a=1,b=1;
char Key;
for(;;){
system("cls");
Key = getch();
if (Key=="\t"){
a++;
if(a<=3){
printf(" *");
}
else{
printf("\n");
b++;
a=1;
}
}
}
}
0701690NGNG
>>694

文字コードはShiftJISでやってます。
クリップボード経由のデータなので、もともとの文字コードは意識してないです。
0702デフォルトの名無しさんNGNG
>>700
コンパイルを通してから出直せ。
0703700NGNG
コンパイル通るよん♪
まさか、君Cやったことないでしょ?
( ´_ゝ`)プッ
0704デフォルトの名無しさんNGNG
>if (Key=="\t")
0705デフォルトの名無しさんNGNG
> if (Key=="\t"){
> if (Key=="\t"){
> if (Key=="\t"){
> if (Key=="\t"){
> if (Key=="\t"){
0706デフォルトの名無しさんNGNG
正しくはif(Key==\t){
0707デフォルトの名無しさんNGNG
>>706
ネタはもういいから。
0708デフォルトの名無しさんNGNG
#include <stdio.h>
#include <conio.h>
int main(){
int a=1,b=1;
char Key;
for(;;){
system("cls");  // 画面を消す。
Key = getch();   // 入力するまもなく通り過ぎる
if (Key=="\t"){  // Keyの初期値(ごみ)と文字列リテラルのアドレスを比較する。
a++;         // aが2になる。
if(a<=3){       //必ず真になる
printf(" *");    //*を表示
}
else{         //以下のコードは通ることなく終了。
printf("\n");
b++;
a=1;
}
}
}
}

( ´_ゝ`)プッ
0709デフォルトの名無しさんNGNG
それはそうとして conio.h なんか使ってるんだったら他所へいけ。
0710デフォルトの名無しさんNGNG
違った、最初のifがすでに成り立たないや。
何も表示せずに終了か。
0711デフォルトの名無しさんNGNG
>>708
こいつもひどいな。
0712デフォルトの名無しさんNGNG
正しくはif(Key==\t){
0713デフォルトの名無しさんNGNG
質問者が煽るとグダグダになるという好例ですな。
0714700NGNG
>>703は偽物です。
でも、やっぱりコードがぐちゃぐちゃなのは確かでしたね。
>>712
マジですか?
0715デフォルトの名無しさんNGNG
正しくは
if(Key == '\t') {
0716デフォルトの名無しさんNGNG
どうでも良いけど無限ループじゃない?
0717716NGNG
700の正しくしたコードきぼんぬ
0718デフォルトの名無しさんNGNG
>>717
どうでも良いけどなんで俺を騙るんだ?
0719716NGNG
>>718
なんで俺が煽ったことになるんだ?
0720デフォルトの名無しさんNGNG
>>719
お前は俺じゃないだろ
0721デフォルトの名無しさんNGNG
煽ると騙るを間違ってる香具師ハケーン
0722デフォルトの名無しさんNGNG
>>721
二人いるな
0723デフォルトの名無しさんNGNG
>>717
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main() {
  int a = 1, b = 1, i;
  char Key;

  system("cls");

  while( (Key = getch()) != 'q' ) {
    system("cls");
    if (Key == '\t') {
      if ( a <= 3 ) {
        for (i=0; i<a; ++i) printf(" *");
        ++a;
      } else {
        printf("\n");
        ++b;
        a = 1;
      }
    }
  }
  printf("\nb = %04d\n", b);
  return EXIT_SUCCESS;
}
0724716NGNG
>>720
偽物は静かにしてくれ。

>>723
>>700との違いが分からん。
>>700は何がダメなのか。
0725デフォルトの名無しさんNGNG
>>724
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main() {
  int a = 1, b = 1, i;
  char Key;
  system("cls");
  while( (Key = getch()) != 'q' )
    if (Key == '\t') if ( a <= 3 ) printf(" *", ++a); else printf("\n", ++b, a = 1);
  printf("\nb = %04d\n", b);
  return EXIT_SUCCESS;
}
0726デフォルトの名無しさんNGNG
>>724
#include <stdio.h>
#include <conio.h>


int main() {
int a = 1, b = 1, i;
char Key;
system("cls");
while( (Key = getch()) != 'q' )
system("cls");
if(Key == '\t') if ( a <= 3 ){
printf(" *", ++a);
}
else {
printf("\n", ++b, a = 1);
}

}
0727_NGNG
http://homepage.mac.com/hiroyuki44/
0728デフォルトの名無しさんNGNG
これってどうして二回目のscanfはスキップされるんですか?
よろしくおねがいします

#include<stdio.h>
void main(void){
char c,d;
scanf("%c",&c);
scanf("%c",&d);
printf("%c %c",c,d);
}
0729デフォルトの名無しさんNGNG
スキップはされない。
ちゃんと改行を読み取って表示する。
0730デフォルトの名無しさんNGNG
>>729
即レスありがとうございます。

どうにかして改行を読み取らないようにはできないでしょうか?
0731デフォルトの名無しさんNGNG
printf("Hello", " ", "world");
0732デフォルトの名無しさんNGNG
>>730
一行読みとる
0733デフォルトの名無しさんNGNG
ちょっと質問させてください。
引数を整数に直してから表示するプログラムにしたいのですが
以下のようにすると、引数と違った結果になってしまいます。
どうしてでしょうか?


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

main(int argc, char *argv[])
{
int a,b,i;
int x[1],y[1];

x[0] = atoi(argv[1]);
y[0] = atoi(argv[2]);
x[1] = atoi(argv[2]);
y[1] = atoi(argv[3]);

for (i=0;i<2;i++){
printf("%d %d %d\n",i,x[i],y[i]);
}


}
0734デフォルトの名無しさんNGNG
>>733
オーバーフロウとか
0735734NGNG
ふたつの意味でね(^_^;)
0736デフォルトの名無しさんNGNG
>>731-732
できました!
ありがとうございます!
0737!=733NGNG
ホントに2つだ。。はじめ気づかなかった。
0738デフォルトの名無しさんNGNG
>>733,737
ちみら、VB出身だな!?
0739デフォルトの名無しさんNGNG
名前を並び替えたいんだけど、エラーが出てしまう。
どこを直せばいいです??マジでわかんないもんで。

{
char name[5][9] = {"yamada","kawasaki","ishikawa","machida","fukui"};

char tmp[9];

int i, j;

for (i = 0; i < 4; i++){
for (j = i + 1; j < 5; j++);{
if (name[i][0] > name[j][0]){
tmp = name[i]; /*エラー「左辺値が必要(関数 main )」*/
name[i] = name[j]; /*エラー「左辺値が必要(関数 main )」*/
name[j] = tmp; /*エラー「左辺値が必要(関数 main )」*/
}
}

}

for (i = 0; i < 5; i++){
printf("%s\n", name[i]);
}



return(0);


}
0740デフォルトの名無しさんNGNG
>>739
配列名に代入はできないから。
配列のコピーはmemcpyで。


そういうもののソートは元のデータをポインタ配列にした方がいいと思うけど。
0741デフォルトの名無しさんNGNG
文字列は = じゃコピーできん。
strcpy()つかえ。
0742740NGNG
誰もソートとはいってねーか。スマソ
0743733NGNG
え〜?
さっぱりわからんです。ヒント下さい。
0744739NGNG
>>740
>>741
文字列は数字みたいに代入することはできないってことか。感謝です。
でもそれをどうやって使えばいいかぜんぜんわかんない。。。。
ありがとうございました。
0745デフォルトの名無しさんNGNG
>>743
int x[1]で使えるのはx[0]だけ。x[1]を使いたかったらint x[2]とする
0746739NGNG
ポインタ配列にしようと思って配列をポインタ配列にしてみたけど
( name[5][9 を *name[5][9] など)
コンパイルの時にエラーは出なかったけど実行したらエラーがでてしまった。
どこをどう直せばよかったんですか??
0747733NGNG
>>745
あ、ありがとうございます。
うわーはずかしいー。
0748デフォルトの名無しさんNGNG
ポインタには値は入れられないから、アドレスを入れる
たとえばint *i; int j=5; と言う場合
i = &j; って感じに
&は変数のアドレスっていう意味
0749!=733NGNG
x[0] = atoi(argv[1]);
y[0] = atoi(argv[2]);
x[1] = atoi(argv[2]);  /* 3じゃ */
y[1] = atoi(argv[3]); /* 4じゃ */
0750デフォルトの名無しさんNGNG
シューティングゲームみたいに上から☆がランダムで
5個降ってくるというふうにCのコンソールで表現したいのですが、
アルゴリズムはどうしたらいいでしょうか?
サンプルがあればお願いします。
できればコメントもお願いします。図々しくてすみません
0751mainの戻り値NGNG
main()の戻り値、成功なら0、失敗なら1とするのが普通と思うのですが、

で、実際stdlib.h(以下はgccの例)に
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
とか書いてありこのマクロを使えというのを昔読んだ記憶があります。とはいえ
しかし、このマクロ使っている人を見たことがありません。

これってどこかで使われてます??
0752デフォルトの名無しさんNGNG
>>751
>>723>>725
0753デフォルトの名無しさんNGNG
>>751
OSに依存しないプログラムを書くときは使ってるよ。
0754デフォルトの名無しさんNGNG
>>751
失敗時はfprintfの戻り値にしている。
0755デフォルトの名無しさんNGNG
>>750
Cでは無理なんじゃないの?
0756デフォルトの名無しさんNGNG
>main()の戻り値、成功なら0、失敗なら1とするのが普通と思うのですが、

普通って?
実行環境とのインターフェイスをキミはどう設計しているの??

コーディングの段階で悩むに至った過程こそ
そんなくだらんことが誤差にもならん程の深刻な問題だぞ。
0757デフォルトの名無しさんNGNG
mainの戻り値はそのプログラムを誰が起動するかでおのずと決まってくる。
hello world の戻り値なんて、ユーザが起動して戻り地なんか無視しているんだからどーでもいい。
0758デフォルトの名無しさんNGNG
doubleの方がよかったのに
0759デフォルトの名無しさんNGNG
>>757
勝手にhello worldを起動するのがユーザと決め付けるんじゃねーよ。
0760デフォルトの名無しさんNGNG
/bin/false
0761757NGNG
一般論をいったまでだがね。
後学のために、どんなシステムでhello worldを起動しているのか教えてほしいものだ。
0762デフォルトの名無しさんNGNG
CGI
0763デフォルトの名無しさんNGNG
>>761
一般論というのならhello worldじゃなくて一般的なプログラムで
話そうじゃないか。 そのプログラムを起動しているのは誰かね?
0764デフォルトの名無しさんNGNG
>>750
APIを使うしか方法はない。
あとは、他の誰かに聞け
0765デフォルトの名無しさんNGNG
>>764
はぁ?

cygwin使っても出来ますが何か?
0766デフォルトの名無しさんNGNG
main関数もライブラリ化しましょう!
0767デフォルトの名無しさんNGNG
>>726のコードは何をするためのプログラムですか?
0768デフォルトの名無しさんNGNG
>>767
clsを呼びまくる。
0769亀さんNGNG
>>674-681
Cでは文字定数はint型で'\0'は、8進表現の0を表す
よって、'\0' == 0 は必ず成り立つ
0770デフォルトの名無しさんNGNG
常にこういうシェルを通して実行するような
用心深い人もいるかもしれないね。

#!/bin/bash -f

if (( $# == 0 )); then
exe=./a.out
else
exe=$1
fi

if $exe; then
echo 'success!'
else
echo 'failure...'
fi
0771デフォルトの名無しさんNGNG
>>750
アルゴリズムが何なのか分かっているのか小一時間(略)
0772デフォルトの名無しさんNGNG
ずれたら・・・
   ,,--―'''""`ヽ'         ̄`ヽ、
           /        ヾ  /       ~`ヽ
         /           ヽ;:  /"""ヾ   ヽ
        /        ;:;;:::''''   l /;:;;:::'''  \   i
      /        /;:;;:::'''           ヽ  ヽ
      |         |  _,,___       . _,,,,__,_ヽ  |
      /        ;/ /   ゙^\ヽ..  , /゙   ¨\,.-
     /        ;:;:ヽ「 ●     | 》  l|    ● ゙》ヽ
     i          /i,.      .,ノ .l|  《      .|ヽ ヽ
     |          | \___,,,,,_/ .'″ ^=u,,,,_ v/ | |
     |          |.                  |. |
     |         ;:|           :::::::       | :|
      |         ヽ.         ( ,-、 ,:‐、   | | 
      |       /ヾ..                  | |
      |          |         __,-'ニニニヽ .  |  |
..       |        `、ヽ        ヾニ二ン"  /  |
        |         ヽ\             /  |
        |          l  `ー-::、_       ,,..'|ヽ./ 
        ヽ.        :人      `ー――'''''  / ヽ
        /;:;:;:;;:;:;: _/  `ー-、          ,.-'"   \ー-、
           ,.-'"  \:      \      .,.-''"     |
         /.     \        ~>、,.-''"      |
    ,,..-‐'''""        ヾ    ,.-''"|    /――――、/
0773772NGNG
やべっ。なんか変な風にズレてしまった。
鬱
0774デフォルトの名無しさんNGNG
forループでループを回してループ変数 i という名前の
ファイルを読み込む場合どのようにすればよいでしょうか?
もしくは、i.txt というファイルを読み込むにはどのように
すればよいでしょうか?
atoiみたいにiを文字列に変換できればよいのですが。
0775デフォルトの名無しさんNGNG
itoaか
0776デフォルトの名無しさんNGNG
http://gametui.hp.infoseek.co.jp/c7.txt
このテトリスすごいんですけど。
このくらいのコードはCを始めてどのくらいでかけるものなのでしょうか?
0777デフォルトの名無しさんNGNG
本人に聞け
0778デフォルトの名無しさんNGNG
sprintf()だな
0779デフォルトの名無しさんNGNG
>>776のファイル名からCで書いた七行テトリスだと期待したのは俺だけか?
0780名無しNGNG
>>779
おれも思った
0781739NGNG
>>748
ポインタ配列にすればいいんですね。どうにかそこまでたどり着きました。
ありがとうございます!!

0782774NGNG
>>775
itoa・・・ですか?
自分の持っている本には載っておらず、ネットで調べても
良く分かりませんでした・・・。

>>778
なるほど。sprintfですね。
0783デフォルトの名無しさんNGNG
char str[20];
初期化子以外で、この配列をすべて'x'で初期化する関数があれば
教えていただけないでしょうか。
0784デフォルトの名無しさんNGNG
>>783
memset()
0785783NGNG
>>784
ありがとうございました。
0786デフォルトの名無しさんNGNG
最後の '\0' を入れないと文字列としては機能しないけどね。
0787デフォルトの名無しさんNGNG
任意の変数の値を交換する関数を作りたいんだけど
俺が考えたのは

void swap(void *a,void *b,unsigned int size){
void *temp;
if(a==b)
return ;

temp=melloc(size);
memcpy(a,temp,size);
memcpy(a,b,size);
memcpy(b,temp,size);

free(temp);
return ;
}

サイズを渡さずに引数が交換したい変数だけの関数って作れる?
0788デフォルトの名無しさんNGNG
>>787
#define SWAP(a, b) swap(a, b, sizeof(a))
0789デフォルトの名無しさんNGNG
>>787
マクロを選ぶか、関数を選ぶか、
マクロだけを公開するか。
StandardCLibraryって本(C標準ライブラリ実装演習)に載ってるよ。

読んだ事なければ、暇つぶしに良いかも。

ちなみに、Cに限定する話しか乗ってないから、これを全てだと思って、
こだわって立ち止まらないように。
そこらおじいさんと同じになっちゃいます。
0790デフォルトの名無しさんNGNG
>>787
君が欲しいのはコレであろう
http://pc2.2ch.net/test/read.cgi/tech/1038215563/463
0791デフォルトの名無しさんNGNG
>>786
ありがとうございます。気をつけます。
0792デフォルトの名無しさんNGNG
>>788
なるほど。
でもaはポインタでしょ
sizeof(a)が返すのはポインタのサイズじゃないの?
#define SWAP(a, b) swap(&(a),&(b), sizeof(a))
勘違いしてたら突っ込んで

>>789
その本は知らないな。
機会があれば読んでみます。
0793デフォルトの名無しさんNGNG
俺ならこーする。

#define SWAP(a, b, type) do { type c = b; b = a; a = c; } while(0)
0794787==792NGNG
>>793
なるほどねぇ。
いろいろあるんだな。
ちょっと感動した。
0795デフォルトの名無しさんNGNG
>>787
1バイトずつ交換すればmallocを使わずにできる。
0796kgpNGNG
#include<stdio.h>
#include<stdlib.h>


struct person{
int number;
int height;
int weight;
int sex;
int i;
}

int main()
{
struct person date[20];
int i = 0;

printf("番号、身長、体重、性別を入力してください.\n");
printf("ただし番号は2桁、身長は150〜180、体重は45〜90、性別は男が1で女が2というようにしなさい.\n");

while(getchar() != EOF){
scanf("%d%d%d%d",&date[i].number,&date[i].height,&date[i].weight,&date[i].sex);
i++;
}

return 0;
}
自分ではうまくやったつもりなのですが
コンパイルできません
どこをいじればよいですか?
0797デフォルトの名無しさんNGNG
;が抜けてる
0798デフォルトの名無しさんNGNG
>>793
ちょっと do-while を使う意味が分かりません。
普通にブロックで囲んだだけじゃダメなんですか?
0799デフォルトの名無しさんNGNG
>>798
それが分かるようになるまで、ブロックに囲むだけで良いよ
普通の関数と同様に使ってれば、多分、分かる事だから
0800デフォルトの名無しさんNGNG
>>800
もったいぶらないで教えてくれよ。
0801デフォルトの名無しさんNGNG
>>800→>>799
0802デフォルトの名無しさんNGNG
>>799
神!!

俺もそうしよう

これ以降この話題に触れたやつは切る
0803デフォルトの名無しさんNGNG
>>798
そんなもの使うな、どうせ関数と全く同様に使える訳ではないんだし
それがどうしても必要ならばそろそろC++にうつる時期だ

そんな間に合わせのかたわ位で了見の狭い奴が多いな。
俺はそういう奴が大嫌いだ。だから教えてやる。
if()SWAP();elseとかを考えてみろ
0804デフォルトの名無しさんNGNG
>>802
そんな事言わずにさ
0805デフォルトの名無しさんNGNG
どうせ教えるなら、少しひねって、
if()SMAP();else
とかにすれば、可愛げがあるものを…
0806デフォルトの名無しさんNGNG
>>803
偉そうに書いてるけど、一般人にとっては常識(w
0807デフォルトの名無しさんNGNG
なんかばっさり切られてるね?
0808デフォルトの名無しさんNGNG
一般人=プログラマではない=知らない=常識ではない
0809デフォルトの名無しさんNGNG
>>803
全部大文字にしてあることでマクロであると警告し、
ここに代入文なんぞ突っ込むな! という主張を行っている。
そして、セミコロン対策するのはエディタの自動インデント対策でもあるし、
セミコロンがいるのかいらないのか悩む必要もなくなる。
0810デフォルトの名無しさんNGNG
下らんトリック使わずに仕様書にマクロだと注意書きしろよ。
0811デフォルトの名無しさんNGNG
>どうせ関数と全く同様に使える訳ではないんだし

これにつきる
0812デフォルトの名無しさんNGNG
>>811
putchar(*p++);
0813デフォルトの名無しさんNGNG
>>812
何を言いたいのかわからないが、それはきちんと「引数を複数回評価するマクロとして実装されているかもしれない」と書かれている。
0814デフォルトの名無しさんNGNG
注意書きがあるよりも、マクロはマクロらしくあって欲しいし
副作用の発生する関数の呼び方はして欲しくない。
0815813NGNG
わ! 恥ずかしい・・・

>>812
すまない、812が>>810へのレスと勘違いしたよ。
0816デフォルトの名無しさんNGNG
>>813
>と書かれている。

何に?
少なくとも規格書ではあるまい

7.1.7 ライブラリ関数の使用法
マクロとして実装されたライブラリ関数の呼び出しでも、
その実引数がただ1回だけ評価され、
かつ必要な箇所ではカッコによって完全に保護されるような
コードに展開されなければならない。

7.9.3.9 putchar関数
int putchar(int c);
(マクロとは一言も書いてない)
0817デフォルトの名無しさんNGNG
常識とか言ってた人、もう来ないだろうねw
0818デフォルトの名無しさんNGNG
まあ C のマクロなんて糞なものは使わないのがベター。
0819デフォルトの名無しさんNGNG
>>818
#define putchar(c) putc(c, stdout)
#deinfe putc(c, fp) do { int x = (c); fp->pos < fp->capa ? fp->fp[fp->pos++] = x : fputc(x , fp); } while(0)
0820デフォルトの名無しさんNGNG
>>819
つかわねぇなぁ。
0821デフォルトの名無しさんNGNG
>>819
int x; for (x = 0; x < 256; x++) putchar(x);
0822デフォルトの名無しさんNGNG
整数値をstdinから読み込むとき
scanf("%d%c" , &hoge , &damy) ;
と
fgets(buff , sizeof(buff) , stdin) ;
sscanf(buff , "%d" , &hoge) ;
となら
どっちが安定ですか?
0823デフォルトの名無しさんNGNG
>>818
struct node {
 int nodekind ;
 union {
  struct {
   int childs ;
   struct node *child[MAX] ;
   int low[MAX] ;
  } internal ;
  struct {
   int leafkey ;
   int data ;
  } leaf ;
 } u ;
} ;
#define CHILDS u.internal.childs
#define LEAFKEY u.leaf.leafkey

使っとけ
0824デフォルトの名無しさんNGNG
>>822
安定って意味がわからんが、一般的には下のほうが良いとされている。
0825デフォルトの名無しさんNGNG
>>822
せっかく>>1にC FAQのリンクがあるんだから、隅々まで見てきなされ
0826デフォルトの名無しさんNGNG
>>824
scanf("%d%c" , &hoge , &damy)
こいつだと起きそうな不具合ありますかね?
0827デフォルトの名無しさんNGNG
葉鍵?
0828デフォルトの名無しさんNGNG
>>821
あー、Compilerだけで使いたい変数・関数はアンダースコアで使う。
プログラム側はつかっちゃだめとかあったような。

ちなみに、ローカル変数は名前重複可能って、++だけだっけ?
0829デフォルトの名無しさんNGNG
>>828
ブロック内で定義された変数はその外部に影響しないから名前の重複は無問題。

>>826
数字の後にすぐ改行があるとは限らない。
0830デフォルトの名無しさんNGNG
>>822
要求仕様ではbuffの中の食べ残しをどうすることになっている?
0831デフォルトの名無しさんNGNG
>>828
アンダースコアなんて気休めにもならないよ、
ベンダとユーザの境界は常に1つじゃないんだから。
例えばSystemCなんてどっちになる?

ちなみに、ローカル変数だって1つの式の中で2回++はだめだよ。
int giko;
void mona(void)
{
int giko;
{
int giko
}
}
キミが聞いたことあるのは
おそらくこれがOKってだけのことだろ。
0832デフォルトの名無しさんNGNG
その++じゃないだろ〜
0833デフォルトの名無しさんNGNG
>>829
処理系定義のマクロがアンダースコアで始まる変数や関数を参照していたら?
0834824NGNG
>>822

例えば、以下のようなコードの場合、

#include <stdio.h>

int main(){
int hoge;
char damy;
scanf("%d%c" , &hoge , &damy);
printf("hoge'v value = %d \n",hoge);
scanf("%d%c" , &hoge , &damy);
printf("hoge'v value = %d \n",hoge);
return 0;
}

実行結果は以下の通り

./a
1234
hoge'v value = 1234
a
hoge'v value = 1234 <- 前の奴が残っている
0835デフォルトの名無しさんNGNG
>>834
scanfの戻り値チェックシヨーネ

sscanfとか関係ねー
0836デフォルトの名無しさんNGNG
何言ってるんだ?
0837デフォルトの名無しさんNGNG
>>836
scanfの戻り値はパースに成功した引数の数
0838デフォルトの名無しさんNGNG
damy
が恥ずかしいな
0839デフォルトの名無しさんNGNG
恣意的には、恥ずかしいのはこれで
>int main(){

>damy
は、恥ずかしくない。
0840デフォルトの名無しさんNGNG
好きな女の子の名前付けたっていいじゃんかよう!ヽ(`Д´)ノ ウワァァン
0841デフォルトの名無しさんNGNG
釣りか?
釣りだな?
釣りなのか?
釣りなんだろ?
釣りなんですか?
0842デフォルトの名無しさんNGNG
C調言葉なら俺に聞け!
0843デフォルトの名無しさんNGNG
C調て。オサーンですか?
0844デフォルトの名無しさんNGNG
サザンだろ
0845デフォルトの名無しさんNGNG
>>816
JISの規格書にはっきりと書かれている

7.9.7.9 putchar関数
機能 putchar関数は、第2引数としてstdoutを指定したputcと等価とする。

7.9.7.8 putc関数
機能 putc関数は、fputcと等価とする。ただし、マクロとして実装されたputc関数は、streamを2度以上評価することがある。したがって、実引数streamは、副作用を伴わない式でなければならない。
0846845NGNG
あ、、しまった。二度以上評価するのはstreamか・・・・
0847845NGNG
ということは>>812はなんら問題ないわけだから、812は何をいいたかったんだろう・・・
0848デフォルトの名無しさんNGNG
>>847
全てのコンパイラがJIS準拠だと思ってる香具師はDQN
0849デフォルトの名無しさんNGNG
つまり、
FILE **fp;
の時に
putc(c,*fp++);
みたいな使い方は駄目って事か
正直、知らんかったな…
まぁ、普通に書いてて、そんな書き方する事はないけど…
0850デフォルトの名無しさんNGNG
JISの規格とANSIの規格は違うの?
0851デフォルトの名無しさんNGNG
ただの翻訳
0852デフォルトの名無しさんNGNG
>>850
章のナンバーが微妙に違う
0853デフォルトの名無しさんNGNG
読み方 : ジス
フルスペル : Japan Industrial Standard
工業標準化法に基づいて、すべての工業製品について定められる日本の国家規格。コンピュータと情報処理はX部門にまとめられている。

読み方 : アンシ、アンジー
フルスペル : American National Standard Institute
アメリカ国内の工業製品の規格を策定する団体。1918年に設立された。日本のJISにあたる。
0854デフォルトの名無しさんNGNG
そこで何故ISOの解説がありませんか。
0855デフォルトの名無しさんNGNG
>>848
処理系を特定せずに話している限り、それは仕方ないだろう。
どちらかというと>>793,>>798,>>799,>>803,>>806,>>809,>>811の流れで
>>812のような例を出していることが愚かしいとの>>816の指摘に対して
出展を明らかにしない>>819は空疎な悪あがきとしか言いようがない。
0856デフォルトの名無しさんNGNG
>>854
しーーーーっ!
せっかくオモロイのにぶち壊すなよ
0857デフォルトの名無しさんNGNG
(,,*゚o゚*)<
0858デフォルトの名無しさんNGNG
(,,*゚o゚*)< ふぇろもん!
0859デフォルトの名無しさんNGNG
??
> 恣意的には、恥ずかしいのはこれで
> >int main(){

int main(void) または int main(int,char**)にしてくれってこと?
あるいは、int main(int,char **,char **)か。

* 恣意的って日本語の使い方あってるのかどうかさえ解らん。
ttp://members.jcom.home.ne.jp/w3c/kokugo/kotoba/Shiiteki.html
一瞬、ιぃかとも思ったよ...
0860デフォルトの名無しさんNGNG
C的には
0861デフォルトの名無しさんNGNG
mainを他の関数から呼び出すことはないからint main()でもいいと思うけど・・・
0862デフォルトの名無しさんNGNG
>あるいは、int main(int,char **,char **)か。

ワラタ
0863デフォルトの名無しさんNGNG
ポインタで詰まってます。
間接参照でしたっけ。よく分かりません。
説明してもらえませんか?
#include <stdio.h>

int main()
{
int *po , var;
var = 100;
po = &var;

*po = 1010;
printf("変数varの値 = %d" , var);

return 0;
}

0864デフォルトの名無しさんNGNG
>>863
そのコードを100回くらい読み直してみろ。
0865デフォルトの名無しさんNGNG
メモリのどこかにint型の領域がある。
普段は名前(var)でアクセスする。
&を付けるとアドレスを返す。
ポインタ(po)にはアドレスが入る。
ポインタに*をつけると名前(var)でアクセスしたのと同じようにアクセスできる。
0866デフォルトの名無しさんNGNG
メモリっていうのは address と value で出来ていて、
int var で宣言された変数 var は value を持つんだけど、
int *po で宣言された変数 po は address を持つことが出来る。

ゴメン、上手く説明出来ないや。アーキテクチャを学ぶと良いかも。
0867デフォルトの名無しさんNGNG
>>863
そのコードだと、poにvar(=100)のアドレスを格納した後、
poの指す先(var)を改めて1010に設定していることになる。
だから、vsrの値も100から1010に変更され、1010が表示された。
0868_NGNG
http://homepage.mac.com/hiroyuki44/jaz08.html
0869デフォルトの名無しさんNGNG
アセンブラを先にやってるとptr+=sizeof(int)とかして悩んだり悩まなかったり(w
0870デフォルトの名無しさんNGNG
po = &var; //varの値(100)をポインタ変数poに代入
*po = 1010; //?

うわぁ、分からないヽ(`Д´)ノ
0871デフォルトの名無しさんNGNG
>>870
*と&の意味ワカル?
0872デフォルトの名無しさんNGNG
ポインタというのは2つの要素から出来ている。
1つはアドレス。もう1つは参照先の型。
アドレスというのはメモリ上の位置のこと。
そのポインタを入れることの出来る変数がポインタ変数で、
int *po;
のように宣言すると、po がポインタ変数になって、
参照先の型は int であると仮定される。

ある変数のポインタは & を使えば得られる。
例えば
int var;
の var のポインタが欲しければ &var とすれば得られる。
これを po に入れるには、普通の代入
po = &var;
を使えばいい。
0873デフォルトの名無しさんNGNG
>>870
>po = &var; //varの値(100)をポインタ変数poに代入
違う。
0874デフォルトの名無しさんNGNG
さて、ポインタがあると何が出来るだろうか。
メモリ上の位置と、その型が分かっているので、
そこの値を参照したり、そこに値を入れたりすることができる。
それを行うには * というものを使って
*po = 100;
とか
printf("%d\n", *po);
とかすればいい。
*po とすると、po の中に入っているアドレスを始点とした
int のサイズの領域を参照することができるのだ。
0875870NGNG
>>873
違いますか・・・
0876デフォルトの名無しさんNGNG
で、ポインタと普通の値との違いを見てみよう。
例えば
int var = 100;
int num;
だとして、
num = var;
としたとしよう。
この場合、num に渡されるのは 100 という値だ。
つまり、var と num という二箇所にそれぞれ 100 という値があることになる。
この場合、var++; としても、var は 101 になるが num は 100 のままである。

一方ポインタの場合は渡されるのはメモリ上の位置であって、値そのものではない。
つまり、100 という値が入れられた場所は相変わらず var の一箇所のみである。
位置を共有しているので、var++; とすれば var も *po も 101 になるし、
同様に (*po)++; とすると var も変わる。
なぜなら、var と *po はメモリ上の同じ領域を表しているからである。
0877デフォルトの名無しさんNGNG
*po = 1010
0878デフォルトの名無しさんNGNG
最後の一文はその前の文の先頭と同じこと言っちゃってた。スマソ。
0879デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
int *チャンネル , 番組;
番組 = めざましテレビ;
チャンネル = &目覚ましテレビ; //チャンネル = 目覚ましテレビのチャンネル

*チャンネル = 僕だけのマドンナ; //このチャンネルの番組 = 僕だけのマドンナ
printf("変数番組の値 = %d" , var);

return 0;
}

上手く説明できんなぁ
0880デフォルトの名無しさんNGNG
*(アスタリスク)は単体ではなく型の一部です。
つまり
int *i;とあると、アドレス型の入れ物に&(アンパサンド)でアドレスを
抽出していれる。そうすると、iはそのアドレスを示すのです。
つまり *iではなく、int *であってiはただの入れ物です。
0881デフォルトの名無しさんNGNG
po = &var; //
*po = 1010; //

これにコメントを付けてみると・・・
0882デフォルトの名無しさんNGNG
では、このポインタを使うと何が出来るのだろう。
大きく分けて、ポインタには 4 つの利用法がある。

1. 関数を超えてメモリを共有したい。
別の関数に大きなサイズをもった値を渡したい場合や、
特にサイズの決まっていない値(配列)を渡したい場合は、
ポインタだとサイズが小さくなるので便利である
(配列そのものはそもそもポインタを使ってしか渡せない)。
また、別の関数内で変数の値を変更させたい場合にも利用できる。
普通に関数に渡しただけでは num を使った例で
num の値を変えたところで var の値が変わらないのと同じように、
仮引数を操作しても実引数に渡した変数の中身は変えることができない。
でも、ポインタを使えばこれを解決することが出来る。

2. 動的にメモリを確保したい。
malloc という関数を参照。今はまだ気にすることはないと思う。

3. 特殊なデータ構造を実現したい。
リスト構造、木構造などを参照。これもまだ気にすることはないと思う。

4. 参照したいメモリの位置を得ることが面倒な場合に、そのアクセスを簡単にする。
例えば a[foo(n)][bar(b * n + c)] を何度も参照したい場合には、
このポインタをポインタ変数に入れておけば、そのポインタ変数を使って楽に操作できる。
strchr などの関数の戻り値を保存しておくことも良くある。
0883デフォルトの名無しさんNGNG
みなさん、どうも説明ありがとうございます。
でも、po = &var;
    *po = 1010;
の意味がやっぱりイマイチです。
プリントアウトして寝るまで考えてみます
0884デフォルトの名無しさんNGNG
間接参照自体はプログラムの中でよく使われるのですか?
ヽ(`Д´)ノ
0885デフォルトの名無しさんNGNG
poはポインタです。アドレスを蓄えてくれます。
&はアドレスを教えてくれます。
po = &var;でvarのアドレスがpoに蓄えられます。
*はすごいです。実際にアドレスのところまで連れていってくれます。
poはアドレスが代入されて、アドレスを返しますが、
*poは(poに蓄えられたアドレスのところに)代入もできるし、
そこから値をとりだすこともできます。
*po = 1010;はvar = 1010;と同じになります。
0886デフォルトの名無しさんNGNG
で,*って記号はなんて読むの? nullって読んだらいいのかな.
ってことは*po = nullpo ≒「ぬるぽ」?
0887デフォルトの名無しさんNGNG
アスタリスクだっけ。
0888デフォルトの名無しさんNGNG
*po = 1010; でなんでvarの値が変わるのかわからんのです
0889デフォルトの名無しさんNGNG
poにvarのアドレスが入っていると
*poへの代入はvarへの代入をする。
0890デフォルトの名無しさんNGNG
poの中の人はvarなんだよ
0891デフォルトの名無しさんNGNG
varへの代入があったときに
CPUはvarのあるアドレスを使って処理をするわけ。
それができるようにコンパイラが変換してる。

アドレスの値そのものをいじくるんじゃなくて
アドレスを使った処理をする時に*を使うの。
0892デフォルトの名無しさんNGNG
int *po;
のときpoはポインタで*poは実体、であってる?
0893デフォルトの名無しさんNGNG
正しいアドレスを指してれば、あってるよ。
0894デフォルトの名無しさんNGNG
(゜д゜(  人  ) =3 プ
0895デフォルトの名無しさんNGNG
int po = NULL;
*po = 10;

ぬるぽ
0896デフォルトの名無しさんNGNG
言いたい事わかるけど そのソース間違ってるよ
0897デフォルトの名無しさんNGNG
>896
あっ。ポインタになってない 鬱
0898デフォルトの名無しさんNGNG
>>895
ガッ
0899デフォルトの名無しさんNGNG
>>863
中学生か?マルチもほどほどにしとけよヴォケ
0900デフォルトの名無しさんNGNG
遅っ
0901popNGNG
1)以下の式を中央差分を使って計算するプログラムを作成してください。df(x)/dxを
計算する。
f(x)=ax*x+bx+c
係数aは10、bは5、cは2とします。答えは、2ax+bになるはずなので数値的に微分した
結果と解析的に求めた値を比べて、計算が正しく行われていることを示してください。
計算範囲は0から2までとします。分割数は各自決めてください。(十分正確に計算できるように)
2)
台形公式を使って、1)の式を積分計算してください。積分範囲は0から2とします。
解析的な解も計算して、数値計算結果を比較してください。a、b、cの値は1)と同様とします。

以上のプログラムと実行結果をお願いいたします.
もう完全にギブです。(T-T)どうかどなたでもよろしいのでお助けください。
0902デフォルトの名無しさんNGNG
>>901
マルチは駄目ポ
0903デフォルトの名無しさんNGNG
>>901
前もそんな系統の質問があったな。
法線を求めるって奴で、外積を使う奴だったような…
で、その時も答えたがプログラム的には簡単だ。
君に微積分の知識がないだけだ。

数学を勉強しなさい。
(今回はヒントコードすら面倒)
0904デフォルトの名無しさんNGNG
コードをできるだけ短く書くこつを教えてください
0905デフォルトの名無しさんNGNG
同じ処理は関数にまとめる。
0906デフォルトの名無しさんNGNG
変数名や関数名は1文字〜2文字。
マクロを多様。
#define I if
#define E else
#define F for
などなど…
0907デフォルトの名無しさんNGNG
>>906
氏ね
0908デフォルトの名無しさんNGNG
おまえが知ね
0909デフォルトの名無しさんNGNG
>>906
士ね
0910デフォルトの名無しさんNGNG
>>906
馘
0911デフォルトの名無しさんNGNG
スレッドで質問があります。
A,B,Cの3つの処理があって、ABはどっちを先に処理してもよくCはAB終了後でないとだめ。
ここで、A,Bをスレッドにしたいんですが、A、Bが終わるまでCの実行は待たないといけません。
この「A、Bが終わるまで待つ」ことのやり方がよくわかりません。

自分で試してみたのは、チェック用の外部変数を用意して

check=0;
_beginthread(A);
_beginthread(B);
while(check!=2);
C;

こんな感じでやってみました。AとBは終了するときにcheckを1増やします。
簡単なテストプログラムを作ってみたところ上手く動いたのですが、本当にこれでいいのか不安です。
とくに、ABが終わるまでひたすらループで待ち続けるのは、無駄にCPU使ってそうで
もっとスマートな方法があるんではないかと。
0912デフォルトの名無しさんNGNG
>>910
限りなくVCの香りがするのは気のせいか?
0913デフォルトの名無しさんNGNG
>>911
マルチタスク(スレッド)のOSには必ずそれを
管理するオブジェクトやAPIが用意されている。
それを利用した方がいい
0914デフォルトの名無しさんNGNG
>911 mutex, condition variable
0915911NGNG
今はVCで作ってるけど、できればLINUXでも動く方が望ましいんです。
調べてる途中でmutexとかも出てきたんですけど、どう使えばいいかわからなくて。

今思いついたんですけど、
1、AとBの実行直後に適当な変数にロックをかけて終了時にロックを外すようにする。
2、Cの前でロックかけられてるやつにアクセスする。
こうすれば、AとBが終了するとともにロックが解け、Cが実行される。
というのでいけるかな?明日試してみます。
0916デフォルトの名無しさんNGNG
うぉおおおおおおおおおおおおおおおおおおおおおお
めちゃ便利
これから毎日使う!

vi _906.h
$cp _906.h /usr/include
0917デフォルトの名無しさんNGNG
>>915
win32用のpthreadがある
それつかえばlinuxでも動くはず
pthreadはオライリーの本がちゃんとあるので嫁
0918デフォルトの名無しさんNGNG
>>916
一般ユーザがそこにコピーできるのか
0919≠915NGNG
% rm -f _906.h

pthread_join 見てみたけど、
ライブラリとして void** を使ってるのはいかがなものか。
0920デフォルトの名無しさんNGNG
void *へのポインタならvoid *に入ると思うんだけど。。。
0921デフォルトの名無しさんNGNG
最近c始めたんですけど

#include <stdio.h>
main()
{
int ja; /*国語のテストの点*/
int ma; /*数学のテストの点*/
int en; /*英語のテストの点*/
int ave; /*平均点*/

ave = ( ja + ma + en ) /3;
printf("三教科の平均点は%dです。\n",ave);
}

こう書いてコンパイルすると平均点が47点になるんですけど…
よく分りません。なんで47点?
だれか親切に教えてください。
0922デフォルトの名無しさんNGNG
>>921
初期化してない変数の値は激しく未定義だYO!
0923デフォルトの名無しさんNGNG
>>921
初期化していない自動変数にはどんな値が入るか分からない。
0924デフォルトの名無しさんNGNG
>>921
1. 初期化してない変数には、どんな値が入っているか分からない。
2. 整数同士の割り算では、余りは切り捨てられる
  (但し、片方が正で片方が負の場合の結果は環境依存)。
0925906NGNG
#define I int main()
I
{
}
0926デフォルトの名無しさんNGNG
#define I2 int main(int argc,char *argv[])
I2
{
}
0927デフォルトの名無しさんNGNG
>>921
あなたの得点です
0928デフォルトの名無しさんNGNG
>>923
お、そうだった。
静的変数だと 0 で初期化されるね...。
0929デフォルトの名無しさんNGNG
>>922
>>923
>>924
何でもいいから値を入れろってことですか?

あと、初期化の意味が分からん…
0930デフォルトの名無しさんNGNG
#define I int main(int argc,char **argv,char **env)
#define C printf("%s\n",env[0]);
I
{
C
}
0931重婚罪の922NGNG
int variable1 = 10; /* 初期化ぽ */
int variable2;
variable2 = variable1; /* 代入ぽ */
0932デフォルトの名無しさんNGNG
>>929
int ja = 78; /* 初期化 */
int ma = 100; /* 初期化 */
int en;
int ave;

en = 82; /* 代入 */
ave = (ja + ma + en) / 3; /* 代入 */
0933デフォルトの名無しさんNGNG
ケコーンしまくり
0934デフォルトの名無しさんNGNG
>>929
初期化(脳内C言語事典78ページより)
変数を参照(使用)するより前に、何かしらの値を入れる事
0935921NGNG
分かりました!!
アリガト!(´▽`)
0936デフォルトの名無しさんNGNG
>>934
確かに代入においても参照されるといえば参照されるのだが、
誤解されそうな定義なので却下。

初期化(脳内C辞典201ページより)
変数を宣言すると同時に何かしらの値を入れること。
0937デフォルトの名無しさんNGNG
もう次スレの時期なんでつか?早いでつね。
0938デフォルトの名無しさんNGNG
char buf[256];
#define TRACE(_msg_) strcpy(buf,"_msg_");

とやったマクロを使うと失敗してしまうのですが
これを回避する方法ってあるのでしょうか?
11.17を読んだのですがわかりません
0939デフォルトの名無しさんNGNG
>>938
#define TRACE(_msg_) strcpy(buf,#_msg_);
0940デフォルトの名無しさんNGNG
#define TRACE(_msg_) strcpy(buf, #_msg_);
0941デフォルトの名無しさんNGNG
本日3度目のケコーン。
0942デフォルトの名無しさんNGNG
struct bumon {
char *name;
int bangou,total;
} *part_ptr,part;

のように宣言して他の関数で
while(!feof(fp)) {
part_ptr = (bumon *)malloc(sizeof(bumon));
fscanf(fp,"%d",&(part_ptr + bumonsuu)->bangou);
fscanf(fp,"%s",*(s + ));
printf("%d %s\n",(part_ptr + bumonsuu)->bangou,*s);
if(feof(fp)) break;
bumonsuu++;
}
というのがあるのですが
printfとかfscanfで*nameを使うにはどうすればいいのですか?
0943デフォルトの名無しさんNGNG
その前に name の参照先はどこよ?
0944デフォルトの名無しさんNGNG
あと、めっちゃメモリリーク&不正アクセスしてる悪寒。
0945942NGNG
何が悪いのか分かりました。
char *nameと宣言すれば配列になると勘違いしてました
参照して、値入れなきゃ駄目なんですね。
0946デフォルトの名無しさんNGNG
>>940
最後のセミコロンは場合によるね
0947デフォルトの名無しさんNGNG
夏だなあ。みんな、質問の前にK&Rを読もう!君の考えていることの大体は載ってるし、
答えもここの人たちよりもカッコイイのがある。アメリカの一流プログラマはみんな
この本を神棚に祭って、毎日三回読誦してるんだよ。
 
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
0948デフォルトの名無しさんNGNG
アメリカで神棚て...。
0949デフォルトの名無しさんNGNG
#include <stdio.h>

int main() {
      char str[] = "hello,world";
      printf("str[0]の内容\t\t= %c\n" , *str);
      printf("str[0]のアドレス\t= %x" , str);
      return 0;
}

このプログラムの意味が分かんないです。
コメント付けてもらえないでしょうか
0950デフォルトの名無しさんNGNG
>>942
>part_ptr = (bumon *)malloc(sizeof(bumon));

struct bumonな
もしかして、そのソースの拡張子がcppになってるか?
Cを憶えるのにC++で翻訳してると嘘を教え込まれるぞ

それからsizeofにはbumonsuuのとりうる最大値+1を掛けてないのに

>fscanf(fp,"%d",&(part_ptr + bumonsuu)->bangou);
は無理だろ
0951デフォルトの名無しさんNGNG
>>949
#include <stdio.h>

int main() { /* 引数がないことを示す表記は (void) で () は誤り、ブレースの開き方がK&Rや規格票と違う */
      char str[] = "hello,world"; /* 初期値のある配列はなるべくstaticにせよ */
      printf("str[0]の内容\t\t= %c\n" , *str); /* 入門用サンプルならprintf("%c", str[0]);が適切な表記 */
      printf("str[0]のアドレス\t= %x" , str); /* 入門用サンプルならprintf("%x", &str[0]);が適切な表記 */
      return 0;
}
0952デフォルトの名無しさんNGNG
>>950
まぁ、それ以前の問題なんだがな...。
長さ不定の場合は、リスト構造にするか、
ある程度の配列を確保して足りなくなったら伸長するのがいいっぽ。
先頭から順番にアクセスするだけなら前者、
[ ] 使ってランダムアクセスしたければ後者、だな。
0953デフォルトの名無しさんNGNG
>>951
%xを使っていることに対してはつっこまないのか?
0954951NGNG
>>953
まあそうだね。キミがつっこめばいい。
0955デフォルトの名無しさんNGNG
初期値のある配列はなるべくstaticにせよ。か。へぇ〜
参照のみの配列はなるべくstatic constにせよ。なら話は分かるけど。
0956デフォルトの名無しさんNGNG
>>955
初期値のある、一時利用の配列は?
0957951NGNG
>>956
もしかしてautoって言いたいの?
0958デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/tech/1058754682/

新スレ
YBBで立つとは思わなかった
0959デフォルトの名無しさんNGNG
>>883
po = &var; // poというカードにvarの住所を書き込む
*po = 1010; // poのカードに書いてある住所に1010を持っていく。

だろ?
0960デフォルトの名無しさんNGNG
さーてうめますか。
0961デフォルトの名無しさんNGNG
埋めるんならageとくか。
0962派手に埋め立てNGNG
糞スレ〜〜〜ッ!!ばっo(⌒▽⌒)oか〜♪ハジメマシテ〜〜〜ッ☆☆(*⌒ヮ⌒*)
なんで厨房って言われてるかしってるのぉ〜〜〜っ?(#⌒〇⌒#)キャハ
うーんとー、私ぃすっごくすっごく暇でー、\(⌒∇⌒)/
探してたら(◎_◎)なんとっ!☆彡(ノ^^)ノ☆彡ヘ(^^ヘ)☆彡(ノ^^)ノ☆彡
馬鹿みたいな掲示板♪を発見!!!!(^o^)//""" パチパチパチ
さ・む・い〜{{ (>_<;) }} ブルブルすごい数のレスがありますけど、
これ全部1人の方がレスしているんですか?(@@;)すごすぎ …
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘφ(`∇´)φカキコカキコ♪
削除以来、出してくれるよねっ。(*^-^*) お・ね・が・い♪(* ̄・ ̄)ちゅ♪ッ
え?くれないのぉ〜?(;¬_¬)そんなのいやいや〜〜、ガ━━━(゚ロ゚)━━━ン
出してくれなかったら、( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!( ゚▽゚)=◯)`ν゚)・;'パーンチ
(>_<) いてっ!ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ ガ━━(゚Д゚;)━━ン!
(+_+) 気絶中。。。。・゚゚・o(iДi)o・゚゚・。うぇぇん <(゜ロ゜;)>ノォオオオオオ!! (゚□゚;ハウッ!
なあんて(#⌒▽⌒#)こんな私っ!σ(^_^)だけど、(///▽///)
お友達になってm(_ _)mくださいませませ♪('-'*)フフ ドガ━━━Σ(ll◎д◎ll)━━━━━ン
ということで。(^-^)vじゃあね〜〜〜♪(⌒0⌒)/~~ ほんじゃo(゜▽゜ヽ)(/゜▽゜)o レッツゴー♪
あ、怒ってる? に・げ・ろ〜C= C= C= C=┌(^ .^)┘
(*^-^*)ノ~~マタネー☆'.・*.・:★'.・*.・:☆'.・*.・:★
0963デフォルトの名無しさんNGNG
free(malloc(1024));
0964デフォルトの名無しさんNGNG
for(;;) fork();
0965デフォルトの名無しさんNGNG
なるほど、落ちるタマか
0966デフォルトの名無しさんNGNG
お年玉キボンヌ
0967デフォルトの名無しさんNGNG
double d=0.0;

for(1){
if(d==0.9) break;
d+=0.3;
}

!
0968デフォルトの名無しさんNGNG
double d=0.0;

while(1){
if(d==0.9) break;
d+=0.3;
}

!
0969デフォルトの名無しさんNGNG
int di = 0;

while(1){
double d = di / 10.0;
if(di == 9) break;
di += 3;
}
0970デフォルトの名無しさんNGNG
埋めるんじゃねーの?
0971デフォルトの名無しさんNGNG
int main(){
 const char* c="埋めるんじゃねーの?";
 int i=0;
 while(i<29){
    printf("%s\n",c);
    i++;
  }
  retrun 0;
}
0972デフォルトの名無しさんNGNG
う
0973デフォルトの名無しさんNGNG
>>967
なぁんだ、つまんねえ
0974デフォルトの名無しさんNGNG
>>973
なぁんだのなんだは何を期待してたんだ?
0975デフォルトの名無しさんNGNG
め
0976デフォルトの名無しさんNGNG
ず
0977デフォルトの名無しさんNGNG
り
0978デフォルトの名無しさんNGNG
>>974
いや、FPUのバグとかそっち系かと
0979デフォルトの名無しさんNGNG
int naan(int anna)
{
 if(anna <= 0) return 1;
 return naan(naan(naan(anna - 2) / 2) >> 2);
}
0980デフォルトの名無しさんNGNG
ナーン
0981デフォルトの名無しさんNGNG
nuun
0982デフォルトの名無しさんNGNG
兄「おい、もっと開けよ。よく見えないだろ」
妹「これ以上はダメ。恥ずかしいもん」
兄「小学生のころはよく見せ合いっこしたろ」
妹「あのころはまだ子供だったから・・・。私もう中学生なんだよ」
兄「親父には見せたんだろ、オレにはダメだっていうのかよ!」
妹「だってパパは・・・」
兄「じれったいな。オレが開いてやるよ!」
妹「ダメ、お兄ちゃん、ああ・・・」
兄「すげぇ、小学生のときとは全然ちがう」
妹「やめて、そんなに開いたら全部見えちゃうよ・・・」
兄「なんか複雑になってる」
妹「あたりまえでしょ、中学生になって科目も増えてるんだから」
妹の通信簿を無理矢理見ようとする兄。
0983デフォルトの名無しさんNGNG
>>982
抜きますた
0984デフォルトの名無しさんNGNG
・・・
0985デフォルトの名無しさんNGNG


   ≡ (゚∀゚ )
  ≡ 〜( 〜)
   ≡  ノ ノ 

0986デフォルトの名無しさんNGNG
   ( ゚∀゚) ≡
   (〜 )〜 ≡
    \\ ≡
0987デフォルトの名無しさんNGNG


                                                               ぬるぽ
0988デフォルトの名無しさんNGNG


                                                              >987ガッ
0989デフォルトの名無しさんNGNG
鵜メール
0990デフォルトの名無しさんNGNG
あとじゅ。
0991デフォルトの名無しさんNGNG
neuf
レス数が950を超えています。1000を超えると書き込みができなくなります。