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

このエントリーをはてなブックマークに追加
413デフォルトの名無しさん
きっと初歩的な質問で申し訳ないのですが、以下のプログラムの下から2行目
gets(y->name);
のところが、コンパイルしても実行されません。
どなたか分かる人、原因を教えて下さい。お願いします。
ちなみに、エラーメッセージは出ていません。コンパイラはLSI-Cです。

#include<stdio.h>
struct Student
{int sintyou;int taijuu;char name[20];}tanaka,ikeda;

void hyouzi(struct Student x);void nyuryoku(struct Student *y);

int main(void){
nyuryoku(&tanaka);
nyuryoku(&ikeda);
hyouzi(tanaka);
hyouzi(ikeda);
return 0;}

void hyouzi(struct Student x)
{printf("%d %d %s\n", x.sintyou , x.taijuu , x.name);}

void nyuryoku(struct Student *y)
{printf("身長を入力して下さい");
scanf("%d",& y->sintyou);
printf("体重を入力");
scanf("%d",& y->taijuu);
printf("名前を入力\n");
gets(y->name);
}
414デフォルトの名無しさん:04/12/01 09:12:52
getsとscanfを使わなければうまくいきます。
415デフォルトの名無しさん:04/12/01 09:14:24
>>413
scanf()とgets()を組み合わせた場合によく陥る罠。
どちらも仕様を推奨できる関数ではないので、前者はfgets()+sscanf()で、後者はfgets()で書くことをお勧めする。
それから、必要がないならLSI-Cではなく、32ビットのフリーのコンパイラを使用することを強くお勧めしておく。
416デフォルトの名無しさん:04/12/01 09:15:07
>>413
fgets()+sscanf()でもいいが、fgets()+atoi()でも充分用は足りるね。
417デフォルトの名無しさん:04/12/01 09:31:28
っていうか、
数値入力するのにfgetsでとるなよ
argvからとれ
418デフォルトの名無しさん:04/12/01 10:00:08
(・3・)エェー
419デフォルトの名無しさん:04/12/01 12:07:04
>>417
インタラクティブな処理を目指しているとしたら?
420デフォルトの名無しさん:04/12/01 12:27:45
例外処理とか入ってないし実用は考えてないだろ
構造体の勉強用のわざとらしいプログラムに思える。
421デフォルトの名無しさん:04/12/01 12:37:56
>>420
だったら尚のこと、コマンドライン仕様を考えるのも無駄な気がするが。
422デフォルトの名無しさん:04/12/01 14:49:36
K&R買ってしばらくたつんだけど。原著で読めないならば買わないほうがよかったかな?
もちろん原著では読めませんけど^^;
423デフォルトの名無しさん:04/12/01 14:50:57
getopt()じさく
424デフォルトの名無しさん:04/12/01 14:52:21
世界中で何千・何万もの再発明を(事実上)しなきゃいけないのがクラスライブラリの貧弱なCの悩ましいところ
425デフォルトの名無しさん:04/12/01 15:04:09
VisualC++6.0でダイアログのイベントハンドラ追加できないエラーに
はまってます。

ダイアログエディタでダブルクリックすると
「新規メンバを追加できません」←なメッセージボックスがでて
ハンドラ追加してくれません。

何が原因なんでしょう?
426424:04/12/01 15:06:52
突っ込まれる前に訂正しとこ
クラスライブラリ→標準ライブラリ
427デフォルトの名無しさん:04/12/01 15:10:21
>>425
プロジェクトを一度閉じて、.clwファイルを削除した後もう一度開いても現象が変わらないなら
VC専用スレへどうぞ。
#そのソースファイルが他で開かれてるって落ちはないよな。
428425:04/12/01 15:18:21
.clwを削除してもだめでした。
PC再起動したらいけました。
他でそのファイルを開いてたわけではないのですが・・・。
429デフォルトの名無しさん:04/12/01 15:31:19
>>422
そんなことはない。
ただのC言語の解説書だよ。
理解できたら後は捨ててもいいくらい。
430デフォルトの名無しさん:04/12/01 16:00:34
>>429 そうですか。安心しました。
レス、ありがとうございます。
431デフォルトの名無しさん:04/12/01 16:24:27
if(A) {
 if(B) {
  hoge();
 }
}



if(A && B) {
 hoge();
}

どちらも速度は変わりませんかね?
A,Bは条件式とする。
432デフォルトの名無しさん:04/12/01 16:25:30
そんなこと気にするぐらいだったら他所をいじれという程度の違いは出るかも
433デフォルトの名無しさん:04/12/01 16:47:02
>>431
最近のコンパイラなら最適化によって同じコードを吐きます。
コンパイル速度を問うているなら、余計なことは気にするな、と。
434デフォルトの名無しさん:04/12/01 20:16:43
で、まだ1種類も出ないのか?
435デフォルトの名無しさん:04/12/01 20:18:08
なにが?
436デフォルトの名無しさん:04/12/01 20:42:51
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < 10種類まだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/
437デフォルトの名無しさん:04/12/01 20:45:54
晒しage
438デフォルトの名無しさん:04/12/01 20:48:35
>>431
処理系による。翻訳環境と実行環境、いずれの特徴にも強く依存する。
少なくとも、その処理系での実測をせずに他の処理系での最適化についての議論を始める阿呆がいるようだが相手にしてはならない。
439デフォルトの名無しさん:04/12/01 20:52:28
vc, vc++.net, gcc for cygwin & Linux & XXX & YYY, bcc
shc, CodeWarrior for XXX & YYY & ZZZ, cc
440デフォルトの名無しさん:04/12/01 20:56:16
stdboolのある10種類だよ♪お馬鹿さん♪♪
441デフォルトの名無しさん:04/12/01 22:16:41
>>438
では、実測した結果を報告してください。
442デフォルトの名無しさん:04/12/01 22:21:13
>>441
実測が必要と示唆した者になぜ実作業を要求するのか、論理的に説明したまえ。
443デフォルトの名無しさん:04/12/01 22:22:18
厨国の故事による
444デフォルトの名無しさん:04/12/01 22:29:37
先ずは隗より始めよと
445デフォルトの名無しさん:04/12/01 22:30:28
実測するまでもなく同じコードを出力すると書いているのが見えないらしい。
446デフォルトの名無しさん:04/12/01 22:35:06
コードに違いがある可能性がないはと考えられない。
447デフォルトの名無しさん:04/12/01 22:52:51
>>445
>実測するまでもなく同じコードを出力する

脳が腐乱していてプログラムに関する議論ができないらしい。
448デフォルトの名無しさん:04/12/01 22:55:08
すいません。他すれで質問していたのですが、ここでも質問させてください。

365 名前:デフォルトの名無しさん 投稿日:04/12/01 22:01:17
すいません。スレ違いかもしれませんが教えてください。

windowsで動作するアプリを作成してみたい(勉強したい)のですが、
例えば、VBで作成するとだとランタイムが利用するマシンに必要になるとおもいます。
こういったランタイムなどの配布なしで動作するアプリを作るには
どのような技術を勉強すればよいのでしょうか??
449デフォルトの名無しさん:04/12/01 22:55:30
>>448
氏ね
450デフォルトの名無しさん:04/12/01 22:56:03
>>448
ランタイムも同梱する(わらい)
451デフォルトの名無しさん:04/12/01 22:56:29
>>448
Delphi, C++ Builder, Visual C++ とか使うといい。
ちなみに C++ Builder が一番お奨め。
452デフォルトの名無しさん:04/12/01 22:57:42
>>448
元スレでどんな誘導受けたのか知らんがここへ来た理由が不明 (最大限に誘導者を立てた表現)

それはここだろ
http://pc5.2ch.net/test/read.cgi/tech/1101393155/
453448:04/12/01 23:02:39
>>450 451
ありがとうございます。

>>452
誘導受けたわけではないのですが、”俺に聞け!”ってタイトルにつられて
ふらふらと。。。すいません。
454413:04/12/01 23:22:16
返事が遅くなってしまい、申し訳ありません。
414〜417さん、アドバイスありがとうございました。
scanf()とgets()は組み合わせるとよろしくないということですね。
まだまだ初心者で理由が分かりませんが、おいおい勉強していきたいと思います。


455デフォルトの名無しさん:04/12/01 23:25:13
>>453
ちなみに、C でもランタイムはすぐつくよ。
printf みたいな標準関数を使わないんなら別だけど。
とにかくランタイムが嫌いでチキン肌がスタンダップするほどなら、
組み込み系かアセンブラのが C よか君の好みに近いんじゃないかな。
間違っても携帯アプリとかに近寄らないほうがいいよ。

ム板には機械語スレもあるけど、CISC だとやっぱりランタイムがいたりするから、
話すなら RISC 限定で切り出した方がいいな。
456デフォルトの名無しさん:04/12/01 23:28:18
VC++7以上を使ってmsvcr70に嵌れ(w
457デフォルトの名無しさん:04/12/01 23:29:41
>>455
わけワカメちゃん
458デフォルトの名無しさん:04/12/02 03:29:21
> K&R買ってしばらくたつんだけど。原著で読めないならば買わないほうがよかったかな?

もったいないのでわたしにください。
459デフォルトの名無しさん:04/12/02 03:30:19
>>424
> 世界中で何千・何万もの再発明をしなきゃいけないのがクラスライブラリの貧弱なCの悩ましいところ

Cに「クラス」があると思い込んでいるしったかぶり君。
460デフォルトの名無しさん:04/12/02 03:37:24
>>459
2レス下も辿れない池沼ちゃん
461デフォルトの名無しさん:04/12/02 07:28:26
初めての開発環境に、MicrosoftのものかGNUのもの以外を薦める奴の気がしれない。
ボーランド最悪。
462デフォルトの名無しさん:04/12/02 09:05:41
は? 逆だろ。VC最悪
463デフォルトの名無しさん:04/12/02 09:11:08
素人にGNU勧めてどうするんだ?
464デフォルトの名無しさん:04/12/02 09:45:43
463 名前:デフォルトの名無しさん :04/12/02 09:11:08
素人にGNU勧めてどうするんだ?
465デフォルトの名無しさん:04/12/02 09:55:51
小さいファイルから巨大なファイル(数G程度)を扱うコンソールアプリを作っています。
しかしながら、ファイルのサイズをバッファに読み込むことなく取得することができず困っています。
Windows、UNIXに依存したプログラムを書くことを想定してますが、どなたか助けていただけませんか?

Windows(NTFS)
2003 Server + VS .net 2003

UNIX
Solaris + gcc
466デフォルトの名無しさん:04/12/02 09:56:27
かなりの初心者なんですが、教えていただけたら有り難いです。

>整数型配列aに100から199までの数字を格納し、4けたの書式付10進数で出力
>せよ。また、書式なしの10進数で出力した結果と比較せよ(両方の結果を示す事)。
 for文を使うと良い。 for(i=100;i<200;i++);

書式付というのは、この場合%4dということで良いのですか?
467466:04/12/02 09:57:13
初心者なりに使えない脳で書いてみました。どこが違うのでしょうか。
#include <stdio.h>

main(){

int a = 0;
int i;

for(i=100;i<200;i++){
a = i - 1;
printf("%4d",a);
printf("%d",a);
}
}
468デフォルトの名無しさん:04/12/02 09:57:45
よい。
469デフォルトの名無しさん:04/12/02 09:58:35
>>467
わざとだろ?
470466:04/12/02 10:00:21
とおっしゃると?
コンパイラーが無いので、確認が取れないのですが、
友人に聞いたところ、違うと返答が来て・・・・・・。
471デフォルトの名無しさん:04/12/02 10:01:25
>>470
なんでわざわざ1を引くんだよ。

for(a=100;a<200;i++){
printf("%4d",a);
printf("%d",a);
}
472466:04/12/02 10:02:59
となると、、、、
#include <stdio.h>

main(){

int a;

for(a=100;a<200;a++){
printf("%4d",a);
printf("%d",a);
}
}
ということになるんでしょうか?
473デフォルトの名無しさん:04/12/02 10:03:43
おまえら改行いれろよ...
474デフォルトの名無しさん:04/12/02 10:08:44
正しくはこう
#include <stdio.h>

main()
{
  int i;

  for (i = 100; i < 200; i++) {
    printf("%4d\n", i);
    printf("%-4d\n", i);
    printf("%d\n",i);
  }
}
475デフォルトの名無しさん:04/12/02 10:18:25
問題には整数「配列」aとかかれているから、
int a;はダメ
int a[100];にする
476466:04/12/02 10:21:21
では、474,475さんの書き込みを二つを合わせると、

#include <stdio.h>

main()
{
  int i[100];

  for (i = 100; i < 200; i++) {
    printf("%4d\n", i);
    printf("%-4d\n", i);
    printf("%d\n",i);
  }
}
でOKなんですか?
あと、追加の質問で失礼なんですが、%-4dが示すものは何でしょうか。
477デフォルトの名無しさん:04/12/02 10:36:18
> 整数型配列aに100から199までの数字を格納し、4けたの書式付10進数で出力

こういう無意味な課題出すぼけの顔をみたいものだなあ。
何か「意味のあること」やれよ。
478デフォルトの名無しさん:04/12/02 10:36:48
> 整数型配列aに100から199までの数字を格納し、4けたの書式付10進数で出力

こういう無意味な課題出すぼけの顔をみたいものだなあ。
何か「意味のあること」やれよ。
479デフォルトの名無しさん:04/12/02 10:38:17
正しくはこう
#include <stdio.h>

main()
{
  int a[100];
  int i;

  for (i = 0; i < 100; i++) {
    a[i] = i + 100;
    printf("%4d", a[i]);
    printf("%d",a[i]);
  }
}
480デフォルトの名無しさん:04/12/02 10:39:22
だからかいぎょうしろって。

#include <stdio.h>

main()
{
  int a[100];
  int i;

  for (i = 0; i < 100; i++) {
    a[i] = i + 100;
    printf("%4d\n", a[i]);
    printf("%d\n",a[i]);
  }
}
481デフォルトの名無しさん:04/12/02 10:40:47
2つの出力を見比べるなら、このほうがいいのでは?
#include <stdio.h>

main()
{
  int a[100];
  int i;

  for (i = 0; i < 100; i++)
    a[i] = i + 100;
  for (i = 0; i < 100; i++)
    printf("|%4d|%d|\n", a[i], a[i]);
}
482デフォルトの名無しさん:04/12/02 10:41:49
2種類の意味のちがう「100」がまじるとわかりにくいので、
以下のようにしたほうがいいのでは?
#include <stdio.h>

#define N

main()
{
  int a[N];
  int i;

  for (i = 0; i < N; i++)
    a[i] = i + 100;
  for (i = 0; i < N; i++)
    printf("|%4d|%d|\n", a[i], a[i]);
}
483デフォルトの名無しさん:04/12/02 10:47:06
Lvの低い質問だと急に賑やかになるな。

>>482

>#define N
484デフォルトの名無しさん:04/12/02 10:49:17
題意を汲んだら、最初のループは
for (i = 100; i <= 199; ++i) {
a[i - 100] = i;
}
だと思うのだけどね。
#define START_NUMBER 100
#define END_NUMBER 199
int a[END_NUMBER - START_NUMBER + 1];
for (i = START_NUMBER; i <= END_NUMBER; ++i) {
a[i - START_NUMER] = i;
}
とすりゃ間違いないな。
485デフォルトの名無しさん:04/12/02 10:53:09
#include <stdio.h>
#include <stdlib.h>

#define N

int main(int argc, char **argv)
{
  int a[N];
  int i;

  for (i = 0; i < N; i++)
    a[i] = i + 100;
  for (i = 0; i < N; i++)
    printf("|%4d|%d|\n", a[i], a[i]);
  return EXIT_SUCCESS;
}
486デフォルトの名無しさん:04/12/02 10:54:19
> 題意を汲んだら、最初のループは

いや逆だろ
487デフォルトの名無しさん:04/12/02 10:55:10
値が抜けてるぞ!
たしかに、課題だったら丁寧なほうがいいよな。
以下ので正解では?

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

#define N 100

int main(int argc, char **argv)
{
  int a[N];
  int i;

  for (i = 0; i < N; i++)
    a[i] = i + 100;
  for (i = 0; i < N; i++)
    printf("|%4d|%d|\n", a[i], a[i]);
  return EXIT_SUCCESS;
}
488デフォルトの名無しさん:04/12/02 13:23:57
>>465
long FileSize;
fseek(fp, 0, SEEK_END);
FileSize = ftell(fp);
489デフォルトの名無しさん:04/12/02 13:49:27
>>488
数GBと言うことだけど、2GB超えたら?
490デフォルトの名無しさん:04/12/02 14:52:35
>>489
処理系依存の方法で何とかしろ。
491デフォルトの名無しさん:04/12/02 15:02:37
Windows だったら GetFileSize() とか GetFileSizeEx() とか
GetFileAttributeEx() とか。

UNIX 系だったら、488 の方法で ftell() のかわりに ftello() とか、
stat() して st_size とか。
492デフォルトの名無しさん:04/12/02 15:03:50
>>465
statとか。余計な情報もとれるが。

493デフォルトの名無しさん:04/12/02 16:10:23
VCなら _filelength, _stat ってのもある
494デフォルトの名無しさん:04/12/02 16:19:58
で、10種類は?
495ゆかこ:04/12/02 16:56:39
今度C言語の課題が出たのですがどうも自分の力ではできません。
よろしければ助言をいただきたいと思います。よろしくお願いします。


レポート課題
以下のようなゲームを作りなさい。
コンピュータが 0から 9までの数を 4つ, 順序付きで重複なく選ぶとする. プレイヤ(人間)は, この数列を当てるのだが, はずれた場合に提示されるヒントは次の通り.

正解の n番目の数を n番目に解答していれば, Hit と呼ぶ. Hit の個数がヒントとして提示される.
正解の n番目の数を m番目(n≠m)に解答していれば, Blow と呼ぶ. Blow の個数がヒントとして提示される.

実行例
5 6 7 8
Hit: 0, Blow: 3
7 8 9 0
Hit: 1, Blow: 1
1 2 3 6
Hit: 1, Blow: 0
9 8 5 6
Hit: 3, Blow: 0
0 8 5 6
Congratulations!
496デフォルトの名無しさん:04/12/02 17:00:26
>>495
ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50
497ぼるじょあ ◆yBEncckFOU :04/12/02 17:02:18
エェー あっちのスレで待っているYO!
498デフォルトの名無しさん:04/12/02 17:06:23
ぼるじょあさん全然答えてないYO↓
499デフォルトの名無しさん:04/12/02 17:16:37
>>488
これ使え

unsigned int filesizeget(unsigned int *GByte, FILE *fin)
{
unt Byte;
int ch;

if(GByte == NULL){
/*ファイルのサイズが1GBに満たない約束できる場合*/
for(;;){
for(Byte=0;Byte<0x40000000;Byte++){
if((ch=fgetc(fin)) == EOF){
return Byte;
}
}
}
}else{
*GByte = 0;
for(;;){
for(Byte=0;Byte<0x40000000;Byte++){
if((ch=fgetc(fin)) == EOF){
return Byte;
}
}
(*(GByte))++;
}
}
}
500デフォルトの名無しさん:04/12/02 18:04:57
>>499
>488内のアンカーにある>465を読むことを思いつけませんでしたか?
501デフォルトの名無しさん:04/12/02 18:10:54
typedef struct _node {
char name[32];
char phone[16];
struct _node *next;
}Node;
Node *InsertNode(Node*,Node*);
void main(void)
{
Node *p=NULL,q;
while(1){
printf("名前:"); scanf("%s",q.name);
if(strcmp(q.name,"end")==0) break;
printf("電話番号:"); scanf("%s",q.phone);
p=InsertNode(p,CreateNode(&q));
  }
  return;
}
これと同じことを以下のdatファイルからfscanfを用いて読み込むにはどうすればいいのでしょうか?
けいさつ     110
しょうぼう     119 
じほう       117
てんき      116  

FILE *fp;
fp=fopen("data.dat","r");
while(1){
  fscanf(fp,"%s",%s",q.name,q.phone);
p=InsertNode(p,CreateNode(&q));
}
では出来ませんでしたぁ〜
  
502デフォルトの名無しさん:04/12/02 18:14:06
不思議なとこにダブルクォーテーション入れますね君
503デフォルトの名無しさん:04/12/02 18:19:44
#include "resource.h"
これがあるときどう実行するんですか
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/memo01.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
504デフォルトの名無しさん:04/12/02 18:21:26
学校の先生に聞いてください。暗号文から解答を導くのが彼らの仕事です。
505デフォルトの名無しさん:04/12/02 18:23:02
>>501
いつから天気予報は116になったんでしょうか
506デフォルトの名無しさん:04/12/02 18:25:17
>>505
NTTが天気予報も始めたんですよ。ご存知ありませんか
507デフォルトの名無しさん:04/12/02 18:27:33
なんか面白いスレだな〜
508デフォルトの名無しさん:04/12/02 18:31:55
不真面目なインターネッツですね
509デフォルトの名無しさん:04/12/02 18:38:52
117 ぴっぴと鳴る
177 天気になれなれ
510デフォルトの名無しさん:04/12/02 18:54:16
>>503
Windowsプログラムを作るオプションを書き足せ。
#include "resource.h"じゃなくてWinMainが原因だろ。
511デフォルトの名無しさん:04/12/02 19:54:58
時間割を作成するプログラムってどんな感じで作ればいいですか?
空いているスケジュールを探して埋めていくと言う感じで
512デフォルトの名無しさん:04/12/02 19:55:02
うぉ・・・何やってるんだ自分は
>>495のやつをちょっと作ってみようと思って作り始めたらこんなにたってるし
作るべきプログラムそっちのけでorz
513デフォルトの名無しさん:04/12/02 20:00:07
>>511
スケジュールが重複した場合はどうするの?
514デフォルトの名無しさん:04/12/02 20:00:46
>>511
ビル・ゲイツにメールで聞け
515デフォルトの名無しさん:04/12/02 20:20:06
>>514
スパム判断されてしまいます
516466:04/12/02 21:58:47
皆さん、議論していただきありがとうございます。
あれから、色々考えてみて、動くソースを考えてみました。

#include<stdio.h>

main(){

int a [100] = {100} ;
int i;

for(i=100;i<200;i++){
a[i] = i ;
printf("書式なし:a[%d]%d\n",i,a[i]);
printf("書式あり:a[%d]%4d\n",i,a[i]);
}
}

こんなんじゃ駄目なんですかねぇ。
487さんの様に色々混ぜて使えると良いのですが、私にはまだ無理っぽいです。
517デフォルトの名無しさん:04/12/02 22:02:46
>>516
思いっきりメモリ破壊してる
518デフォルトの名無しさん:04/12/02 22:03:35
>>516
int a[100];って宣言したのにa[i]、つまりa[100]〜a[199]に書き込もうとしている。
519デフォルトの名無しさん:04/12/02 22:05:16
本当に動いてる?
for (i = 100; i < 200; i++)
が必須だとしたら、
a[i-100] = i;
でないといけません(もしくはa[200]と宣言するw)。
520466:04/12/02 22:11:03
実行してみたんですが、普通に動いてます。
a[100] に100を格納していて、for文からのiはi++によって
a[101] = 101 〜 a[199] = 199 まで格納されるように考えたんですが・・・・・・。

って、a[100]からって意味不明ですね・・・・。
でも動くのは何故・・・・・?
521デフォルトの名無しさん:04/12/02 22:11:48
破壊された領域を他の用途に使ってないからです。
再現性の低いバグに悩まされます。
522デフォルトの名無しさん:04/12/02 22:17:56
C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100951565/
先にこのスレ使わないのか?
523デフォルトの名無しさん:04/12/02 22:21:49
>>511
科目(?)のデータのほうがどうなってるのかわからんしなー。
524デフォルトの名無しさん:04/12/02 22:21:53
>>520=466
#include <stdio.h>

int main()
{
    int a[100], b[100], c[100];
    int i;

    for(i = 0; i < 100; i++)
        a[i] = 1, c[i] = 3; /* aはすべて1, cはすべて3にする */
    for(i = 100; i < 200; i++)
        b[i] = 2;
    for(i = 0; i < 100; i++)
        printf("a[%d] = %d, c[%d] = %d\n", i, a[i], i, c[i]); /* aかcの値が... */
    return 0;
}
525デフォルトの名無しさん:04/12/02 22:22:21
ウジウジいつまでも残ってるのもあれだからサクっと使ってしまいたいが
電波でも来ない限りそうそう埋まるもんじゃないからなぁ
526デフォルトの名無しさん:04/12/02 23:30:49
C言語で質問なのですが、少しわからない事があります。
背番号,打数,安打数を多数入力し、打率の最高の選手のみ
背番号,打数,安打数とともに打率を出力する(同一打率の選手はない)
プログラムです。ストッパは背番号=−999,打数=安打数=0
ここまでは出来ました。しかしコンパイルがうまくいきません・・・。
指摘下さいますと助かります。
#include <stdio.h>
int main(void)
{
int num,num1,dasuu,dasuu1,anda,anda1;
double daritu,daritu1;
daritu=0;
daritu1=0;
do{
printf("背番号を入力せよ\n");
scanf("%d",&num);
printf("打数を入力せよ\n");
scanf("%d",&dasuu);
printf("安打数を入力せよ\n");
scanf("%d",&anda);
daritu=anda/dasuu;
if (daritu1<daritu)
{
num1=num;
dasuu1=dasuu;
anda1=anda;
    daritu1=daritu;
}
}while(num!=-999 && dasuu!=0 && anda!=0);
printf("%d %d %d %.3f",num1,dasuu1,anda1,daritu1);
return(0);
}
527デフォルトの名無しさん:04/12/03 00:05:09
宿題はこっち
ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/
528デフォルトの名無しさん:04/12/03 00:16:00
>>528
失礼しました
529デフォルトの名無しさん:04/12/03 00:17:56
>>529
失礼しました
530デフォルトの名無しさん:04/12/03 01:03:37
>>530
失礼しました
531デフォルトの名無しさん:04/12/03 01:14:39
>>531
失礼しました
532デフォルトの名無しさん:04/12/03 01:15:44
>>999
失礼しますた
533デフォルトの名無しさん:04/12/03 03:52:21
> 先にこのスレ使わないのか?

あれはにせものだから削除だろ。
534デフォルトの名無しさん:04/12/03 04:29:36
で、10種類は?
535デフォルトの名無しさん:04/12/03 08:26:38
> ひとつのオブジェクトを2つに分裂させるコードを書きたいのですが、
fork() して exec()
536デフォルトの名無しさん:04/12/03 08:58:09
で、10種類は?
537デフォルトの名無しさん:04/12/03 10:07:21
ほんとにVC厨っているんだー
538デフォルトの名無しさん:04/12/03 10:39:14
本に書いてある通りに打ったのですが、
#define iskanji(c) \
(0x81 <= (c & 0xff) && (c & 0xff) <= 0x9f || \
0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc)
この行でエラーになるんです。
なぜでしょう?
539デフォルトの名無しさん:04/12/03 10:41:38
>>538
コンパイラはなんと告げてますか?
540デフォルトの名無しさん:04/12/03 11:00:37
覚えてないけど、エラーが出るんです。
いま手元にないんで試せないけど...。
541デフォルトの名無しさん:04/12/03 12:09:26
char型の変数の使いかたがいまいちわかりません。。。
教えてください。

(例)char型の変数bufに"あいう"を代入する。

char buf[7] = "";
char buf2[3] = "い";
buf = "あ" + buf2 + "う";
ポインタにポインタを加えられないということで
これは無理ですよね。

strcpy(buf, "あ");
strcat(buf, buf2);
strcat(buf, "う");
こうすれば buf に"あいう"が入りますよね。

他に簡単というか適切な方法はないのでしょうか?
542デフォルトの名無しさん:04/12/03 12:20:10
> (例)char型の変数bufに"あいう"を代入する。

char型にひらがなは入りません。
asciiの文字コード表を見ること
543デフォルトの名無しさん:04/12/03 12:35:09
>>541
sprintf( buf, "%s%s%s", "あ", buf2, "う" );
544デフォルトの名無しさん:04/12/03 12:53:20
>>543
領域破壊。
545541:04/12/03 13:10:26
>>542
はい、確認してみます。

>>543
sprintfでできました。ありがとうございました。

>>544
sprintfでやると領域が破壊されてしまうのでしょうか?
546デフォルトの名無しさん:04/12/03 13:19:36
>>545
bufのサイズより書き込む文字数が多いと領域破壊となる。
547デフォルトの名無しさん:04/12/03 13:32:19
>sprintfでやると領域が破壊されてしまうのでしょうか?

出力文字数がバッファより多いときはな。
なので代わりに最大文字数を指定できるsnprintf使うとか
sprintf(buf, "%.6s", "あいうえ"); として精度を指定したら確実
548541:04/12/03 14:00:39
>>546
>>547
すごくわかりやすかったです。
説明ありがとうございました。
もう少し本を読んで勉強してみます。
549デフォルトの名無しさん:04/12/03 14:50:58
printfのプロトタイプ宣言で↓な感じでした。

printf( const char *, ... );

"..."はどういう意味ですか?
550デフォルトの名無しさん:04/12/03 14:58:45
可変引数
551デフォルトの名無しさん:04/12/03 15:49:52
このスレ、面白くもなんともないな。
552デフォルトの名無しさん:04/12/03 15:55:55
>>551
楽しくしてやるよ。

Windowsクライアントからソケットストリームで送られてくる
ASCIIコードデータをホスト用にEBCDICへ変換する汎用ルーチンを作成せよ。
なおバイトオーダーはスモールエンディアンとする。
553552:04/12/03 15:58:09
開発環境はUNIX-Cな。
暇なんだろ。さっさと作れ。
554549:04/12/03 16:13:23
>>550

可変引数で検索したら出てきました。
有り難うございました。

ところで受け取った可変引数のパラメータをそのまま別の関数に渡す事は出来ないのでしょうか?
やりたいことは、あるマイコンのファームウェアなんですが、
printfする前に必ずあるレジスタの書き換えが必要です。
それを myprintfを作成してprintfの置き換えとして使用したいと思っています。

myprintf( 可変引数 )
{
レジスタの設定
printf( myprintfが受け取った可変引数をそのまま渡す )
レジスタの設定を元に戻す
}

ttp://www.geocities.jp/ky_webid/c/057ans.html の問題2の様にしても
良いのですが1文字毎にprintfを呼び出しているのでちょっと・・・
どなたかお知恵を貸してください。
555デフォルトの名無しさん:04/12/03 16:17:11
>>554
vprintf
556デフォルトの名無しさん:04/12/03 16:19:54
>>553
>>551は時間を自由に使う権利を持っている。
なんで命令してるんだろう。
557デフォルトの名無しさん:04/12/03 16:24:09
>>556
変な人とつきあったらだめですよー にゃんにゃん
558デフォルトの名無しさん:04/12/03 16:40:21
#include <stdio.h>
#include <process.h>

int main()
{
FILE *fp;
char str[5];
fp=fopen("test.exe","r");
if (fp == NULL){
printf("eror");
exit(-1);
}
while (fscanf(fp,"%s",str) != EOF)
printf(str);
fclose(fp);
exit(-1);
//return -1;
}

としてexeファイルを読み込んで表示させるとMZPとなるのですが、なぜ全文を表示できないのでしょうか?
テキストとかなら読み込めるのですが。
559デフォルトの名無しさん:04/12/03 16:51:48
バイナリだろ
560デフォルトの名無しさん:04/12/03 16:53:53
fscanfがそういう仕様になってるだけ
561デフォルトの名無しさん:04/12/03 17:09:16
質問です
ある計算を複数回行いたいのですがそれを繰り返し回数
ではなく、実行時間で決めたいのですがどのように
すればよいのでしょうか?イメージとしては
n=繰り返し回数
for(i=1;i<=n;i++){
ある計算
}
をn=1分間という感じなのですが・・・よろしくお願いします
562デフォルトの名無しさん:04/12/03 17:14:19
cat -n使っての、行番付サーバですが、
telnetで接続して、データおくっても、反応なしです。。
どこかで詰まってます。
おかしなところあったら教えてください。

fork()2回してます。
一回目は並行サーバのため、1回目はcat -nをexecuteするためです。
pipe2個つかって通信してます。

563サーバ部:04/12/03 17:14:54
while (1) {
if (pipe(pipe1)<0)perror("pipe");
if (pipe(pipe2)<0)perror("pipe");

cfd=accept(lfd,(struct sockaddr*)NULL,NULL);
printf("accept OK.\n");
if ((pid=fork()) < 0) {
perror("fork");exit(1);}
if (pid == 0) { /* cat -n */
close(lfd);close(cfd);
printf("I'm cat -n\n");
if (dup2(pipe1[0],STDIN_FILENO)<0)perror("dup2");
close(pipe1[0]);close(pipe1[1]);
if (dup2(pipe2[1],STDOUT_FILENO)<0)perror("dup2");
close(pipe2[1]);close(pipe2[0]);
execlp("cat","cat","-n",(char*)NULL);
perror("cat");
exit(1);
}
if ((pid2=fork()) < 0) {
perror("fork2");exit(1);}
if (pid2 == 0) { /* client processor */
close(lfd);
564デフォルトの名無しさん:04/12/03 17:16:00
>>561
time_t StartTime = time(NULL);
while (difftime(StartTime, time(NULL)) < 60)
565サーバ部2:04/12/03 17:16:41
printf("I'm client processor\n");
close(pipe1[0]);close(pipe2[1]);
nbytes=read(cfd,buf,sizeof(buf));
write(pipe1[1],buf,nbytes);
nbytes=read(pipe2[0],buf,sizeof(buf));
write(cfd,buf,nbytes);
while ((nbytes=read(cfd,buf,sizeof(buf))) > 0)
write(pipe1[1],buf,nbytes);
while ((nbytes=read(pipe2[0],buf,sizeof(buf))) > 0)
write(cfd,buf,nbytes);
exit(0);
}
close(cfd);close(pipe1[0]);close(pipe1[1]);close(pipe2[0]);close(pipe2[1]);
printf("I'm parent\n");
for (i=0; i<2; i++) {
while ((wr=wait(&status)) != pid && wr != pid2)
; /* do nothing */
printf("wait: status=%d\n",status);
}
}
566訂正:04/12/03 17:19:35
サーバ部2の

nbytes=read(cfd,buf,sizeof(buf));
write(pipe1[1],buf,nbytes);
nbytes=read(pipe2[0],buf,sizeof(buf));
write(cfd,buf,nbytes);

は余分なのでcutです。
567openGL初心者:04/12/03 17:25:28
openGLを使ったプログラム作成を助けてください。Visual Cプログラムの関数void 図形(void)の部分なのですが、問題は以下の通りです。
「表面の座標(x,y,z)が下の左式、その点における法線nが下の右式で表される立体を描け。
ここで、θおよびφはそれぞれ0<=θ<=2πおよび-π/2<=φ<=π/2の範囲をとる媒介変数であって、定数hは0<=θ<πにおいて0.3、π<=θ<=2πにおいて2とする。
なお、法線ベクトルnは正規化されてないことに注意せよ。」という問題です。また描画要素としてGL_QUADS_STRIP(隣接四辺形)を使うことが条件です。
どなたか教えてくださいお願いします。尚、初心者なのでコードの説明をしていただけると幸いです。
568デフォルトの名無しさん:04/12/03 17:27:00
>>567
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
569デフォルトの名無しさん:04/12/03 17:27:19
570デフォルトの名無しさん:04/12/03 17:36:57
あ〜 マルチしちゃったよ〜 だめだな、こりゃ。
571デフォルトの名無しさん:04/12/03 17:40:34
可変長引数の関数が受け取った引数を、別の可変長引数関数に全部渡すのって、どうやるんでしょう。
572デフォルトの名無しさん:04/12/03 17:41:31
>>564
ありがとうございました。さっそくやってみたところ
実行が終わりませんでした。
教えてくださったことを参考に調べてみて書き変えて
みたのですが
time_t StartTime = time(NULL);
(difftime(time(NULL) , StartTime) < 60)
ではないでしょうか?こっちでやってみたところ
うまくいった感じです。どうもありがとうございました。
573デフォルトの名無しさん:04/12/03 17:53:25
>>571
無理、可変個引数をとる関数を作るときはva_listを受け取るバージョンも作っておけ。
お前が554なら>>555に答えは出ている。
574デフォルトの名無しさん:04/12/03 18:28:07
スレ違いかもしれませんが
Telnetを引数なしで起動したときのように
ユーザーに入力させてそれを解析して実行する
というUIって何か名前あるんですか?
575デフォルトの名無しさん:04/12/03 18:30:23
対話型インターフェイス
576デフォルトの名無しさん:04/12/03 18:38:36
>>575
ありがとん
577デフォルトの名無しさん:04/12/03 22:27:42
>>559
>>560
#include <stdio.h>
#include <process.h>

int main()
{
FILE *fp;
char str[500];
fp=fopen("test.txt","rb+");
if (fp == NULL){
printf("eror");
exit(-1);
}
while (fgets(str,256,fp) != NULL)
printf("%s\n",str);
fclose(fp);
exit(-1);
//return -1;
}

なおしてみますた。
こうすると12fd98がずらっと表示されるのですが、なぜでしょう?
578デフォルトの名無しさん:04/12/03 22:32:02
スルーする?
579デフォルトの名無しさん:04/12/03 22:36:00
┌───────────────────┐
|致命的なエラー                [×]|
├───────────────────┤
|質問者は致命的なエラーを抱えています。  .|
|                             |
|スルーしますか?                  |
|     [ はい(Y) ] [ いいえ(N) ]        |
└───────────────────┘
580デフォルトの名無しさん:04/12/03 22:36:55
>>577
fgetsの代わりにfreadを使ってみたら?
581デフォルトの名無しさん:04/12/03 22:50:19
ネタだろ
582デフォルトの名無しさん:04/12/03 22:53:28
12fd98がずらっと表示されるのってなんでえTT
583デフォルトの名無しさん:04/12/03 22:56:51
              _,.. ----- 、_
            ,. ‐''´         `丶、
         , '"    _,. -―‐--、ヽ   ヽ、
        / /  ,. '´   ,. ---`,r=、   ヽ
       ,:' /  //  /    i `丶、     ヽ
        / /  / , '  /    / l!    、ヽ     ',
     / /  / /  ,イ       / /||  ', ヽヽ     !
     ! i l  i /  //    /, ' l '、 ',  ヽ',    |
      ! | ! l| ! //  ,ィ´∠∠',,,,,,,_', ヽ ヽ   ',!   |
      ! l !''7|!',´i`!/'//'´_,,......._ ヾ`ヽヽ  l!|   !
      | ', !ノ''ラ∀、、  '´  ,r'''ラ""''ヽヽ、 ヾ、 リ / |
     ', ヽ{i {_)::::::i       !_)::::::::!ヽヽ }__//   !
      ', !ヾ、 !:::::::::}         |::::::::::::} ノ、 !',  ヽ   !
       ', | | ! ゝ--'        ゝ---'、  ノ l ノ ノ /
        ',', ',',                // ,ィ´ /         
        ',', ',丶、   r--、        /'  ̄/  {
         ',ヽ',  `丶、 ` ´  _,.. ィ´'´ i   !   ヽ
         ノ ヽ   | }`T;ーr '´ //  /!  ',   '
   ┌/)/)/)/)/)/)/)/)/)/)l . . .l l:. l-、 . i. .i
    |(/(/(/(/(/(/(/(/(/(/│. . | i:. l  \ .:i
   r'´ ̄ヽ.              | | |  .| i: .l   \
  /  ̄`ア  >>582       | | | /| i: .l     入
  〉  ̄二). あなたは     | | |./ .| i: |   
  〈!   ,. -'. だあれ?     | | ヽ,r| i. l---', '´    ',
  | \| |   
584デフォルトの名無しさん:04/12/03 22:56:59
>>582
%s→%p
585デフォルトの名無しさん:04/12/03 23:05:23
[PR] 2chカレンダー2005仮予約受付中 [PR]
http://chbox.com/goods/
586デフォルトの名無しさん:04/12/03 23:20:38
>>584
こんどは0012FD98が表示されました!
どうしましょう?
中身はexeのバイナリーなんですけど、同じ文字が表示されるの変じゃないですか?
587デフォルトの名無しさん:04/12/03 23:24:52
>>586
>>580を嫁
588デフォルトの名無しさん:04/12/03 23:34:01
#include <stdio.h>

int main()
{
  FILE *fp = fopen("rebuild.exe", "rb");
  char str[512];
  if (fp == NULL)
  {
    printf("error");
    return 1;
  }
  while (fgets(str, 512, fp) != NULL)
    printf(str);
  fclose(fp);
  return 0;
}
589デフォルトの名無しさん:04/12/03 23:36:56
>>588
printfじゃなくてfputsだろ。
590571:04/12/04 00:26:25
>573
そうか。ありがとう。C言語の範囲じゃできないわけだね。
va_listを引数にする関数を作りたいところなんだが、他人の作った関数を呼び出す必要が
あるので、別の方法を考えてみるよ。(引数のパターンをある程度制限するとか、アセンブラ
に挑戦してみるとか)
591デフォルトの名無しさん:04/12/04 01:16:20
移植性や仕様として許されるかは別として、
ただ単に可変引数をそのまま渡すのなら、
例えば
int型の変数a1,a2,a3,....a30を用意し、
それぞれにva_arg(int, an)で引数をコピーし、
original_printf(format, a1,a2,a3,...,a30);
で呼び出すという手も
一応無くはないよ。
592デフォルトの名無しさん:04/12/04 01:21:15
指定されたバイトに書き込むときってどうやるんですか?
593デフォルトの名無しさん:04/12/04 01:22:58
>>592
そのバイトは誰だ?書き込むとは誰が何処に何を?時給は?
594591:04/12/04 01:24:13
って、今思ったけど
でかい構造体を引数扱いにすればいいな。
struct arg { char data[256]; };
struct arg *args;
va_start(ap, fmt);
args = &va_arg(ap, struct arg);
org_func(fmt, *args);

構造体のサイズ分のコピーは起こるし
移植性の問題は全然解決しないけど。
595571:04/12/04 01:32:50
>594
おお。これ面白いアイデアですね。
関数に渡したいデータはもともと別のデータ領域に入っているので、この方法は
使えそうです。
関数のパラメータのアラインを調べてみます。
596デフォルトの名無しさん:04/12/04 03:34:47
そこまでして可変引数を使いたがる理由がわからん
597デフォルトの名無しさん:04/12/04 05:51:28
引数がスタックに入ってることを理解してれば
可変だろうが簡単なのに
598デフォルトの名無しさん:04/12/04 06:34:10
あたりまえのことを何偉そうに書き込むんだろうね。
スタックに入ってるものを、どうやってそのまま全部別の関数に渡すかって話なのに。
599デフォルトの名無しさん:04/12/04 10:17:28
600デフォルトの名無しさん:04/12/04 12:37:02
v([s,f])printfみたいのは用意されてないのか...
601デフォルトの名無しさん:04/12/04 13:28:51
プログラムで疲れたろ

    /||ミ 
   / ::::|| __
 /:::::::::::|||W.C|
 |:::::::::::::::|| ̄ ̄||
 |:::::::::::::::||  ガチャッ 
 |:::::::::::::::||   ||
 |:::::::::::::::||∧_∧
 |:::::::::::::::||´・ω・`)  お茶が入りましたよ・・・。
 |:::::::::::::::|| o o旦~      
 |:::::::::::::::||―u' ||       
 \:::::::::::||
   \ ::::||
    \||彡
602デフォルトの名無しさん:04/12/04 13:35:40
便所の水で煎れたお茶・・・
603デフォルトの名無しさん:04/12/04 13:42:53
飲尿
604デフォルトの名無しさん:04/12/04 14:15:18
> 引数がスタックに入ってることを理解してれば

引数がスタック上に置かれる保証などどこにもない。
むしろそうでない環境のほうがいまどき多い。
605デフォルトの名無しさん:04/12/04 14:22:19
VCはスタックにおくだろ。
ここはVC厨ばかりだから、それでいいんだよ!
606デフォルトの名無しさん:04/12/04 14:27:13
607デフォルトの名無しさん:04/12/04 14:28:12
> X-Windowsがうごきません

そんなものはこの世に存在しません。
608デフォルトの名無しさん:04/12/04 14:34:58
まあ、可変引数に限れば
ほぼ間違いなく、スタックにあると考えていいけどな。
609デフォルトの名無しさん:04/12/04 14:46:06
決勝進出 日下部 陽一 沖縄

>>607
X-Window
610デフォルトの名無しさん:04/12/04 15:15:19
>>602は2ch初心者

玄人なら黄金茶と分かるはず
611デフォルトの名無しさん:04/12/04 15:44:05
ニラ茶だろ
612デフォルトの名無しさん:04/12/04 16:29:44
あんなところにお湯があることがおかしい!!
613デフォルトの名無しさん:04/12/04 18:17:53
> X-Window

そんなものも存在しません。
614デフォルトの名無しさん:04/12/04 18:18:19
X-Widow
615デフォルトの名無しさん:04/12/04 18:21:07
> まあ、可変引数に限れば
> ほぼ間違いなく、スタックにあると考えていいけどな。

いいえ。たとえばVAXはあきらかにちがう。
616デフォルトの名無しさん:04/12/04 18:21:14
617デフォルトの名無しさん:04/12/04 18:24:40
> X-Widow

うちのとなりのアパートに1人存在します。
618デフォルトの名無しさん:04/12/04 18:28:36
>617
まだ若いのか?
619デフォルトの名無しさん:04/12/04 18:29:55
>>618
甘いな。
X(ex)-widowとは元未亡人、再婚した人妻のことだぞ
620デフォルトの名無しさん:04/12/04 18:40:32
>>619
で、まだ若いのか?
621デフォルトの名無しさん:04/12/04 19:11:18
おかまいなしかよ。
622デフォルトの名無しさん:04/12/04 19:23:52
つーか未亡人より人妻の方が萌えるだろ?ふつう
623デフォルトの名無しさん:04/12/04 19:26:40
ふつうって何だよ
624デフォルトの名無しさん:04/12/04 19:26:52
ここは不倫なスレですね
625デフォルトの名無しさん:04/12/04 19:31:14
「widow pointer検出」ってのが、
いま使ってる開発ツールにあるんだけど、
まちがって読んで「windows pointerって何?」とかいってるぼけがいました。
626デフォルトの名無しさん:04/12/04 19:32:03
>>623
分からないお前はぼけ。
627デフォルトの名無しさん:04/12/04 19:33:27
>>625
メモリリーク検出ツールみたいなもん?
628デフォルトの名無しさん:04/12/04 19:36:24
どこもさしていないポインターを動的にみつけるんです。
629デフォルトの名無しさん:04/12/04 19:37:58
ポインタの参照先がdeleteされてるとかそんなのか。
630デフォルトの名無しさん:04/12/04 19:39:34
Cなのでdeleteはありません。
631デフォルトの名無しさん:04/12/04 19:43:11
freeか。
632デフォルトの名無しさん:04/12/04 20:03:53
> NULLを勝手に#defineし直してるソースもよく見るから、そういうソースが軒並み通らなくなっちゃう

そんなソースを通すことのほうが問題だ。
633デフォルトの名無しさん:04/12/04 20:04:57
NULLは
stdio.hに入っているべきでしょうか?
stdlib.hに入っているべきでしょうか?
634デフォルトの名無しさん:04/12/04 20:05:52
argv って、どうして
const char **argv; じゃなくて
char **argv; なんでしょうか?
635デフォルトの名無しさん:04/12/04 20:15:36
>>538
行末のバックスラッシュの後ろに空白があったりしないか?
636デフォルトの名無しさん:04/12/04 20:16:29
>>550
> 可変引数

そんなものはない。「個数」が可変なだけ。
637デフォルトの名無しさん:04/12/04 20:18:08
> ASCIIコードデータをホスト用にEBCDICへ変換する汎用ルーチンを作成せよ。
> なおバイトオーダーはスモールエンディアンとする。

こいつぼけ
そんなものはない > スモールエンディアン
big-endianの反対語もしらんのか?

そんなものはない > ASCIIコード
ASCIIのCは何の略かもしらんのか? ぼけ
638デフォルトの名無しさん:04/12/04 20:18:33
>>635を見て思ったんだけど、改行コードがCR+LFだったらマクロ継続が失敗したりしないの?
(\CR)<-これは欠落 LF<-これは残って、通常の改行として処理、とか
639デフォルトの名無しさん:04/12/04 20:19:19
>>635
それは先輩にも言われたのですが、
空白は入っていませんでした。
640デフォルトの名無しさん:04/12/04 20:24:10
>>638
OSがWindowsならスルー
UNIXならエラーになる
641デフォルトの名無しさん:04/12/04 20:24:50
OSはCygwinとかいうやつです
642デフォルトの名無しさん:04/12/04 20:25:30
>>634
const char **argv;
ってどういう意味かわかる?
643デフォルトの名無しさん:04/12/04 20:28:04
#define iskanji(c) \
((0x81 <= (c & 0xff) && (c & 0xff) <= 0x9f) || \
(0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc))
644デフォルトの名無しさん:04/12/04 20:30:01
unsigned char c;
char c;
どっちで宣言してるかによる。
645デフォルトの名無しさん:04/12/04 20:37:36
>>634
仕様だろ
646デフォルトの名無しさん:04/12/04 20:40:18
*argv++ で順番に参照するため
647デフォルトの名無しさん:04/12/04 20:41:15
>>645
だからなんで仕様がそうなってるのか聞いてるんだろ。
OSはCygwinとかいうやつです
649デフォルトの名無しさん:04/12/04 20:57:36
相変わらず低脳age厨が住み着いてるな
650デフォルトの名無しさん:04/12/04 20:58:31
>>646
こいつ ぼけ
char * const * a;
a++; //ok
(*a)++; //error
(**a)++; //ok
651デフォルトの名無しさん:04/12/04 21:00:26
argvは変更可能だと仕様で決められているよ。
652デフォルトの名無しさん:04/12/04 21:01:23
argv[0][0]='a';などとやってもよいということ。
653デフォルトの名無しさん:04/12/04 21:04:42
>>652
ほほう。そしたら
argv[100][100]='a'; とやっても大丈夫なのか。
654デフォルトの名無しさん:04/12/04 21:05:37
低脳sage厨登場
655デフォルトの名無しさん:04/12/04 21:10:27
>>653
656デフォルトの名無しさん:04/12/04 21:10:31
>>653
メモリ確保がなされているのであれば問題ないのでは?
657デフォルトの名無しさん:04/12/04 21:11:36
>>656
メモリ確保って何?馬鹿で低脳な僕にもわかるように説明してちょ。
658656:04/12/04 21:15:27
>>657
ごめんなさい。私も低脳なのでわかりません。
659デフォルトの名無しさん:04/12/04 21:16:12
>>658
元はと言えば>>652みたいな低脳が突然湧くからだ。君には責任はない。
660デフォルトの名無しさん:04/12/04 21:23:23
C++なんですが、なにかを0.5乗とか0.25乗の計算をする場合はどうすればいいのでしょうか?
661デフォルトの名無しさん:04/12/04 21:23:50
pow
662デフォルトの名無しさん:04/12/04 21:30:03
ありがとうございます
663デフォルトの名無しさん:04/12/04 21:57:41
なんか途中(>>623あたり)から文字が太くなってるんですけど、
みなさんはどうですか?
664デフォルトの名無しさん:04/12/04 21:58:38
スレ再取得汁
665デフォルトの名無しさん:04/12/04 22:09:18
ブラウザの不具合でしょ。
666ダミアソ:04/12/04 22:29:13
 
667デフォルトの名無しさん:04/12/04 23:57:05
で、10種類は?まだ一種類もあがってないぞ?
668デフォルトの名無しさん:04/12/04 23:58:57
しつこい男は嫌いです。
669デフォルトの名無しさん:04/12/04 23:59:40
ねちっこいセックスをする男の人は好きです。
670デフォルトの名無しさん:04/12/05 01:16:47
>>667
何の話?
671デフォルトの名無しさん:04/12/05 01:22:18
>>670
10種類は? 早く言え。 お前は口を割るしかない。 これが何だかわかるか? 丁字油だ。 ドイツ軍が安価な鎮痛剤として使っていたこともある。 お前に使うかどうかはまだわからん。 とりあえず、10種類をまず言うんだ。 わかったな?
672デフォルトの名無しさん:04/12/05 01:23:29
>>671
何の話?
673デフォルトの名無しさん:04/12/05 01:33:28
よーするに、しったかコイテ10種類と大風呂敷を広げただけか
674デフォルトの名無しさん:04/12/05 01:36:41
>>673
何の話?
675デフォルトの名無しさん:04/12/05 01:40:39
何の話か分からんので遡ってみた
>>81のことかな?
676デフォルトの名無しさん:04/12/05 01:42:43
俺も辿ってみた。
…環境依存の話は↓で。
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/
677デフォルトの名無しさん:04/12/05 01:43:35
boolがどうたらこうたらのコンパイラが10種類挙げろってことらしい。
678デフォルトの名無しさん:04/12/05 06:28:16
> *argv++ で順番に参照するため

こいつぼけ
だからchar ** const argv; じゃなくって
const char **argv;だっていってるだろ
679デフォルトの名無しさん:04/12/05 06:29:51
> OSがWindowsならスルー
> UNIXならエラーになる

こいつもぼけ。
たとえば改行コードが\r\nの組みでそのコードを書いてgccに通してみろよ。
LinuxでもFreeBSDでもノーエラーだぞ ぼけ
680デフォルトの名無しさん:04/12/05 06:36:32
652,653はargvがchar型の2次元配列だと思い込んでいるぼけ。
681デフォルトの名無しさん:04/12/05 06:38:10
↑しかたないだろ。VC厨が多いんだから。(おれはちがうが)
682デフォルトの名無しさん:04/12/05 06:38:32
こいつもぼけだな。VCだってそんなコードは通らん。
683デフォルトの名無しさん:04/12/05 06:46:02
あのね、Cってポインター変数に[]をつけてその参照先の内容にアクセスできるんだよ。
684デフォルトの名無しさん:04/12/05 07:04:28
>>683
という基本的なことも知らないぼけなの?>>680-681は。
685デフォルトの名無しさん:04/12/05 09:02:26
char型の2次元配列とcharのダブルポインタは違うだろ
686デフォルトの名無しさん:04/12/05 09:19:20
char[][]とchar*[]が違うことは誰でも知ってるし
中身が違っていても同じ形式でアクセスできることも、殆どの人は知っている。
687デフォルトの名無しさん:04/12/05 09:33:07
#include<stdio.h>
int main(void){

int a[2];
int *p;
int cnt;

a[0]=1;
a[1]=2;
a[2]=3;

*p=a;

for(cnt=0; cnt<3; cnt++ )
{
printf("Input data %d\n",*p[cnt]);
}
return 0;

上のプログラムをコンパイルしたらエラーが出ました。ポインターの部分というのは分かるのですが
すいませんご指導お願いします。
ex.c:12: warning: assignment makes integer from pointer without a cast
ex.c:16: invalid type argument of `unary *'
688デフォルトの名無しさん:04/12/05 09:40:44
for (cnt = 0; cnt < 3; cnt++)
{
  printf("Input data %d\n", p[cnt]);
}
但しforのカウンタにはcntより i の方が一般的。
689デフォルトの名無しさん:04/12/05 09:53:19
>>687
p[cnt] は *(p + cnt) と等価
君はそこへ更に * を追加している
690デフォルトの名無しさん:04/12/05 10:39:06
>>687
int a[2]; で使えるのはa[0]とa[1]だけだぞ。
Cの仕様上エラーにはならないが。
691デフォルトの名無しさん:04/12/05 12:40:21
エラーが出たらキャストすればおっけー。
692デフォルトの名無しさん:04/12/05 13:01:09
693デフォルトの名無しさん:04/12/05 15:01:29
> エラーが出たらキャストすればおっけー。

するなよ ぼけ
694デフォルトの名無しさん:04/12/05 15:03:21
>>691
禿同
所詮やってることはメモリのバイトデータの読み書きだからな
695デフォルトの名無しさん:04/12/05 15:04:24
ヘッダーの中とかに、関数のプロトタイプを書くときに、
「extern」ってつけると、何かいいことあるんですか?
696デフォルトの名無しさん:04/12/05 15:05:39
おまじない
697デフォルトの名無しさん:04/12/05 15:05:58
ない。
C++から呼ぶときはextern "C"必須だけど。
698デフォルトの名無しさん:04/12/05 15:08:54
DLL作るときは書いておかないといけないとか
どこかに書いてあったような希ガス
699デフォルトの名無しさん:04/12/05 15:15:19
> DLL作るときは書いておかないといけないとか

まったくのでま。こういうVC厨はおおぼけ
700デフォルトの名無しさん:04/12/05 15:27:06
さっきからボケボケうるせー
701デフォルトの名無しさん:04/12/05 15:29:34
うんうん。
702デフォルトの名無しさん:04/12/05 15:35:09
> さっきからボケボケうるせー

やーい ぼけ
703デフォルトの名無しさん:04/12/05 15:42:11
704デフォルトの名無しさん:04/12/05 15:44:25
あっちからコピペ

char *m9['A'+1];

m9['A'] = "ソレダ";
705デフォルトの名無しさん:04/12/05 16:18:19
VC厨だと2バイトめにバックスラッシュが入る心配をするかも ;-)
706デフォルトの名無しさん:04/12/05 16:21:21
>>703
> 標準ではない新しい64ビット長の データ型long long

やーい > まちがい
707デフォルトの名無しさん:04/12/05 16:41:46
>>706
あれはC99ができるよりも前に書かれているんだから当然だ。
708デフォルトの名無しさん:04/12/05 16:42:34
long long って C 標準なんですか?
__int64 は?
709デフォルトの名無しさん:04/12/05 16:45:35
> long long って C 標準なんですか?

あたりまえだろぼけ
710デフォルトの名無しさん:04/12/05 16:46:11
> できるよりも前に書かれているんだから当然だ。

いや、当然ではない。
何度も改訂されているんだから、ここ5年も改訂がないのが問題なだけであり、
ちっとも「当然」ではない。
711デフォルトの名無しさん:04/12/05 16:48:21
じゃ、鯖に入って書き換えてきてくださいね(^^
712デフォルトの名無しさん:04/12/05 16:52:39
うんうん。
713デフォルトの名無しさん:04/12/05 16:55:32
>>711
馬鹿だなぁ。

鯖の中の人に電話で頼めばいいだろ(^^
714デフォルトの名無しさん:04/12/05 16:57:34
>>713
応じてくれるわけないだろ(^o^
715デフォルトの名無しさん:04/12/05 17:09:52
C++の「algorithm」にある、文字列の並び替え関数next_permutationって、
どういうアルゴリズムなんですか?普通のC言語のプログラムで書こうとしたらどうなるのでしょうか?
javaで同じことをしたいんですけど、ヘッダファイルを見てもチンプンカンプン。
716デフォルトの名無しさん:04/12/05 17:20:21
>>714
すいません、信用が無い人にはには無理でしたね(^_^;
717デフォルトの名無しさん:04/12/05 17:33:01
にはには
718デフォルトの名無しさん:04/12/05 17:38:29
>>715
C++かJavaの領域では?
Cは全く関係ないと思うんだけど。
719デフォルトの名無しさん:04/12/05 17:39:06
Cでもできるって
720デフォルトの名無しさん:04/12/05 17:39:46
関数内のローカルな変数に
auto ってつけると、なにかいいことありますか?
721デフォルトの名無しさん:04/12/05 17:40:32
ソースコードの文字数を稼げます。一杯ソースを書いた気になれます。
722デフォルトの名無しさん:04/12/05 17:40:40
>>720
バイト数稼げる。
723デフォルトの名無しさん:04/12/05 17:48:05
724デフォルトの名無しさん:04/12/05 18:02:13
>>720
つけないと動かない
725デフォルトの名無しさん:04/12/05 18:03:04
>>721-723
auto の話は、>>703 が示したページのすぐ下に載ってるんだから釣りだろ。
いちいちかまうなよ。
726デフォルトの名無しさん:04/12/05 18:03:10
>>720
B の名残り
単項 + もそうだけど
まず使わないけど
なけりゃないで言語として美しくない
727デフォルトの名無しさん:04/12/05 18:32:38
逆だろ?
単項の「+」がCに追加されたのはかなりあとだ (C89のころ)
728デフォルトの名無しさん:04/12/05 18:40:07
>>727
そう言ったつもりはなかった
「もそう」は後続の形容にかけたつもりだったが
確かにワンパス的にパースすると
そのように解釈されやすい構文になっていた
729デフォルトの名無しさん:04/12/05 18:44:54
われもこう
730デフォルトの名無しさん:04/12/05 18:45:21
どっち道情報量0の駄レスだけどな
731デフォルトの名無しさん:04/12/05 18:45:39
> そのように解釈されやすい構文になっていた

いいわけになってない
732デフォルトの名無しさん:04/12/05 18:46:09
2パスで読んでも3パスにしても意味かわらんぞ。ぼけ
733デフォルトの名無しさん:04/12/05 18:49:58
顔パスでオーケーだ。
734デフォルトの名無しさん:04/12/05 18:51:05
上げ足取りして楽しんでるところ悪いが、10種類のコンパイラはまだかね?
735デフォルトの名無しさん:04/12/05 18:51:51
下げ足取りしてやる
736デフォルトの名無しさん:04/12/05 18:54:14
>>734
ぐぐったら出てくる
737デフォルトの名無しさん:04/12/05 19:02:09
>>736
しらね-なら、だまってろ白痴
738デフォルトの名無しさん:04/12/05 19:19:09
>>737
同意
739デフォルトの名無しさん:04/12/05 20:04:31
一人芝居を見ている気分だ
740デフォルトの名無しさん:04/12/05 20:09:39
>>739
ばれた?
741デフォルトの名無しさん:04/12/05 20:17:46
742デフォルトの名無しさん:04/12/05 22:51:34
10種類まだ〜?無いならないと言え。粘着やめてやるから。
もっとも普通のコンパイラですら10種類もあげられていないがな
743デフォルトの名無しさん:04/12/05 22:54:06
>>742
10種類もありませんでした。嘘つきました。ごめんなさい。
744デフォルトの名無しさん:04/12/05 23:15:29
stdbool.h 使えるのはほんのわずかのコンパイラでした。
もうVC厨とか言うのやめます。ごめんなさい。
745デフォルトの名無しさん:04/12/06 01:45:23
C言語には、数値を16進数文字に変換する関数はないのでしょうか?
746デフォルトの名無しさん:04/12/06 01:50:24
sprintf
747デフォルトの名無しさん:04/12/06 02:53:59
748デフォルトの名無しさん:04/12/06 02:57:03
743、744は742が自分で言ってるのが明白
749デフォルトの名無しさん:04/12/06 02:57:46
>>745
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/printf.3.html
> 符号なし16進数 (x と X) に変換する。


int i=255;
printf("%x\n",i);
750デフォルトの名無しさん:04/12/06 02:59:20
>>745

一桁ならこれで

char *hex = "0123456789abcdef";

printf("%c", hex[a]);
751デフォルトの名無しさん:04/12/06 03:06:54
>>748
戦わなきゃ。現実と。
752デフォルトの名無しさん:04/12/06 03:17:02
実際10種類どころかもっとあるのでは?
なんで言わないんだろう?
しったかぶりしてるというよりは、ひっぱりすぎなだけな気がする。
753デフォルトの名無しさん:04/12/06 03:19:37
%ょりは%02xにしたいなあ > 0〜255
754デフォルトの名無しさん:04/12/06 03:21:15
粘着VC厨をひっかけてひっぱってるんだろうけど、
安物の釣り針だと、竿や糸より前に壊れちゃうよ。

もっとも重量級じゃなさそうだから平気なのかもsれんが。
755デフォルトの名無しさん:04/12/06 03:22:20
あんたは特徴があり過ぎてつまんない
756デフォルトの名無しさん:04/12/06 03:23:33
intじゃなくてunsigned intを使う利点を教えてください。
757デフォルトの名無しさん:04/12/06 03:24:27
> 文字列の並び替え関数next_permutationって、

そんなものはない > 並び替え
「並べ換え」ならある。
758デフォルトの名無しさん:04/12/06 03:27:37
voidの弟子だろ?
759デフォルトの名無しさん:04/12/06 03:28:38
意外と少ないんじゃない?
Turboとか古いのも入れてやっと10種類くらいかなぁ。
760デフォルトの名無しさん:04/12/06 03:28:39
で、その人の名前ときどき出てくるんですが、
どんな人なんですか?
761デフォルトの名無しさん:04/12/06 03:29:03
Turbo-CはC99なんかちっとも対応してないぞ。
762デフォルトの名無しさん:04/12/06 03:29:36
>>761
は?
763デフォルトの名無しさん:04/12/06 03:30:02
まだ、だれもxxでstdboolは標準で使えるとは言ってないんだが名
764デフォルトの名無しさん:04/12/06 03:30:13
VCと同じで99年より前に寿命が尽きたやつだから当然 > Turbo-CはC99なんかちっとも対応してない
765デフォルトの名無しさん:04/12/06 03:30:42
>>762
過去logすら嫁ね-のお前?
766デフォルトの名無しさん:04/12/06 03:31:42
C99に対応してないとCコンパイラじゃないとでも?
767デフォルトの名無しさん:04/12/06 03:32:02
対応していないコンパイラーだったら10どころか50でも80でもあるだろうが ぼけ

ちゃんとC99に対応している(少なくともstdbool.hのある)もののうち(たぶん20はないはず)、
10個名前言えるかどうか、っていう話だろ?
768デフォルトの名無しさん:04/12/06 03:32:34
>>767
そんな話しらねーよ。
769デフォルトの名無しさん:04/12/06 03:32:45
>>760
だからオマエは特徴有り過ぎなんだって。背中まで透け透け
770デフォルトの名無しさん:04/12/06 03:33:52
>>767
また知ったかぶりして大風呂敷広げたな。80種類あげてみろや?
771デフォルトの名無しさん:04/12/06 03:40:19
古いコンパイラーあわせて5つも言えないやつらって、
...おまえら厨房すぎー
772デフォルトの名無しさん:04/12/06 03:40:46
> そんな話しらねーよ。

知らないおまえがぼけなだけ
773デフォルトの名無しさん:04/12/06 03:41:23
>>760
Cの本かいてるひとです。
774デフォルトの名無しさん:04/12/06 03:44:09
mainの前についてる人です。
775デフォルトの名無しさん:04/12/06 03:55:22
http://pc5.2ch.net/test/read.cgi/tech/1075398852
こっちでみつけたんだけど、
http://www.sommelier.jp/what/expert.html
このひとほんとにプログラマー?
776デフォルトの名無しさん:04/12/06 04:01:05
寿命が尽きたプログラマー
777デフォルトの名無しさん:04/12/06 04:02:49
いいなー
778デフォルトの名無しさん:04/12/06 04:03:09
本業は何なんだろ
779デフォルトの名無しさん:04/12/06 04:16:53
すみません。
プリプロセッサーの#ifのところで、sizeofって使えるのがふつうなんですか?
手元にあるいくつかのコンパイラーで、使えるやつと使えないやつがあって,

どっちに合わせてかいておいたほうが今後のためかを知りたいのです。
780デフォルトの名無しさん:04/12/06 04:24:18
781デフォルトの名無しさん:04/12/06 04:24:59
>>779
使えないやつがあるのならつかわなきゃいいじゃん?
782デフォルトの名無しさん:04/12/06 07:00:24
0x1234という数値があったときに、メモリー上では
0x34 0x12
という場合と、
0x12 0x34
という場合があるってききました。
それなら一通りの書き方で、メモリーにコピーしたメモリーの中身をintすることは
できないのでしょうか。
783デフォルトの名無しさん:04/12/06 07:10:38
コンピュータのレジスタやメモリの仕組みもだけど
まずは日本語の勉強から。
784デフォルトの名無しさん:04/12/06 07:11:59
>>782
リトルエンディアン、ビッグエンディアンでぐぐれ。
同じエンディアン方式ならそのまま扱える可能性が高い、
しかし異なるエンディアンなら変換する必要がある。
785デフォルトの名無しさん:04/12/06 07:20:20
>>782
ついでに言うとintのビット長も環境依存。
786782:04/12/06 08:28:19
変換ってどうやればいいんですか。
どんなとこでも大丈夫にできますか?
787デフォルトの名無しさん:04/12/06 08:36:33
2バイトのintの順が、たとえばi = 1234; が
04 d2 になるのがビッグエンディアン
d2 04 になるのがリトルエンディアンだというのはわかります。

でも、a = 12345678; の場合、
00 bc 61 4e がビッグエンディアン
4e 61 bc 00 がリトルエンディアンなのでしょうけど、
うちのマシンだと
bc 00 4e 61 になるんです。
これは何エンディアンなのでしょうか?

788デフォルトの名無しさん:04/12/06 08:40:16
>>787
リトルエンディアンとビックエンディアンを調べろ。
789782:04/12/06 08:45:35
783のかた、「にコピー」が抜けてました。これでいいですか。
よろしければ内容にもおへんじください。
790デフォルトの名無しさん:04/12/06 08:56:38
> リトルエンディアンとビックエンディアンを調べろ。

調べたけど乗ってないから聞いてるんです。

つまりあなたはわからないのですね?
791782:04/12/06 09:00:02
なんだかえらそうですよ。分からないで聞いてるのでもっと謙虚にしましょうよ
792デフォルトの名無しさん:04/12/06 09:08:21
>>787
>>791
まぁ仲良くやりましょうよ
793デフォルトの名無しさん:04/12/06 09:20:53
791と792は実は788 (ってみりゃわかるか)
794デフォルトの名無しさん:04/12/06 09:27:34
>>787
ちゃんと1バイトずつ見ているか? 2バイトずつ見てないよな?

もしかして、odのディフォルト出力そのまま見てるって落ち?
#或いは同様のツールで。
795デフォルトの名無しさん:04/12/06 09:51:34
釣りだろ。787はスルー推奨
796デフォルトの名無しさん:04/12/06 09:57:50
797デフォルトの名無しさん:04/12/06 12:12:59
>>790
> 調べたけど乗ってないから聞いてるんです。

×乗ってない
○載ってない

検索結果が正しいかどうかは別として、
・調べて「あった」ことを証明するのは簡単です。
・調べて「無かった」ことを証明するためには検索で出たページを全て見る必要があります。

キーワード「ビッグエンディアン リトルエンディアン」で日本語のページを検索した結果 4,730件ヒットしました。
http://www.google.co.jp/search?hl=ja&q=%E3%83%93%E3%83%83%E3%82%B0%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3+%E3%83%AA%E3%83%88%E3%83%AB%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
そして検索エンジンは google 一つではありません。

本当に「無かった」のですか?

787 :デフォルトの名無しさん :04/12/06 08:36:33
790 :デフォルトの名無しさん :04/12/06 08:56:38

文脈から >>787 = >>790 であると推定して
もし本当に無かったことを確認できたとしたら、
あなたは約20分でそれを成し遂げたことになります。

個人的には信じがたいのですが、
そういう確認方法があるのならここで公開してみては如何でしょうか?
そうすれば >>787 の問いに答えてくれる人が表れる可能性は大きくなるでしょう。
798デフォルトの名無しさん:04/12/06 12:16:56
エンディアンごとき自学できない香具師がコンパイラをいじくろうとはな
799745:04/12/06 12:32:14
>>746-750
ありがとうございました。画面に表示するのではなく文字列変数に代入したいので、
sprintfで出来ました。
800デフォルトの名無しさん:04/12/06 12:35:25
>>796
ム板の約1/50はCスレで出来ています
801デフォルトの名無しさん:04/12/06 13:23:18
htonl, ntohl
802デフォルトの名無しさん:04/12/06 13:56:25
変数A(unsigned short型)に格納された値(400)を
変数B(BYTE型)に格納したいのですがどうすればいいのでしょうか?
803デフォルトの名無しさん:04/12/06 13:58:45
BYTEは0..255しか格納できないぞ。
はみ出た分をどうしたいんだ。
804デフォルトの名無しさん:04/12/06 13:58:45
まずは1byteが10bit以上な環境を探してきてください
805デフォルトの名無しさん:04/12/06 14:10:19
「C言語なら俺俺に聞け! Part 87」に書き込んでしまった。。。
うかつだった・・・

マルチになってしまいますが、気を取り直して・・・


コーディングスタイルの話になると思いますが、
識別名にマルチバイトを使う事について
皆さんだったらどう思われますか?
例えば、

ある関数に定数を与えて処理したい場合、
move_command_set( COMMAND_右に動く, MOVE_STEP_1 )
move_command_set( COMMAND_左に動く, MOVE_STEP_1 )
とか・・・

さすがに、識別名すべてをマルチバイトにするつもりは無いんだけど、
日本人として生まれたからには、こういう書き方を「アリ」に
していく流れって作れないかなーって思っているのですが・・・
昔だったら、こういうことかなり抵抗があったんだけど、
もう今となってはいいかなぁーって感じになってます。
806デフォルトの名無しさん:04/12/06 14:13:15
自分で流行らないし自分が関わるソースでもやって欲しくないけど
公開しないなら好きにしとけ。それからマナー・スタイルはスレ違い。
807デフォルトの名無しさん:04/12/06 14:14:53


「C言語なら俺俺に聞け! Part 87」についたレスは無視ですか?


そうですか


808デフォルトの名無しさん:04/12/06 14:16:38
>>805
好きじゃないがローマ字を使われるよりはまだましだな。
809デフォルトの名無しさん:04/12/06 14:20:16
電脳化したいんですがC言語で書けるでしょうか?
810デフォルトの名無しさん:04/12/06 14:20:40
>>805

c99 では、そういう書き方アリだけどな。

英語を読み書きできない高卒PGには、
便利な気がするな

まぁ、あれだ、そういう機能を付けた外人は、
要求されてマルチバイトを使えるように
したんだろうから、使う分には問題ないん
じゃないか
811デフォルトの名無しさん:04/12/06 14:28:00
>>805
ひまわりでも使って路
812デフォルトの名無しさん:04/12/06 14:30:53
文章を分かち書きしない日本語の利点が現れると言えなくもないな。
move on to leftをmoveOnToLeftと書くと違和感があるが、『左に動く』と書いても違和感は無いわけで。
813デフォルトの名無しさん:04/12/06 14:39:14
まだMoveToLeftとかMoveLeftとかの方が...
814デフォルトの名無しさん:04/12/06 14:41:21
>>805
ロシア人がその方針で書いたとして、
渡されたソースの識別子がロシア語だったらつらいな。
コメントや文字列はある程度仕方ないけど
識別子くらいは英語で書く。
815デフォルトの名無しさん:04/12/06 14:42:14
DB3だったかそのクローンだったかの操作言語の著者で、
DBのフィールド名や変数名に漢字を使うことを否定してた人がいたなぁ。
そのソフトのマニュアルに書かれたサンプルは全て漢字名だったのだが。

その人の否定した理由として、誤変換に気を取られるのはプログラミングの過程においては
非能率的だというものだった気がする。

私はローマ字のほうがましだと思うが、ローマ字はローマ字で、綴り方が複数あるからそれも問題。
816782:04/12/06 14:53:04
801のかた、htonlやntohlはネットワーク用に並べ替えるだけで
順番はきにしちゃいけないっていわれたんですけどつかっていいんですか。
あとintやlongでも使えますか。ひきすうがなんか違う、、、
817デフォルトの名無しさん:04/12/06 14:53:49
805 です。

>>806
 スレ違いすみません・・・
 これ最後に消えます。

>>810
>>812
 英語知らないやつだと、結構無理やりなんですよ・・・

>>808
>>815
 チームでプログラム組んでいると、
 関数の機能に該当する単語を辞書で無理やり調べました的な識別名を
 使ってくるやつもいれば、ローマ字でヘボン式だかなんだか
 わからない識別名を使うやつもいて、ムキーって感じなんですよ。
 だから、この際マルチバイト使おう!なんて考えたのですが・・・

818デフォルトの名無しさん:04/12/06 15:00:40


「C言語なら俺俺に聞け! Part 87」についたレスは無視ですか?


そうですか


819デフォルトの名無しさん:04/12/06 15:01:22
>>813
大文字を混ぜると何故か格調高く書きたくなるんだよ
820デフォルトの名無しさん:04/12/06 15:02:35
>>811

わぁ、ごめんなさい。
煽りだと思った。

「ひまわり」知らなかった。
すげー、これすげーよ。
ぴゅー太みたい

でも、仕事には使えないやぁー
821デフォルトの名無しさん:04/12/06 15:04:56
生越なんかは仕事でRuby使ってるらしいし、ひまわりで仕事してもいいんじゃないかなぁ
822デフォルトの名無しさん:04/12/06 15:15:29
>>817
マルチバイトを使ったところで、そういういい加減な香具師は相変わらずいい加減なキーワードをつけるよ。
例えば、関数名で「マウスボタン欧化処理」とかね。
823デフォルトの名無しさん:04/12/06 15:18:58
>>822
そいつはもう消えてる。しかもマルチで、その上スレ違い。

> スレ違いすみません・・・
> これ最後に消えます。
824デフォルトの名無しさん:04/12/06 15:40:29
スレ違いでもないような気がするが、
一応C言語のことだしな。

825デフォルトの名無しさん:04/12/06 20:37:02
warning: implicit declaration of function `E1'

E1ってのは関数名なんですが、↑はどういったイミの警告なのでしょうか?
826デフォルトの名無しさん:04/12/06 20:41:56
>>825
警告:機能「E1」の暗黙の宣言
827デフォルトの名無しさん:04/12/06 20:47:36
さぁ、この変な日本語から意味を推定してみよう。
答えは来週だよ!みんな見てね!
828デフォルトの名無しさん:04/12/06 21:40:02
implicitのcit部分のみ訳

♀を殴ると
cit
頭が落ちたよ・・・
829デフォルトの名無しさん:04/12/06 21:52:36
>>825
そんな関数名はやめた方がいい。
830デフォルトの名無しさん:04/12/06 22:19:44
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
831デフォルトの名無しさん:04/12/06 22:20:33
>>830
ここはそんなスレじゃない
去れ
832デフォルトの名無しさん:04/12/06 22:24:00
>>830
マルチ氏ね
833デフォルトの名無しさん:04/12/06 22:55:59
>>830

#include <stdio.h>

int main(void)
{
printf("ジャンジャンバリバリ〜♪");
printf("チョリリリーン♪");
printf("わぁ。大当たりだ!");
return 0;
}
834デフォルトの名無しさん:04/12/07 09:54:36
> 英語の文章に出現する単語の中で、文字数が最も多い単語を出力して終了するプログラムを作成せよ。
> 入力データには英文字、スペースのみが含まれているものとし、単語とはスペースで区英語の文章に出現する単語の中で、文字数が最も多い単語を出力して終了するプログラムを作成せよ。

課題出すやつのセンスが悪いな。通常は、
cat file1 file2 | tr -cs A-Za-z '\012' | sort | uniq -c | awk '{print length($2), $0}' | sort -nr
とやるだけで出てくるんだから、そんなものをCでやらせるんんじゃね-よ! ぼけ
835デフォルトの名無しさん:04/12/07 09:55:44

もういっちょ「| head -1」も追加して欲しかったな
836デフォルトの名無しさん:04/12/07 09:59:11
いや、おれなら
cat file1 file2 | tr -cs A-Za-z '\012' | sort | uniq -c | awk '{print length($2), $0}' | sort -nr | head -1 | awk '{print $3}'
だな。
837デフォルトの名無しさん:04/12/07 09:59:50
VC厨には無縁
838デフォルトの名無しさん:04/12/07 10:01:16
途中の sort | uniq はいらない気がする...
あと、最大長のものは 1つとは限らないから head -1 は危険。
839デフォルトの名無しさん:04/12/07 10:03:30
> 途中の sort | uniq はいらない気がする...

同じものをまとめたかったんだろ?
840デフォルトの名無しさん:04/12/07 10:54:58
> 2. 構造体利用を用いたプログラムをつくって下さい。

main()
{
typedef struct {
char kozo[256];
} KOZO;
KOZO i;

strlcpy(i.kozo, "こーぞー"),;
printf("これはなんですか?\n");
printf("%sたい。\n", i.kozo);
}
841デフォルトの名無しさん:04/12/07 10:55:50
「じゃあこれは?」
「文字列ですたい。」
842デフォルトの名無しさん:04/12/07 10:57:51
strlcpy
843デフォルトの名無しさん:04/12/07 10:57:55
> c99 では、そういう書き方アリだけどな。

ねーよ
いいかげんなウソつくな。
844デフォルトの名無しさん:04/12/07 10:58:49
> strlcpy

ふつうstrlcpyだね。(840のは引数たりんぞ!)
strncpy使うやつはVC厨だ。
845デフォルトの名無しさん:04/12/07 11:00:46
846デフォルトの名無しさん:04/12/07 11:01:40
やーいstrlcpyもしらなかった842 !
847デフォルトの名無しさん:04/12/07 11:02:06
いまどきstrlcpyは常識やね。
848デフォルトの名無しさん:04/12/07 11:02:51
知っているが。
http://pc5.2ch.net/test/read.cgi/tech/1095843584/を読め。strlcpyについての喧嘩があるから。
849デフォルトの名無しさん:04/12/07 11:12:01
なんだいま検索したのかよ。
850デフォルトの名無しさん:04/12/07 11:15:29
strlcpyの必要性が想像できないなんて、
VC厨が多いってのはほんとなんだな。ここ
851デフォルトの名無しさん:04/12/07 11:39:08
>>834
おれならエクセルにはりつけて文字数出すけどな。
852デフォルトの名無しさん:04/12/07 12:33:16
>>850
strlcpyの必要性ってなぁに?
853デフォルトの名無しさん:04/12/07 12:42:26
C99で、型のサイズを指定した変数を定義することができるようになったと
思うんですが、あれってどのヘッダファイルに書かれていましたっけ?
C#でいう

Int32 a; (aは符号付き32ビット)
UInt32 b; (bは符号なし32ビット)

みたいなことができたはず、ですが・・・
854デフォルトの名無しさん:04/12/07 12:44:49
#include <stdio.h>

main()
{
int i=0,tou;

printf("購入する馬の頭数を入れてください");
scanf("%d",&tou);
printf("%d頭連れてきました。\n"); /*←この部分*/

for(i=0; i<tou; i++){
printf("∈・^ミ\n",i);
}
}

これで、「%d頭連れてきました」ってのが4247748頭になるんだけど、
なんでかなぁ(´・ω・`)
855デフォルトの名無しさん:04/12/07 12:46:06
>>853
stdint.h
int32_tとかuint32_tとか
856デフォルトの名無しさん:04/12/07 12:47:07
>>854
ネタ?

>4247748頭になるんだけど、なんでかなぁ

たまたま。
時と場合によって結果が変わるコードだな。
857デフォルトの名無しさん:04/12/07 12:47:52
>851
ダサッ
858854:04/12/07 12:53:40
>>856
ネタじゃないんだけど・・
scanfのときにどんな数字入れても、4247748頭ってなるんだけど
859デフォルトの名無しさん:04/12/07 12:58:21
>>858
- printf("%d頭連れてきました。\n");
+ printf("%d頭連れてきました。\n", tou);
860854:04/12/07 13:01:55
>>859
ありがとうございました。きちんと思った通りに動きました。
そして、レベルの低い質問ですいませんでした。( ;∀;)
861長文ごめん:04/12/07 14:00:01
1:#include <stdio.h>
2:
3:int fact(int n)
4:{
5:int n1;
6:int fc;
7:
8:printf(">n %p %d\n", &n, n);
9:printf(">n1 %p %d\n", &n1, n1);
10:printf(">fc %p %d\n", &fc, fc);
11:printf("\n");
12:
13:if(n == 1)
14:return 1;
15:n1 = fact(n - 1);
16:fc = n * n1;
17:
18:printf("<n %p %d\n", &n, n);
19:printf("<n1 %p %d\n", &n1, n1);
20:printf("<fc %p %d\n", &fc, fc);
21:printf("\n");
22:
23:return fc;
24:}
25:main()
26:{
27:printf("fact(4) = %d\n", fact(4));
28:}
本にのってるプログラムなんですが、return1以降の動きがわかないんですよ、
return1の後は16行目以降が繰り返されているんですが、なんでなんでしょ?
本はそこらへんの解説は載ってないんで、誰か解説してください_| ̄|○
862デフォルトの名無しさん:04/12/07 14:03:57
fopen()で開くファイル名を実行時に編集しているので
グローバル変数(char*)に格納しています。

でもこのままじゃfopenに渡せませんよね?
fopen(const char*,...)だから。

こういう場合どうやって書けばいいのでしょうか?
アドバイスよろしくお願いします。
863デフォルトの名無しさん:04/12/07 14:09:05
>>861
・行番号は不要→コピペするときに邪魔。
・インデントはつけよう→主に括弧の対応付けなどが把握し難い。
・質問の意図が不明。
864デフォルトの名無しさん:04/12/07 14:10:44
>>862
char* str;
fopen( (const char*)str, …);
865デフォルトの名無しさん:04/12/07 14:10:55
>>862
やってみることもしないで質問するな。
866デフォルトの名無しさん:04/12/07 14:14:25
>>864はネタにネタレスするぼけ
867862:04/12/07 14:26:31
>>866 ネタじゃなくてまじめです…。
試行錯誤していろいろコード書いてコンパイルを繰り返しています。

#include <stdio.h>
#include <stdlib.h>
char *szFileName[MAX_PATH+1];

void putText(char *data)
{
  FILE *fp;
  fp = fopen(szFileName, "a"); ←エラー

  if ( !fp ){
   ・・・・
}

main()でグローバル変数szFileNameへファイル名をセットしています。
main()からputTextをコールします。

短縮しましたがこんなところです・・・どなたか教えてください。
よろしくお願いします。
868デフォルトの名無しさん:04/12/07 14:29:09
char *szFileName[MAX_PATH+1];
869デフォルトの名無しさん:04/12/07 14:32:25
>>867
szの前にあるものはなんだ?
870デフォルトの名無しさん:04/12/07 14:37:56
>>867
- char *szFileName[MAX_PATH+1];
+ char szFileName[MAX_PATH+1];

>>866
こいつぼけ
871デフォルトの名無しさん:04/12/07 14:56:58
>>863
指摘サンキューです

return 1が動いたらmainのprintfに1を返してプログラムは終了すると思ってるんですが、
実際にはプログラムは終わらずにfcを返して終了するんですよ
そこんとこがわかんないんで教えて欲しいなーと思ってるんです
わかりにくくてすいません
872デフォルトの名無しさん:04/12/07 15:15:57
>>871
15行目でfactを呼び出してるから。
具体的に処理の順番を書くと

1:mainでfuct(4)呼出
2:fact(4)の15行目でfact(3)呼出
3:fact(3)の15行目でfact(2)呼出
4:fact(2)の15行目でfact(1)呼出
5:fact(1)の14行目でreturn 1;になりfact(2)の16行目以降の処理へ(fcは2*1で2)
6:戻値2でfact(2)が終わり、fact(3)の16行目以降の処理へ(fcは2*3で6)
7:戻値6でfact(3)が終わり、fact(4)の16行目以降の処理へ(fcは6*4で24)
8:戻値24でfact(4)が終わるのでprintfで"fact(4) = 24"が出力される

分かりづらいなら15行目で関数呼び出しをやめて展開してみると吉
873デフォルトの名無しさん:04/12/07 15:25:13
VCならF10でも押してろ
874デフォルトの名無しさん:04/12/07 15:30:21
>>872
丁寧に手順まで書いてもらってありがとうございます

ピンとこないんで聞いておきたいんですが、
「展開」ってのは動かせってことですよね?
875デフォルトの名無しさん:04/12/07 16:41:20
>>874
再帰でググレ
876862:04/12/07 17:22:09
>>868-870
ありがとうございました・・。
無事できました。もっと本を読んで勉強してきます・・。
877デフォルトの名無しさん:04/12/07 18:30:07
>>876
そうだな出直してきた方がいいな。
878デフォルトの名無しさん:04/12/08 01:05:51
あたまつれてきました!
879デフォルトの名無しさん:04/12/08 09:25:42
> return 1が動いたら

returnが「動く」わけではない。
880デフォルトの名無しさん:04/12/08 09:31:33
こいつぼけ。kf7ち76き98;p−0p:おいf6ういdc6う7で6qw346えゆjyhgきjぉい;。vjkmtdcひゃ4s7うm6おl89
881デフォルトの名無しさん:04/12/08 11:23:14
質問ですunsorted list(ソートされないリスト)で
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃ ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??

また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
882デフォルトの名無しさん:04/12/08 11:30:21
どんなソートだか分からないし
知障だとこんな問題も解けないのか?
しかもスレ違いだし
頭悪いにも程がある
883デフォルトの名無しさん:04/12/08 12:25:02
>>881
リストってリスト構造の事か?75を挿入する時だって先頭に挿入すれば
10の前に75が入るぞ。

そこら辺を詳しく説明しろ。問題があやふやだと解答も出せん。
884デフォルトの名無しさん:04/12/08 12:30:13
>>881
お前がどう実装するのか次第だろ。
885デフォルトの名無しさん:04/12/08 13:40:35
要するに答えられないわけですね。
俺に聞けなんてスレだからマシかと思いましたが、
カキコした自分が馬鹿でした。
頼りにならない人しかいないなんて知らなかった。
886デフォルトの名無しさん:04/12/08 14:07:41
>>885
二度と来るな。
887デフォルトの名無しさん:04/12/08 14:18:35
>>881
マジレスするとスレ違い。宿題は宿題スレで。
888デフォルトの名無しさん:04/12/08 18:54:54
>>881
┏━┳━┳━┳━┳━┳━┓
┃10┃ ┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
889デフォルトの名無しさん:04/12/08 19:47:02
すげー
890デフォルトの名無しさん:04/12/08 19:55:59
>>888
お前は真の天才だな!
891デフォルトの名無しさん:04/12/08 22:49:41
>>885
> 自分が馬鹿でした
ここだけ読んで激しく同意した
892デフォルトの名無しさん:04/12/08 23:03:56
>>881

あんたが>>885と同一人物であるならば
最もふさわしいスレはここだ↓
http://pc5.2ch.net/test/read.cgi/tech/1101931660/

技術レベル以前に母国語で質問文が組めない重度の知的障害が見られる
893デフォルトの名無しさん:04/12/09 00:41:07
881は沢山返事してもらって幸せな奴だな
894デフォルトの名無しさん:04/12/09 01:41:07
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃75┃10┃53┃24┃35┃ ┃
┗━┻━┻━┻━┻━┻━┛
となる
あとは >>888
895デフォルトの名無しさん:04/12/09 09:55:06
int型の数値を16進にしてバイナリデータとして
BYTE型変数に格納したいです。
  BYTE buf[512];
  buf[0] = 0xA3;
  buf[1] = 0xF2;
↑と書けばBYTE変数にバイナリデータを格納できると分かりました。

次にint型の数値を16進に変換してBYTE型変数に入れてみようと思い
詳しい方のホームページを見てやってみましたがうまくいきません。
どこが悪いか教えていただけませんか?
最終的にはint sizeに格納された450を
バイナリデータ1C2に変換してBYTE buf[0]に格納したいです。

 int size;
size = 450;
 BYTE buf[512];

 // size(450)を16進にしてszsize(1C2)に格納
 char szsize[5];
 wsprintf(szsize," %d ",size); // int → char
 const char *szbuf1;
 char *szbuf2 ;
 szBufSize1 = szsize;
 long lsize = strtol(szbuf1, &szbuf2, 0); // 10進→16進
 itoa(lsize, szsize, 0x10); // ←szsizeにはちゃんと"1CA"と入ります

 // BYTE型変数に格納する
 buf[0] = strtol(szsize, NULL, 16); // ←bufに16進数が入りません・・・
896デフォルトの名無しさん:04/12/09 10:24:41
/* buf[0]-buf[(sizeof(int)-1]にsizeの値を分解して格納(エンディアンに注意) */
memcpy((char *) & size, buf, sizeof(int));
/* bufにsizeの値を16進文字列として格納 */
sprintf(buf, "%0*x", sizeof(int) * 2, size);
897デフォルトの名無しさん:04/12/09 11:35:46
>>896
memcpy(buf, (char *) & size, sizeof(int)-1);
sprintf(buf, "%0*x", sizeof(int) * 2, size);

早速ありがとうございます。
教えて頂いたようにやってみたら16進文字列をスムーズに取得できました。

しかし、BYTE型の変数にバイナリデータを格納できません・・。
charの16進文字列をバイナリデータに変換したいです・・・。
せっかく教えて頂いたのに説明が下手ですみません。


●結果は、こんな感じでバイナリデータを格納したいです。
  BYTE buf[512];
  buf[0] = 0x01;
  buf[1] = 0xCA;

×文字列データが格納されると失敗です。
  BYTE buf[512];
  buf[0] = '0';
  buf[1] = '1';
  buf[2] = 'C';
  buf[3] = 'A';
898デフォルトの名無しさん:04/12/09 11:47:11
>>897
キミがしたいのは、単に↓のようなことかい?
buf[0] = size >> 8;
buf[1] = size & 0xff;
899デフォルトの名無しさん:04/12/09 14:35:30
>>898
はい、教えてもらったように演算したら簡単にできました。
ありがとうございました。

それと追加質問で申し訳ないのですが
long型をBYTE配列にコピーする方法ってないのでしょうか?
_ltoaで文字列へ変換することはできました。
900デフォルトの名無しさん:04/12/09 14:42:04
>>899
unionでも調べてくれ。
901デフォルトの名無しさん:04/12/09 15:01:05
>>899
>>898 と同じ方法は試した?
902デフォルトの名無しさん:04/12/09 15:39:22
>>901
はい、試してうまくいきました。
コードは>>898のままでいけました。

>>900
unionを調べて使ってみたところ、
BYTE配列にあっさりlongデータが入りました。
以下のような感じです。

 union u_tag{
   long ss;
   BYTE buf[4];
 }uval;
 union u_tag *ptr;

 ptr = &uval;
 uval.ss = 500;
 // この時点でssに格納した500が
 // 同じ共用体のBYTE配列bufにもコピーされている。
903デフォルトの名無しさん:04/12/09 16:55:39
質問です。
キーボードの方向キーの入力を調べたいのですが
専用の関数等あるのでしょうか?
Win32の GetKeyState() みたいな関数はありますか?

また、現在 system("cls")で画面を更新するようにしているのですが
更新を連続的にしてしまうと、画面がちらついてしまいます。
これの回避策などもあればご教授ください。
904デフォルトの名無しさん:04/12/09 17:02:07
additional storage 使わないでスワップするときって、int型ならXOR使ってっていうのは、
分かったんだけど、doubleとか char の場合ってどうするか分かりますか?
905デフォルトの名無しさん:04/12/09 17:13:37
>>903
上・・・ありません。
下・・・ありません。
906デフォルトの名無しさん:04/12/09 17:15:00
>>903
よく分からないけど
void clearScreen()
{
    const HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;

    GetConsoleScreenBufferInfo(out, &csbi);

    const COORD coset = { 0 };
    DWORD written;
    FillConsoleOutputCharacter(out, ' ', csbi.dwSize.X * csbi.dwSize.Y, coset, &written);

    const WORD attribute = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
    SetConsoleTextAttribute(out, attribute);
    FillConsoleOutputAttribute(out, attribute, csbi.dwSize.X * csbi.dwSize.Y, coset, &written);

    SetConsoleCursorPosition(out, coset);
}
こういうのもあるぞ
907デフォルトの名無しさん:04/12/09 17:23:13
>>902
エンディアンには気を付けてね
908903:04/12/09 17:27:29
>>905
そうですか。。
やはり、OSが提供するAPIを使うしかなさそうですね。

>>906
コードを書いて頂き、ありがとうございます。
しかし、そのコードでクリアしても、ちらついてしまうようです。。

やはり、完全にちらつきを取るには
ビデオメモリを制御するしかないでしょうね。。
とりあえず、これは諦めます(笑)
909デフォルトの名無しさん:04/12/09 17:52:58
キーボードで数値を入力したとき特定範囲以外の数字が入力されたとき
エラーメッセージを出すようにしたいのですがどうすれば良いでしょう
910デフォルトの名無しさん:04/12/09 18:24:34
>>909
if文で判断汁。
911デフォルトの名無しさん:04/12/09 18:30:25
>>908
#define MIN 0
#define MAX 10
int n;
scanf("%d", &n);
if(n < MIN || n > MAX) fprintf(stderr, "error!\n");
912911:04/12/09 18:31:35
>>908
>>909
913909:04/12/09 18:40:32
ありがとう
914デフォルトの名無しさん:04/12/09 19:53:15
EBCDIC←→ASCII
コード変換サンプル
掲載サイト
目にも止まらぬ速さで教えて下さい
915デフォルトの名無しさん:04/12/09 20:24:38
EBCDIC ASCII 変換 ソース の検索結果 約 1,210 件中 1 - 10 件目 (0.81 秒)

0.81秒では不満か?
916デフォルトの名無しさん:04/12/09 20:26:15
うちは0.37秒だった。
917デフォルトの名無しさん:04/12/09 20:28:18
Akamaiパワーだな
918デフォルトの名無しさん:04/12/09 20:38:48
>>915-916
満足です
919デフォルトの名無しさん:04/12/10 01:43:13
>>902

>907 も書いてるが

long n;
BYTE buf[4]; // longは4バイトであるとする
buf[0]=*((BYTE *)&n);
buf[1]=*((BYTE *)&n +1);
buf[2]=*((BYTE *)&n +2);
buf[3]=*((BYTE *)&n +3);

とかでよい? エンディアンってわかる?
920デフォルトの名無しさん:04/12/10 02:11:06
main関数の戻り値って必要なんですか?
921デフォルトの名無しさん:04/12/10 02:12:31
はい。
922デフォルトの名無しさん:04/12/10 04:07:13
いいえ。
923デフォルトの名無しさん:04/12/10 04:11:22
>>922
その理由を教えてください
924デフォルトの名無しさん:04/12/10 04:20:29
はい。
925デフォルトの名無しさん:04/12/10 05:53:14
ぬる
926デフォルトの名無しさん:04/12/10 06:21:59
>>924
すみませんが、真面目に教えてください
理由は何ですか?
927デフォルトの名無しさん:04/12/10 06:35:09
int main←必要
void main←不要
928デフォルトの名無しさん:04/12/10 06:40:05
>>927
void mainなんて物の事なんて聞いてないんですが…
あなたは>922なんですか?別の人なら邪魔をしないでいただきたいです
929デフォルトの名無しさん:04/12/10 07:26:37
>>928←不要
930デフォルトの名無しさん:04/12/10 08:37:54
    ⊂_ヽ、
      .\\  /⌒\
         \ ( 冫、)ウンチになぁれ
          > ` ⌒ヽ
         /    へ \
        /    /   \\
        レ  ノ     ヽ_つ
        /  /         ・*.・:
       /  /|          :。 *.・
       ( ( 、           ★。:’*
       |  |、 \        。・.*・; ・
       | / \ ⌒l       ;* ・。;*★ 人・
       | |   ) /        ・ ★・ (_ );; * 。・
      ノ  )   し'          ・ * (__) * ・。・
     (_/            。*.;; ・ (>>928)    ★.* ’★
931デフォルトの名無しさん:04/12/10 08:51:36
intのサイズって環境依存なんですよね?
実際にサイズが決まるのは、実行時なんですか?
それともコンパイル時なんですか?
932デフォルトの名無しさん:04/12/10 09:00:48
コンパイル時。
それと環境というより処理系による。
933902:04/12/10 09:10:05
>>907>>919
はい。上位/下位のことですよね?
Intel系使っていますので私の環境ではリトルエンディアンです。

long n;
n=416;
BYTE buf[4];
buf[0]=*((BYTE *)&n);
buf[1]=*((BYTE *)&n +1);
buf[2]=*((BYTE *)&n +2);
buf[3]=*((BYTE *)&n +3);

ビッグエンディアンではbuf[2][3]に160と1がはいって
リトルエンディアンではbuf[0][1]に160と1がはいるってことですよね。

エンディアンは知っていましたがBYTE配列へのlongのキャスト方法
分かっていませんでした。教えてくださってありがとうございました。
どうやってやるのかWebを見たのですが読んでも理解できなかったので
とても助かりました。本当に感謝です。
934931:04/12/10 09:11:31
>>932
あ〜そうですか、よかった。
intが32bit環境で作成したバイナリを、64bit環境で動作させても
32bitで処理されるんですよね?
935デフォルトの名無しさん:04/12/10 09:29:08
>>933
union {
long l;
unsigned char c[sizeof(long)];
} u;
u.l = 416;

long l = 416;
unsigned char c[sizeof(l)];
memcpy(c, (char *) & l, sizeof(l));

>>934
そういうこと。だからintが16ビットのLSI-Cなら仮令64ビット環境でもintでは32767までしかカウントできない。
936デフォルトの名無しさん:04/12/10 10:24:09
宿題スレよりレベル低いな
937デフォルトの名無しさん:04/12/10 10:24:42
1つのプログラムを実行したとき、
そのメモリの使用容量はどう計算ししますか?

938デフォルトの名無しさん:04/12/10 10:31:14
>>937
それは、OSのAPIで取得するしかないのでは?
何の環境か知らんけど、WinNT系のOSの場合だと、それ関係の隠しAPIがあった筈。
939デフォルトの名無しさん:04/12/10 10:47:28
公開されてるよ
940デフォルトの名無しさん:04/12/10 17:28:48
struct test{
string aaa;
};


test *pstr;
pstr->aaa = "ABC";

ポインタについて教えてください。
文字列"ABC"を代入するにはどう書けばいいですか?
941デフォルトの名無しさん:04/12/10 17:50:37
>>940
激しくCじゃない気がするが
test *pstr = new test;
pstr->aaa = "ABC";
942デフォルトの名無しさん:04/12/10 17:57:34
940です。
すみません。ポインタはCじゃなかったんですね。
でもありがとうございました。
943デフォルトの名無しさん:04/12/10 17:59:32
>>942
ポインタがCじゃないんじゃなくて、
stringがC++のstd::stringじゃないかって話かと
944デフォルトの名無しさん:04/12/10 18:02:40
940です。何度も教えてもらってすみません。
945デフォルトの名無しさん:04/12/10 21:53:34
マンデルブロー集合の計算と結果を画像で出力するプログラムを作ってみたいんですが
参考になるサイトとかありましたら教えてください。

考え方としては
計算した回数を2次元配列に入れて
0  0  0 20  0
0  0 20 50 20
0 20 50 50 50
0  0 20 50 20
0  0  0 20  0

こんな感じにして回数に応じて色をつけるようにすればいいんですよね? 
946デフォルトの名無しさん:04/12/10 21:56:49
947デフォルトの名無しさん:04/12/10 23:14:43
ところで10種類君、最近みかけないね。
また暴れてほしいよ。
948デフォルトの名無しさん:04/12/10 23:21:29
そろそろ来るよ
949デフォルトの名無しさん:04/12/10 23:40:00
で、10種類は?もう1週間は経ったな?
950デフォルトの名無しさん:04/12/11 00:28:01
>>945
こんなの見つけた。
ttp://yokohama.cool.ne.jp/yew/bbs/58.html
----cut here--------cut here--------cut here--------cut here----
For all you C programmers out there, try this:

main(){char *b=" .:-;!/>)|&IH%*#";float i,j,k,r,x,y=-16;while
(puts(""),y++<15)for(x=0;x++<84;putchar(b[(int)k&15]))for(i=k
=r=0;j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);}
----cut here--------cut here--------cut here--------cut here----
951デフォルトの名無しさん:04/12/11 02:02:31
なにそれ。
952デフォルトの名無しさん:04/12/11 11:38:38
かてぃ〜
953デフォルトの名無しさん:04/12/11 11:40:43
>>951
マンデルブロートじゃない?
954デフォルトの名無しさん:04/12/11 12:22:09
C言語なら俺に聞け! Part 97

  ヘ_ヘ�    まず問題を冷静に吟味して
 ミ ・ ・ ミ   Cの話か否かをはっきりさせてから質問しましょう。�
 �(  ° )〜  質問する前には最低限検索を。�

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

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

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

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

C言語なら俺に聞け!�Part�96
http://pc5.2ch.net/test/read.cgi/tech/1101615970/
他の過去ログはここに�
http://nssearch.hp.infoseek.co.jp/clang/
955デフォルトの名無しさん:04/12/11 12:27:44
この Part 96 の 1書いたやつ!
だれだかしらんが、97のときは、ちゃんとエンティティーの160番つかえよ!
俺はスレッドたてられんからやらんけど。
956デフォルトの名無しさん:04/12/11 13:11:56
じゃ、次スレはPart96 Rev.2ということで
957デフォルトの名無しさん:04/12/11 13:24:13
905 :デフォルトの名無しさん :04/12/10 23:47:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
hドライブの○○フォルダのint型の複数データが格納されたバイナリファイルを使って

 |給 与|一万円|五千円|千 円|五百円|百 円|五十円|十 円|五 円|一 円|
--+------+------+------+------+------+------+------+------+------+------|
1|423251| 42| | 3| | 2| 1| | | 1|
2|498225| 49| 1| 3| | 2| | 2| 1| |
3|316482| 31| 1| 1| 1| 4| 1| 3| | 2|
--+------+------+------+------+------+------+------+------+------+------|
 合 計 | 122| 2| 7| 1| 8| 2| 5| 1| 3|

という表を作らなければならないみたいです。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):.NET2002
 [3.3] 言語:C++
[4] 期限:2004年12月11日12:30まで
[5] その他の制限:無し

どなたかよろしくお願いします!!

940 :デフォルトの名無しさん :04/12/11 10:17:53
>>939
そのファイルにはどのようにデータが入っているんだ?


943 :939 :04/12/11 10:30:50
>>942
ファイル学校行かないとないんです…。形だけでもどうにかなりませんか?
958デフォルトの名無しさん:04/12/11 13:28:45
>>957
何?これをやってくれと?
959デフォルトの名無しさん:04/12/11 13:35:07
944 :デフォルトの名無しさん :04/12/11 10:36:09
>>943
いつまでもフザケた事言ってんじゃねえよ


945 :デフォルトの名無しさん :04/12/11 11:44:38
ファイル学校ってどんな学校や
…とか一瞬考えたのは秘密


946 :906 :04/12/11 12:21:30
あわれ905楽しようとしたばっかりに
寝坊した漏れに笑いのネタを提供してくれた。

いや、7時には起きたんだけどね。
>>905のレスを見ても仕様がよく分からんから
二度寝したんだよね。

別に学校の宿題くらい納期過ぎたって問題ないっしょ
自分でガン( ゚д゚)ガレ
960デフォルトの名無しさん:04/12/11 14:48:05
> じゃ、次スレはPart96 Rev.2

いや、どうかんがえても97だ。
961デフォルトの名無しさん:04/12/11 14:58:42
> いや、どうかんがえても97だ。

ということにしたいのですね?
962デフォルトの名無しさん:04/12/11 15:32:34
933 :初心者A :04/12/10 23:02:04
#include<stdio.h>
int main(void){
int a;
a = 1;
printf("number%d\n , 0");
} return 0;

参考書見ずに書いてみました。もしかしたらどこか違うカモ…
まず1歩目です!

940 :デフォルトの名無しさん :04/12/11 13:06:10
>>933
int a;
a = 1;
は int a = 1;
とまとめられる。
のはいいんだがaは何に使ってるんだ?

941 :デフォルトの名無しさん :04/12/11 13:26:35
>printf("number%d\n , 0");
そもそも number%d\n , 0 って表示させてどうするw

942 :デフォルトの名無しさん :04/12/11 13:31:33
>%d
...何が表示されるんだろう

943 :デフォルトの名無しさん :04/12/11 14:31:43
>>941
「returnの場所がおかしい」と、一番の餌で釣れない933て一体。。。
963デフォルトの名無しさん:04/12/11 15:41:14
96のつぎだから97だろ?
964デフォルトの名無しさん:04/12/11 15:42:26
87と95が2本あったから次は99じゃないかな
965デフォルトの名無しさん:04/12/11 15:53:05
つぎはMEとかXPとかにしよう
966デフォルトの名無しさん:04/12/11 16:02:21
Windowsプラグラムでもいいですが、シングルクリックで起動する
.exe を作るにはどうすればいいのでしょう?
967デフォルトの名無しさん:04/12/11 16:04:23
968デフォルトの名無しさん:04/12/11 16:06:22
ダブルクリックで起動する環境で一つだけシングルクリックで起動するexeは
無理なのでしょうか
969デフォルトの名無しさん:04/12/11 16:22:15
>>968
クリックを検出したら起動すればいいのでは?
970デフォルトの名無しさん:04/12/11 16:29:22
次スレ

C言語なら俺に聞け! Part 97
http://pc5.2ch.net/test/read.cgi/tech/1102749965/l50
971デフォルトの名無しさん:04/12/11 16:35:09
その核となる部分はいかに書いたらいいか、ヒントだけでも良いんで
教えて欲しいです・・・
972デフォルトの名無しさん:04/12/11 16:36:26
シェルエクステンション
973デフォルトの名無しさん:04/12/11 16:44:59
ありがとうございました。
とりあえず、現段階の僕では無理だと悟りました。
974デフォルトの名無しさん:04/12/11 16:49:31
EXPLORER.EXEに与えるマウス・メッセージを、ラッパーを被せて
横取りする考え方なんかな。。。サブクラス化か。
975デフォルトの名無しさん:04/12/11 17:15:07
ダブルクリックせずに起動するウィルスでも書きたいんだろ
976デフォルトの名無しさん:04/12/11 22:31:46
教えてください。
入力した文字列を格納した配列のポインタを戻したいんですけど、警告がでました。
警告1:プロトタイプ宣言のない関数'input'の呼び出し。(関数 main)
警告2:コードは効果をもたない。(関数 main)
警告3:問題のあるポインタの変換。(関数 input)
ソース↓
#include <stdio.h>
#define MAX 256

char *input();

void main()
{
*input();
}

char *input()
{
char s[MAX];

printf("COMMAND:");
scanf("%s", s);

return s;
}
977デフォルトの名無しさん:04/12/11 22:33:29
#include <stdio.h>
#define MAX 256

char *input(void);

void main(void)
{
char *p=input();
}

char *input(void)
{
static char s[MAX];

printf("COMMAND:");
scanf("%s", s);

return s;
}
978デフォルトの名無しさん:04/12/11 22:41:20
973 :デフォルトの名無しさん :04/12/11 22:30:58
>>972
つ、釣られないぞ…

974 :デフォルトの名無しさん :04/12/11 22:31:16
>>972
マルチポストするな消えろ

975 :デフォルトの名無しさん :04/12/11 22:31:56
>>972
char *input()はですねー、char*型の返り値を返す、inputという関数の定義なんですよー にゃんにゃん
979デフォルトの名無しさん:04/12/11 22:44:06
977 :973 :04/12/11 22:33:21
>>972
お前が言いたいだろうことを最大限考慮してやった↓。
これがしたいんだろ?

#include <stdio.h>
#define MAX 256

char *input();

void main()
{
  char* p;
  p = input();
  printf("%s\n", p);
}

char *input()
{
  static char s[MAX];

  printf("COMMAND:");
  scanf("%s", s);

  return s;
}


980デフォルトの名無しさん:04/12/11 22:45:44
949 :デフォルトの名無しさん :04/12/11 21:42:51
初心者です。

参考書によって
void main() と書いてあるものと
int main() と書いてあるものの2種類ありますよね。
intにしてreturnしても、どこにも使われてないし
プログラムも問題なく動くので
全部voidでいいと思うんですが。

voidにしてはいけない理由でもあるのでしょうか。
981デフォルトの名無しさん:04/12/11 22:47:06
で、10種類マダー、チンチン
982デフォルトの名無しさん:04/12/11 22:55:47
>>980
結論: ない
983デフォルトの名無しさん:04/12/11 22:58:24
>>980
voidで書いてはいけないとはどこにも書いていない

と言い張る馬鹿はいますけど、int型にしておいて困る理由は何もないですね。
984デフォルトの名無しさん:04/12/11 23:01:29
>>983
LinuxやWindowsなどの上でのアプケーションではそうですねー^^ にゃんにゃん
985別スレ949=954:04/12/11 23:03:38
せめてこのスレまでで終わりにしてね。

いくら週末っていっても
埋め立てように投下したネタに対して
反応がよすぎるから。
986デフォルトの名無しさん:04/12/11 23:05:43
>>980
自分しか使わないならvoidでもかまわんけど
他人も使う場合はちゃんと作った方がいいと思う。
使い道がないなんて勝手に思い込まないように
987デフォルトの名無しさん:04/12/11 23:05:46
>>983
言い張ったら馬鹿とは、どこに書いてあったんだ?
988デフォルトの名無しさん:04/12/11 23:05:48
>>983
で、規格で決まってるというのどうなったんだよ?
989デフォルトの名無しさん:04/12/11 23:06:52
半可通あばれまくりープ
990半可通と呼ばれた男:04/12/11 23:08:47
ちょっとまてオレはあばれてないぞ
991デフォルトの名無しさん:04/12/11 23:08:55
voidで書くなとはどこにも書いていない=voidで書いてもいいじゃない

この理屈がまかりとおるならshortでもdoubleでもstruct hogeでも
好きな型でreturnすればいいじゃない
992デフォルトの名無しさん:04/12/11 23:09:43
>>991
だから、そうだよ
規格票を持っている者の発言には到底見えない
993デフォルトの名無しさん:04/12/11 23:09:50
その通り、処理系が認めていればなんでもいい。
ただし、コードの可搬性はなくなる。
994デフォルトの名無しさん:04/12/11 23:11:27
>>993
可搬性をどの程度持たせるべきかとは、全く別な議論だな
995デフォルトの名無しさん:04/12/11 23:12:22
> ただし、コードの可搬性はなくなる。
平気な感じでいう当たり、馬鹿だな。
996993:04/12/11 23:12:30
>>994
その通り。個人だったら個人で、団体なら団体で勝手に決めればいい。

ISO/IEC 9899:1999
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
997デフォルトの名無しさん:04/12/11 23:12:42
>>980
JIS X3010:2003(いわゆるC99)ではこういう風に書いてある。(ISO/ANSIも同じだろう)

5.1.2.2 ホスト環境
5.1.2.2.1 プログラム開始処理
プログラム開始時に呼ばれる関数はmainとする。
処理系はこの関数に対してプロトタイプを宣言しない。
この関数は次の4種類の方法のいずれかで定義しなければならない。
1. int main(void);
2. int main(int argc, char *argv[]);
3. 上記2つの方法のいずれかと等価なもの。
4. 処理系定義

ちなみに5.1.2.1でフリースタンディング環境の場合プログラム開始時に呼ばれる関数は(戻り値の型・引数含め)処理系定義と書いてある。
998デフォルトの名無しさん:04/12/11 23:13:03
>intにしてreturnしても、どこにも使われてないし

プログラム作る前にパソコンの使い方ぐらい勉強しろよ
999999:04/12/11 23:14:01
999
また1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。