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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001v(^o^i)dNGNG
まず問題を冷静に吟味して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-3あたり

C言語なら俺に聞け! Part 97
http://pc5.2ch.net/test/read.cgi/tech/1102749965/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
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/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

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

C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
0004デフォルトの名無しさんNGNG
(・∀・)ダディ
0005デフォルトの名無しさんNGNG
サイアーク
0006デフォルトの名無しさんNGNG

このスレは
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
のスレを先に使い切ってから使って下さい
0007デフォルトの名無しさんNGNG
>>6
誰お前?えらそーに。
0008デフォルトの名無しさんNGNG
あっちは別系列だから
0009デフォルトの名無しさんNGNG
そそ、あっちはネタスレ。
0010デフォルトの名無しさんNGNG
本系の新スレ移行がうまく行かない時の避難所としても役立ってるのでなかなか良い
0011デフォルトの名無しさんNGNG
こっちも最近、煽りたいだけの莫迦が増殖してて
大差ない肝するけどな。
0012デフォルトの名無しさんNGNG
年末マターリ
0013デフォルトの名無しさんNGNG
>>11
あー、ちょっと複雑なロジックの質問が出ると
途端に沈黙する奴が少なくともひとり居るな。
0014デフォルトの名無しさんNGNG
(・∀・)ノ ハーイ
0015デフォルトの名無しさんNGNG
1から青ばかりだから緑を。
0016デフォルトの名無しさんNGNG
ハァ?
0017デフォルトの名無しさんNGNG
>>13
で、ほとぼりが冷めた頃に戻ってきて煽るのな
0018デフォルトの名無しさんNGNG
週末になると数々の名言を残していく奴なら一人知ってる
0019デフォルトの名無しさんNGNG
迷言の間違いだろ
0020デフォルトの名無しさんNGNG
>>19
またそういう当てもない憎まれ口をたたく。
0021デフォルトの名無しさんNGNG
sscanfの書式指定子に%[^,]というものが来ているソースがあったんですが、
どういう意味なのでしょうか?

具体的には
sscanf(buf, "%d, %[^,], %d", arg1, arg2, arg3);
のような感じになっています。arg1、arg2、arg3の型はそれぞれint, char [], int
です。
またbufの中は0,AAAA BBBB,1のようなものが入っています。
0022デフォルトの名無しさんNGNG
[^,]…','以外の文字が連続している部分
002321NGNG
>>22
ありがとうございます。解決しました。
0024デフォルトの名無しさんNGNG
連続ではないですね。
0025デフォルトの名無しさんNGNG
[^,^;]
0026デフォルトの名無しさんNGNG
printf()の代わりにfprintf(stdout)を使う意味ってありますか?
0027デフォルトの名無しさんNGNG
stderrや他のファイルに出力したくなった場合の変更がほんの少し楽です
002826NGNG
>>27
なるほど・・。
これで思い残すことなくfprintf連発できます。
printよりfprintの方が形が好きなんです。怒られそうですが・・
002926NGNG
↑printfのミスです。   ・・・念のため
0030デフォルトの名無しさんNGNG
質問なんですが、
円の半径(r)と中心点(cx,cy)がわかっていて、
この円上に座標点(x,y)を取り、基準点を(cx,cy+r)としたとき、
この座標点の角度を求めるプログラムを作るには、
どのような式を使えばよいでしょうか?
ちなみにasinとacosを使用したいです。
0031デフォルトの名無しさんNGNG
atan2(x-cx, y-(cy+r));
デイイジャン('A`)
0032デフォルトの名無しさんNGNG
>>30
x座標の向き、y座標の向きはどっち向き?
角度ってどの線とどの線の角度?
003330NGNG
>>31
atan2の2って何ですか?
あと、xとyの間の”,”とは?
003430NGNG
>>32 x,y座標ともに任意で決めるので、向きは−と+両方です。
線は(cx,cy)から(cx,cy+r)の直線と(cx,cy)から(x,y)の直線の角度です。
0035デフォルトの名無しさんNGNG
ググれ。

と書こうとしてatan2をググったら、、、「googleの電卓機能について」だって。
初めて知ったよ。
003630NGNG
>>35 僕もはじめて知りました。
0037デフォルトの名無しさんNGNG
>>30
求める角度をθとする。
(x,y),(cx,cy+r)を結ぶ線分の長さをaと置き、
(x,y),(cx,cy)を結ぶ線分の長さをbと置く。
余弦定理より、
r^2=a^2+b^2-4*a*c*cosθ
<=>
θ=acos((a^2+b^2-r^2)/(4*a*b))
0038デフォルトの名無しさんNGNG
と思ってまた問題を見ると、求めるべき角度が違った。
θ=acos((b^2+r^2-a^2)/(4*b*r))
003930NGNG
>>37
(cx,cy)から(cx,cy+r)じゃなく(x,y),(cx,cy+r)で結ぶんですか?
あと、acosだと270°と90°の区別はどうやってつけたら良いですか?
質問ばっかですいません。
0040デフォルトの名無しさんNGNG
>>39
普通に考えて
90°= π/2
270° = -π/2
が得られるから区別つくんじゃない?
004130NGNG
>>38さんの式で区別ってつきますか?
0042デフォルトの名無しさんNGNG
>>30
asin,acos,atanの値域も考えてくれ。
もうatan2でいいじゃん。
0043デフォルトの名無しさんNGNG
atan2の2は引数を二つ取るの意味だろ
二つ取る意義は引数一個じゃ90度のとき問題がおきるから
004430NGNG
確かに…atan2でやらせていただきます。
みなさんアドバイスありがとうございました。
0045デフォルトの名無しさんNGNG
>>28
27の理由ではfprintfを常用する理由としては弱すぎるぞ。printfに慣れろ。
0046デフォルトの名無しさんNGNG
> 「googleの電卓機能について」だって。初めて知ったよ。

こういうぼけは、近年まで、プッシュホン回線に電卓機能がついていたことを知らない。
0047デフォルトの名無しさんNGNG
ふつうvprintf
0048デフォルトの名無しさんNGNG
>>46
きっとGoogleから株価検索が出来たり
乗り換え案内が出せたり
辞書になったりすることも知らないんだろうな
0049デフォルトの名無しさんNGNG
>プッシュホン回線に電卓機能がついていたことを知らない
まじで?
たかが回線に電卓機能が付いてるの?
0050デフォルトの名無しさんNGNG
しらないのかー
0051デフォルトの名無しさんNGNG
入力の中にある連続したスペースを1つにするプログラムなんですが
自分で見てかなり汚いと思います。もっと綺麗に書くにはどうしたらよいでしょうか。
int main (void)
{
int c;

while ((c = getchar()) != EOF) {
if (c == ' ') {
putchar(c);
while ((c = getchar()) != EOF) {
if (c != ' ') {
putchar(c);
break;
}
}
}

else putchar(c);
}

return 0;
}
よろしくおながいします。
0052デフォルトの名無しさんNGNG
>>51
きにするな
0053デフォルトの名無しさんNGNG
>>51
仕様として毎回getcharしないと駄目?
バッファに入れておくと簡潔にまとまりそうだけど

>>52
動きゃ良い派ですか?
0054デフォルトの名無しさんNGNG
>>53
馬鹿ですね
0055デフォルトの名無しさんNGNG
!=EOFが2つ出るのが気持ち悪いな
2つ目の条件は c!=' ' にした方が文脈的にもいいと思う
どうせifでbreakさせるわけだし

あとはオートマトン的に状態フラグを使うくらいしか思いつかないや
0056デフォルトの名無しさんNGNG
fgetsで作ってみた。使用変数が増えるのが欠点か・・・

char buf[1024];
const char *p;
int space = 0;

while (fgets(buf, sizeof(buf), stdin)) {
p = buf;
do {
if (*p == ' ') {
if (flag) continue;
else space = 1;
}
else space = 0;
putchar(*p);
} while(*++p);
}
0057デフォルトの名無しさんNGNG
s/flag/space/
リネームミスorz
0058デフォルトの名無しさんNGNG
>>56
あんまかわんねー
0059デフォルトの名無しさんNGNG
トークン連結演算子というのがありますが実際どういった場面で効果を発揮でますか?
理解が少ないせいだと思いますがいくら考えてもどういった場面で
有効に活用できるのかが想像できません。
どなたか教えて頂けたら幸いです。
0060デフォルトの名無しさんNGNG
hoge_funcを呼ぶ側のコンパイル時に

error C2059: 構文エラー : 'サフィックスが無効です。'
error C2143: 構文エラー : ')' が 'constant' の前に必要です。
error C2198: 'hoge_func' : 実引数が少なすぎます。

のエラーが出るのですが、原因と対処方法を教えていただけないでしょうか。
「実引数が少なすぎます」ですが、呼び出し側、呼び出される側、共に引数の数は合っています。
0061デフォルトの名無しさんNGNG
60ですが、提示した情報が少なすぎですので、判断・検討に必要な情報があれば、
出来る範囲で提示しますのでよろしくお願いします。
0062デフォルトの名無しさんNGNG
・hoge_funcのプロトタイプ宣言または関数定義の最初の部分。
・hoge_funcを呼出している部分とその前2行位のソース。
0063デフォルトの名無しさんNGNG
>>59
Windowsのメッセージクラッカーがうまく使っている。
#define HANDLE_MSG(hwnd, message, fn) case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
HANDLE(hwnd, WM_CREATE, OnCreate);とするとHANDLE_WM_CREATEマクロの呼び出しになり、
HANDLE(hwnd, WM_DESTROY, OnDestroy);と書けばHANDLE_WM_DESTROYマクロの呼び出しになる。
そしてHANDLE_WM_〜が実際にOn〜関数を呼び出すマクロになっている。
0064デフォルトの名無しさんNGNG
>>51
int main(void)
{
int c, lastc = '\0';

while ((c = getchar()) != EOF) {
if (c != ' ' || lastc != ' ')
putchar(c);
lastc = c;
}

return 0;
}
0065デフォルトの名無しさんNGNG
>>62
60のことでしょうか。でしたらありがとうございます。
"hoge_fun.c"を呼んでいる側で利用しているマクロに問題がありました。
解決のキッカケ、ありがとうございました。
0066デフォルトの名無しさんNGNG
>>64
感動した
0067デフォルトの名無しさんNGNG
>64
>連続したスペースを1つにする

if (lastc != ' ') putchar(c);
lastc = c;

でね?
0068デフォルトの名無しさんNGNG
cの値は無視か
0069デフォルトの名無しさんNGNG
>>66 そんなのに感動するやつはまぬけ
>>64 末尾に1個空白あったら出ないだろ! ぼけ
0070デフォルトの名無しさんNGNG
日下部先生にならったことがあるまっとうなやつなら
ふつうこう書く。

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

int main(void)
{
  int c, nextc;

  while ((c = getchar()) != EOF) {
    if (c != ' ')
      putchar(c);
    else {
      if ((nextc = getchar()) != ' ')
        putchar(c);
      ungetc(nextc, stdin);
    }
  }
  return EXIT_SUCCESS;
}
0071デフォルトの名無しさんNGNG
> トークン連結演算子というのがありますが実際どういった場面で効果を発揮でますか

まくろ
0072デフォルトの名無しさんNGNG
>>70
彼の本にまさにそんな例が載ってるもんな
0073デフォルトの名無しさんNGNG
授業でもやりました
0074デフォルトの名無しさんNGNG
> あとはオートマトン的に状態フラグを使うくらいしか思いつかないや

こうやって知ったかぶりしてるやつは実は書けない
0075デフォルトの名無しさんNGNG
>>70
いや、Kusakabe氏本人だったら、
こう答えるはず。

(1) バグが少ないほどいいプログラム
(2) 短くてシンプル(複雑じゃない)プログラムのほうがバグが少ない
(3) プログラムを書かずにすめば、0行なのでバグはでないのでもっとよい
といって、
tr -s ' '
使えというはず ;-)
0076デフォルトの名無しさんNGNG
↑自称「本人の知り合い」かよ!
0077デフォルトの名無しさんNGNG
いや、むしろ本人かも。
0078デフォルトの名無しさんNGNG
こうすれば使用する変数減らせるな。

{
  int c;

  while ((c = getchar()) != EOF) {
    if (c != ' ')
      putchar(c);
    else {
      if ((c = getchar()) != ' ')
        putchar(' ');
      ungetc(c, stdin);
    }
  }
  return EXIT_SUCCESS;
}
0079デフォルトの名無しさんNGNG
>>73
日下部に習ったことあるってか?
本当か?
どこの大学の学生か言ってみろ! どうせウソだろ?
0080デフォルトの名無しさんNGNG
>>78
いや、そこは無理に可読性おとしてまで変数減らす意味は少ない。
0081デフォルトの名無しさんNGNG
これでどうだ

{
  int c;

  while ((c = getchar()) != EOF)
    (c != ' ') ? putchar(c) : ((((c = getchar()) != ' ') ? putchar(' ') : c), ungetc(c, stdin));
  return EXIT_SUCCESS;
}
0082お前らつまらない意地を張るのはよせNGNG
int c = 0;
while((c = getchar()) != EOF)
{
 if(c == ' '){
  putchar(c);
  while((c = getchar()) != EOF)
   if(c != ' ')
    goto biw;
  break;
 }
biw:
 putchar(c);
}
0083デフォルトの名無しさんNGNG
char *filenames[50];
DIR *dir;
struct dirent *dp;

dir=opendir(".");
i=0;
while( (dp = readdir(dir)) != NULL )
{
filenames[i]=dp->d_name;
printf("%s\n",filenames[i]);
i=i+1;
}
closedir(dir);

printf("%s\n",filenames[0]);
printf("%s\n",filenames[1]);
printf("%S\n",filenames[2]);

ディレクトリ内にあるファイル名を文字列ポインタ*filenamesに格納
していくプログラムを作りたいんですが、なぜかどこの配列にも
最後に読み取った同じファイル名が入っちゃうようなんですが、
なぜ?????
0084デフォルトの名無しさんNGNG
(c != ' ')  が顔に見えてしかたがない
0085デフォルトの名無しさんNGNG
同値の隣り合う2bitを1bitにするコードは?
0086デフォルトの名無しさんNGNG
> なぜ?????

変数iを宣言していないから。
0087デフォルトの名無しさんNGNG
> printf("%S\n",filenames[2]);

Sが大文字だから
0088デフォルトの名無しさんNGNG
↑
おい、日下部の弟子! へんなところつっこんでる暇があったら
模範解答を書いてみろよ
0089デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <sys/dir.h>

#define MAX 50

int main(void)
{
  char *name[MAX];
  DIR *dir;
  struct dirent *dp;
  int n;
  int i;

  if ((dir = opendir(".")) == NULL)
    return EXIT_FAILURE;
  for (n = 0; (dp = readdir(dir)) != NULL; n++) {
    if (n >= MAX)
      break;
    name[n] = dp->d_name;
  }
  closedir(dir);

  for (i = 0; i < n; i++)
    printf("%d: %s\n", i, name[i]);

  return EXIT_SUCCESS;
}
0090デフォルトの名無しさんNGNG
ぜんぶ最後のと同じになっちゃうってことは、
エントリーごとの値が保存されていないへんな環境だってことだろうから,

char *name[MAX]; → char name[MAX][FILENAME_LEN + 1];
にして、
name[n] = dp->d_name; → strcpy(name[n], dp->d_name);
にすればいいのでは?
0091デフォルトの名無しさんNGNG
strdupって標準関数じゃなかったっけ? 違うのだったら作ってやれ。

char *strdup(const char *s)
{
 char *p = malloc(strlen(s) + 1);
 if (p)
  strcpy(p, s);
 return p;
}
0092デフォルトの名無しさんNGNG
> 違うのだったら作ってやれ。

つくるんだったらそんなダサイのにするなよ ぼけ


(Linuxのgccにはあるが > strdup、そのむかしのLatticeCにあったのでmscにもそのまま入った。K&Rに載ってるが標準にはない有名な関数)
0093デフォルトの名無しさんNGNG
>>11
>>13
>>17
0094デフォルトの名無しさんNGNG
ret~ strcpy...
0095デフォルトの名無しさんNGNG
ふつうに書いたらこうだな。

{
  char *r;

  return (r = malloc(strlen(p) + 1)) ? strcpy(r, p) : r;
}
0096デフォルトの名無しさんNGNG
94は「なんとなくそんな書き方があるはず! とは思ったが、10分考えてもわらかなった」ぼけ
0097デフォルトの名無しさんNGNG
甘い。安全なstrlenなら
strcpy(malloc(strlen(p)+1),p)
0098デフォルトの名無しさんNGNG
strcpyといいたかったのだろうか...
0099デフォルトの名無しさんNGNG
96
ケータイ打ちはつらいんだ
0100デフォルトの名無しさんNGNG
inline char *strdup(const char *p)
{
 return strcpy(malloc(strlen(p) + 1), p);
}
0101デフォルトの名無しさんNGNG
他の関数呼んでてもinline有効になる処理系あるの?
0102デフォルトの名無しさんNGNG
ある。
0103デフォルトの名無しさんNGNG
ない。
0104デフォルトの名無しさんNGNG
>>69
>>64 末尾に1個空白あったら出ないだろ! ぼけ
の意味が判らんのだが誰か説明してくれないか?
0105デフォルトの名無しさんNGNG
> の意味が判らんのだが

頭わるすぎー
0106デフォルトの名無しさんNGNG
>104

クスリでもやってんだろ
0107デフォルトの名無しさんNGNG
つくればある
0108デフォルトの名無しさんNGNG
void氏がいつもいってる。
Unixの基本精神は、
(1) 作ればあるもんっ
(2) ひとりでできるもんっ
の2つだと
0109デフォルトの名無しさんNGNG
>>108
彼がfjに書いてるのには「っ」は無かったような…(あったかな?)
0110デフォルトの名無しさんNGNG
108
その通り。一億行のソースコードも一億分の一秒ごとに一行書けば一秒で作れる。
0111104NGNG
つまりvoidの弟子がアホって事か。真面目に読もうとした漏れが悪かった。

お詫びにこれ置いとくから使ってくれ。
「末尾に1個空白あったら出ないだろ! ぼけ」
「末尾に1個空白あったら出ないだろ! ぼけ」
「末尾に1個空白あったら出ないだろ! ぼけ」
0112デフォルトの名無しさんNGNG
1億行のソースコードも1万人動員すれば
1人当たり1万行。余裕。
0113デフォルトの名無しさんNGNG
UNIXってI/F周りがシンプルかつかなりこなれてるから、
ロジックの実装に専念できる。

だから(1)に関しては同意。
0114デフォルトの名無しさんNGNG
>104

むしろ漏れは >>68 の方が気になってしようが無いんだが
0115デフォルトの名無しさんNGNG
>>114
>>67 が c != ' ' の判定を端折ってるのがダメって事でしょ。
0116114NGNG
>115
なぜその判定が必要?
0117115NGNG
>>116
空白の次の文字が無条件に出力されなくなる。
0118114NGNG
おぉ�dクス
0119デフォルトの名無しさんNGNG
>>111
それ書いたのはvoid一派のやつではないと思うが。
0120デフォルトの名無しさんNGNG
strdupのほかに「こんな関数も標準にあったらいいのに」ってのはほかにない?
0121デフォルトの名無しさんNGNG
setenv/getenv
diropen
popen/connect./select/listen
0122デフォルトの名無しさんNGNG
strdupについては、メモリの解放方法が定められない限り標準に
すべきではないと思うわけだが。
0123デフォルトの名無しさんNGNG
mallocだっておなじじゃん
0124デフォルトの名無しさんNGNG
お前さんは私に「free」と言わせたいのか?そうなのか?
0125デフォルトの名無しさんNGNG
ああ、ショットガンをかまえて暴漢に向かって言うやつね
0126デフォルトの名無しさんNGNG
エイメーンそれは「プリーズ」だゼ イェア
0127デフォルトの名無しさんNGNG
ブリーズだろ?
0128デフォルトの名無しさんNGNG
>>121
それは、例えば無線端末や電子レンジで意味のある関数だろうか…?

>>123
だねぇ。malloc/free があるなら strdup もあっていい希ガス。
0129デフォルトの名無しさんNGNG
ACT3ってことか
0130デフォルトの名無しさんNGNG
strdupだけあってもな・・・
strdupandcpyとかそこらへんも整備しないと使い物にならん
0131デフォルトの名無しさんNGNG
> strdupandcpyとかそこらへんも整備しないと使い物にならん

はあ? 意味不明
0132デフォルトの名無しさんNGNG
ああ、ユニクロの主力製品ですね!
0133デフォルトの名無しさんNGNG
Cより先にC++が死滅します
0134デフォルトの名無しさんNGNG
理由を述べよ
0135デフォルトの名無しさんNGNG
理由なんかないさ
0136デフォルトの名無しさんNGNG
おばけなんかないさ
0137デフォルトの名無しさんNGNG
すみません、教えてください。
Cのlong int型変数だと2147483647までしか格納できないようなのですが、
それ以上の、たとえば1兆とかの整数を格納して扱いたいときはどうすればいいのですか?
0138デフォルトの名無しさんNGNG
>>137
仮想そろばんを作ればいいのだよ
0139デフォルトの名無しさんNGNG
>>138
桁ごとに変数を分けるということですか?
0140デフォルトの名無しさんNGNG
>>139
とりあえず多桁計算でぐぐってみてくれ
0141デフォルトの名無しさんNGNG
たばいちょー で googleしろ
0142デフォルトの名無しさんNGNG
> Cのlong int型変数だと2147483647までしか格納できないようなのですが、
> それ以上の、たとえば1兆とかの整数を格納して扱いたいときはどうすればいいのですか?

long long intにすればいいだけじゃん
0143デフォルトの名無しさんNGNG
>>140-141
ありがとうございます。ググッてみます。

>>142
そんなことができるんですか?
0144デフォルトの名無しさんNGNG
多倍長整数
0145デフォルトの名無しさんNGNG
多倍長ていうのがキーワードなんですね。
それでちょっと調べてみます。
ひよっこの質問に親切に答えていただいてありがとうございました。
0146デフォルトの名無しさんNGNG
おやすみなさい。
0147デフォルトの名無しさんNGNG
> >>142
> そんなことができるんですか?

long long int も知らずにC使ってるのかー
0148デフォルトの名無しさんNGNG
>>147
何しろ非標準だからな。んなもん知らんでも使える。
0149デフォルトの名無しさんNGNG
>>147
そういうお前も、long long long int は知らないんだろ?
0150デフォルトの名無しさんNGNG
> 何しろ非標準だからな。んなもん知らんでも使える。

ぼけ、どこが非標準だよ。
もろに標準規格そのものだろ! ぼけ

long long intを知らないばかりか「標準じゃない」とまでおもってるのは
かなりまぬけ。
0151デフォルトの名無しさんNGNG
longlong int とか言ってる人がいるけど、C99がまともにコンパイルできる処理系は
一体どれくらいあると言うのだろう・・・・
(´-`).。oO
0152デフォルトの名無しさんNGNG
> longlong int とか

そんなものはありません。

> まともにコンパイルできる処理系は

なんてまぬけなことをいえばいいわけできるとおもってるようだが、
世間のたいがいのコンパイラーではつかえる > long long int
使えないまぬけなコンパイラーのほうがむしろ稀
0153デフォルトの名無しさんNGNG
使えないコンパイラーの名前をあげてみろよ?

それとも自分が「VC厨」だとバレるから言えない?
0154デフォルトの名無しさんNGNG
とりあえず「DOSで起動するコンパイラ」はおすすめできない
0155デフォルトの名無しさんNGNG
>>152
バカですか君は。
long long intは確かに通るコンパイラは多いけど、コンパウンドリテラルとか、restrictポインタとか
まともに使えるコンパイラがあるんですか?と聞いているのに。木を見て森を見ずとは、まさに
君のような人間の事を言うんですね。
0156デフォルトの名無しさんNGNG
*p++はどうした?
0157デフォルトの名無しさんNGNG
先に増えるだろ
0158デフォルトの名無しさんNGNG
多倍長整数ならrubyのソースにもある
0159デフォルトの名無しさんNGNG
rubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyrubyruby
0160デフォルトの名無しさんNGNG

まさかこのスレには無限ループを普通に書く奴はいないだろうな
0161デフォルトの名無しさんNGNG
while("ruby!"){
  // ループ処理
}
0162デフォルトの名無しさんNGNG
while (1) {
  "10種類マダ?”
}
0163デフォルトの名無しさんNGNG
また10個か
0164デフォルトの名無しさんNGNG
なにしろ、まだ一個も出てないもんで
0165デフォルトの名無しさんNGNG
long long intが使えないコンパイラ
Borland C++ Compiler
Visual C++

面倒くさいのであとはよろしく.
0166デフォルトの名無しさんNGNG
> long long intは確かに通るコンパイラは多いけど

いえそれが使えないコンパイラーが何かと聞いているのですが?
0167デフォルトの名無しさんNGNG
> 先に増えるだろ

なわけねー
0168デフォルトの名無しさんNGNG
> コンパウンドリテラルとか、restrictポインタとかまともに使えるコンパイラが

どちらもgccならふつーに使える。
0169デフォルトの名無しさんNGNG
> long long intが使えないコンパイラ
> Borland C++ Compiler
> Visual C++

やっぱりVC厨だったかー
0170デフォルトの名無しさんNGNG
>>169
使えないコンパイラを挙げるのに、そのコンパイラを使っている必要がありますか?:-)
0171デフォルトの名無しさんNGNG
そうではなく、VC厨だから、いちいち標準機能なのにVCで使えないものの話題が出るたびに
ケチつけるわけでしょ? ;-)
0172デフォルトの名無しさんNGNG
すでに死んでるコンパイラーだからなあ > VC
0173デフォルトの名無しさんNGNG
私はVCなんか使ってないです ;-(
0174デフォルトの名無しさんNGNG
でも、VC++.NETの新しいのがこの正月に出るだろ?
あれでは、ちょっぴりだけ標準機能に対応したといううわさだぞ
0175デフォルトの名無しさんNGNG
手遅れです。蘇生はもはや不可能かと ;-)
0176デフォルトの名無しさんNGNG
すでに死んでるコンパイラーはもうどうでもいい。
0177デフォルトの名無しさんNGNG
LonghornではC死滅しちゃうしな。
かろうじて低レベルで最下級で下品なコーダが下品なコードを記述するのに使われるだろうけど。
0178デフォルトの名無しさんNGNG
で、日下部本って、ぶっちゃけどうなのよ?
読みやすい? ためになる?
0179デフォルトの名無しさんNGNG
>>178
void of all usefulness
0180デフォルトの名無しさんNGNG
なるほど。いい本なのか
0181デフォルトの名無しさんNGNG
標準C++ってナに?ストラウストラップ?未だに
開発ツールにこだわっているやつがいるんだ。
そんなSEとかプログラマーはイラネー
0182デフォルトの名無しさんNGNG
標準とツールがどうかんけいするんだ ぼけ
0183デフォルトの名無しさんNGNG
>>181
>そんなSEとかプログラマーはイラネー
お前社長か?どうせ糞プログラマーに過ぎねー癖に偉そうな口叩いてんなよ(プ
0184デフォルトの名無しさんNGNG
目くそ鼻くそで言い合うのはやめなさい。見苦しい ;-(
0185デフォルトの名無しさんNGNG
今更だが出来るだけ見たまんまな感じにしてみた
これ見て分からないやつはいないだろう
int main(void)
{
  int c;

  while ((c = getchar()) != EOF) {
    putchar(c);
    if (c == ' ') {
      while ((c = getchar()) == ' ')
        ;
      ungetc(c, stdin);
    }
  }
  return 0;
}
0186デフォルトの名無しさんNGNG
ungetを使うのはアルゴリズム的に美しくない
0187デフォルトの名無しさんNGNG
同感
0188デフォルトの名無しさんNGNG
関数を一つ作るだけで、ずっと美しくなると思う。

#include <stdio.h>

void SkipSpace(void)
{
  int c;

  while ((c = getchar()) == ' ')
    ;
  ungetc(c, stdin);
}

int main(void)
{
  int c;

  while ((c = getchar()) != EOF) {
    putchar(c);
    if (c == ' ')
      SkipSpace();
    }
  return 0;
}
0189デフォルトの名無しさんNGNG
だれか512×256の画像データをフーリエ変換するプログラム作ってください。。。
0190デフォルトの名無しさんNGNG
>>189
作るには情報不足です
0191デフォルトの名無しさんNGNG
>>190
8次でいいです。
そこまで言ったんだからさっさと作ってください。
0192デフォルトの名無しさんNGNG
> ungetを使うのはアルゴリズム的に美しくない

いや、むしろ美しい。
フラグとか使うやつはぼけ
0193デフォルトの名無しさんNGNG
>>189
画像データのフォーマットが不明だと作れんということもわからんのかと。
しかもスレ違い。その頼み方じゃどこに行っても駄目だろうが(藁
0194デフォルトの名無しさんNGNG
>>193
あんた資格何もってる?
0195デフォルトの名無しさんNGNG
調理師なら
0196デフォルトの名無しさんNGNG
いいね。俺もそう言う生きていくのに必要なのほしいなぁ。
0197デフォルトの名無しさんNGNG
2種免許…_| ̄| ...○
0198デフォルトの名無しさんNGNG
>>197
いいね、漏れもそういう生きていくのに無駄なのほしいなぁ。
0199デフォルトの名無しさんNGNG
ソムリエは?
0200じっちNGNG
http://pc5.2ch.net/test/read.cgi/gamedev/1103636571/
0201デフォルトの名無しさんNGNG
>>199
それは日下部
0202デフォルトの名無しさんNGNG
あ
0203デフォルトの名無しさんNGNG
>>165
VCでは一応用意されているが。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcedit/html/vcoriccompilerlinkerclanguage.asp
> long long 型は、__int64 の typedef として使用できます。
> 詳細については、「Fundamental Types」を参照してください。
> CRT では、long long はまだサポートされていません。
0204デフォルトの名無しさんNGNG
int main(void)
{
  int i1 = 1;
  int i2 = 0;
  int i3 = 0;
  int i4 = 0;
  int i5 = 1;

  if (i1 || i2 || i3 || i4 || i5) printf("OK\n");

  return 0;
}

こういう時って i1 が真だったら残りの i2 i3 i4 i5 は
評価されないのですか?
0205デフォルトの名無しさんNGNG
ない
0206デフォルトの名無しさんNGNG
されない
ショートサーキットでググれ
0207204NGNG
レスありがとうございます。
ショートサーキット、ググりました。少し勉強になりました。
0208デフォルトの名無しさんNGNG
っていうか常識
0209デフォルトの名無しさんNGNG
おまいら今年も今日で終わりですよ。
0210デフォルトの名無しさんNGNG
あと1か月以上あるじゃん
0211デフォルトの名無しさんNGNG
現実逃避してる
0212デフォルトの名無しさんNGNG
イスラム教徒なんだろ、たぶん。
0213デフォルトの名無しさんNGNG
時代遅れ
0214デフォルトの名無しさんNGNG
チャンコロかもしれない
0215デフォルトの名無しさんNGNG
日本人ならふつうの正月だろ。元日は新月にきまってるんだよ。
0216デフォルトの名無しさんNGNG
C#の質問なんですがインストールガイドなどのサイトをみているとIISのインストールがWindowsXPHomeEditionではいれられません。
WindowsXPではVisualStdio.Net C#って入れられないんですか?
0217デフォルトの名無しさんNGNG
>>216
タイトルを良く見ろ
お前なんて誰も望んでないんだ
必要ないんだよ
つまり、スレ違い
0218デフォルトの名無しさんNGNG
216
proじゃないとね
0219デフォルトの名無しさんNGNG
> WindowsXPHomeEditionでは
> WindowsXPでは

別物ですね。質問の途中で話をすり替えてはいけません。
0220デフォルトの名無しさんNGNG
>>204
そもそもその例では評価しようと評価しまいと結果は同じじゃん。
もっと意味のある例を出せ!
0221デフォルトの名無しさんNGNG
C言語のAPIってどこで調べられるんですか。
というかリファレンスは存在するんですか。
0222デフォルトの名無しさんNGNG
>>221
一応マジレス
http://www.bohyoh.com/CandCPP/C/Library/index.html
0223Rubyist!NGNG
man 3
0224デフォルトの名無しさんNGNG
>>221
msdn
0225デフォルトの名無しさんNGNG
> C言語のAPIってどこで調べられるんですか。

そんなものはない
0226デフォルトの名無しさんNGNG
よって、222と223ははずれ
0227デフォルトの名無しさんNGNG
>>222-224
こいつぼけ
0228デフォルトの名無しさんNGNG
頭が悪いのか、常識がないのか。
0229デフォルトの名無しさんNGNG
みんなぼけ
0230デフォルトの名無しさんNGNG
数学、複素数、ワイド文字入出力、ワイド文字操作を除いた
残りの118個の関数ぐらいは、暗記してるようじゃないとだめ!
マニュアルなんか見ちゃだめ!
0231デフォルトの名無しさんNGNG
abort abs asctime assert atexit atof atoi atol
bsearch
calloc clearerr clock ctime
difftime div
exit
fclose feof ferror fflush fgetc fgetpos fgets fopen fprintf fputc fputs fread fr
ee freopen fscanf fseek fsetpos ftell fwrite
getc getchar getenv gets gmtime
isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper
isxdigit labs
ldiv localeconv localtime longjmp
malloc memchr memcmp memcpy memmove memset mktime
perror printf putc putchar puts
qsort
raise rand realloc remove rename rewind
scanf setbuf setjmp setlocale setvbuf signal sprintf srand sscanf
strcat strchr strcmp strcoll strcpy strcspn strerror strftime strlen strncat str
ncmp strncpy strpbrk strrchr strspn strstr strtod strtok strtol strtoul strxfrm
system
time tmpfile tmpnam tolower toupper
ungetc
va_arg va_end va_start vfprintf vprintf vsprintf
0232デフォルトの名無しさんNGNG
こいつぼけ
0233デフォルトの名無しさんNGNG
たしかにどれも1度は使ったことある関数だなあ。
0234ageNGNG
CUIが多いがな・・・
0235デフォルトの名無しさんNGNG
なにいってんのこの人?馬鹿?
0236デフォルトの名無しさんNGNG
年末だというのに香ばしいやつがいるな…
0237デフォルトの名無しさんNGNG
こいつぼけ
0238デフォルトの名無しさんNGNG
虚構と現実が混じりあうスレ
0239デフォルトの名無しさんNGNG
> CUIが多いがな・・・

Cの標準関数にGUIのものがあると思い込んでいるぼけ
こいつもVC厨!
0240デフォルトの名無しさんNGNG
日下部先生の本のサンプルプログラムに出てくる標準ライブラリー関数の数を数えてみました。

59 printf
47 fprintf
43 exit
25 fopen
25 fclose
23 fgets
19 fputc
17 fputs
12 strlen
10 free
9 strcpy
8 strcmp
8 fgetc
6 malloc
6 tolower
4 striccmp
4 qsort
4 isdigit
3 strstr
3 putch
3 islower
2 getchar
2 atoi
1 putchar
1 cprintf
初心者向きでバランスいいですね。
0241デフォルトの名無しさんNGNG
↑putchやcprintfはちがうだろ!
0242デフォルトの名無しさんNGNG
古いCの256本でも同じような事やってたよな。
たしか一位はexitだったか……
0243デフォルトの名無しさんNGNG
scanfやgetsがでてくる本はだめだね。
0244デフォルトの名無しさんNGNG
striccmpなんてのもないぞ!

ってことは合計22個、getchar/fgetc、putchar/fputc を同じだということに
してしまえば、「たった20個」おぼえれば、そこそこコーディングできるって
ことだな。
0245デフォルトの名無しさんNGNG
20個を並べ換えると、
fopen fclose fputc fgetc fgets fputs printf fprintf
strlen strcpy strcmp strstr
isdigit islower tolower atoi
malloc free
qsort exit
ってことか。
0246デフォルトの名無しさんNGNG
やっぱCってもうダメだね
0247デフォルトの名無しさんNGNG
今20世紀はRubyの時代になるだろうね。
0248デフォルトの名無しさんNGNG
2chの法則:
根拠をのべずに「〜だ」「〜だろう」と書いてあるものは
すべて後ろに「だということにしたい」をつけて読むと正しい意味になる。
0249デフォルトの名無しさんNGNG
tukkomutokorohasokokaiw
0250デフォルトの名無しさんNGNG
今20世紀はRubyの時代になるだろうね。だということにしたい
0251デフォルトの名無しさんNGNG
VCはすばらしい
0252デフォルトの名無しさんNGNG
だということにしたい
0253デフォルトの名無しさんNGNG
>>251
たしかにすばらしいが
使うやつにたいしたやつはいない。
0254デフォルトの名無しさんNGNG
今20世紀ということにしたい
0255デフォルトの名無しさんNGNG
いまは2004年だから20世紀だろ?
0256デフォルトの名無しさんNGNG
誰もVC使う俺って凄い!、とかぶっこいてないだろ?
屈折してんなあ
0257デフォルトの名無しさんNGNG
VC使う俺って凄い!
0258デフォルトの名無しさんNGNG
こちらへどうぞ

中2でプログラミングできる俺って凄いの?
http://pc5.2ch.net/test/read.cgi/tech/1104066264/1
0259デフォルトの名無しさんNGNG
>>248
>>246-247
0260デフォルトの名無しさんNGNG
「標準入力から C 言語などのプログラムテキストファイルを読み込み、
使用している関数名を頻度順に並べなさい。
これは宣言文と実際の式のどちらも含みます。
なお、同じ頻度の関数は辞書順に並べなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに
入力した出力を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。
但し、関数名の長さは高々 255 文字と仮定して良い。」
という課題が出てるのですができないので教えてください。
よろしくい願いします。

0261デフォルトの名無しさんNGNG
C言語「など」と書かれても、プログラミング言語によって関数の表現方法が
異なるから書きようがない。どの言語か明確に示せ。その前にスレ違い。
以後は次の宿題専門のスレで。ただしきちんと断ってからスレを移動しないと
マルチポストとして扱われて相手をしてもらえなくなるので注意せよ。

ぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
0262デフォルトの名無しさんNGNG
>>261
正月から釣りに釣られちゃって…
おめでたい人ですね
0263デフォルトの名無しさんNGNG
>>260
ま た お 前 か
先生が認めたからってよくやるわ。
0264デフォルトの名無しさんNGNG
n個の素数を求める世界最速のCルーチンは?
0265デフォルトの名無しさんNGNG
> scanfやgetsがでてくる本はだめだね。

たとえばどんな本ですか?
0266デフォルトの名無しさんNGNG
> C言語「など」と書かれても、プログラミング言語によって関数の表現方法が

もっともなクレイムだが、問題なのは
こいつが、まるで「Cに限定すれば答えられる」とでも思ってることだ ;-)
けっこうむずいぞ。(lex使用禁止!)
0267デフォルトの名無しさんNGNG
(\w+)\(
で検索すりゃいいんじゃないの。
可能な限り厳格にカウントしなければならないなんて書いてないし。
0268デフォルトの名無しさんNGNG
sprintf(s,"cproto...(中略)
...
system(...以下略
0269デフォルトの名無しさんNGNG
>>266
fun x -> x * x;;
0270デフォルトの名無しさんNGNG
ソースファイルを誤って消してしまったのですが、
オブジェクトファイルをソースファイルにコンパイル
できるソフトってありますか?
0271質問!!NGNG
唐突ですが

http://code.cside.com/3rdpage/jp/url/converter.html

ここでやってる

「テスト」 → 「%E3%83%86%E3%82%B9%E3%83%88」

のような文字コードを変換する関数を作ってください。
よろしくお願いします。
0272デフォルトの名無しさんNGNG
>>270
リンク済みのものからやるよりは含んでる情報が多いかもしれないけど
望んでいるであろう完璧な復元は絶対に不可能だからあきらめろ
それよりも、ファイル自体を復元することを考えなされ
つ[ ttp://www.vector.co.jp/soft/win95/util/se192983.html ]
0273デフォルトの名無しさんNGNG
printf("%%%02X",以下略
0274デフォルトの名無しさんNGNG
>>270
それをdecompileと言います。まる。
0275デフォルトの名無しさんNGNG
Cを勉強していて、Borland C++ Compiler5.5落としてきました。
無事コンパイルできる環境を整えられたんですが、
コンパイルするソースファイルをいちいちフルパスで指定するのが面倒くさいです。
たとえばC:\srcというフォルダを作って、そこにソースをおくことにしてプロンプトから
bcc32 test.c
と打ち込むだけで、C:\src\test.cファイルをコンパイルできるようにしたいのですが、どうしたらいいかわかりません。
出力先を指定する-n<path>オプションのように、ソースファイルを指定する方法はないのでしょうか?
もしこのスレがスレ違いだったらごめんなさい。
0276デフォルトの名無しさんNGNG
>>275
カレントディレクトリを変えりゃいいだけの話じゃないのか・・・
0277デフォルトの名無しさんNGNG
>>276
ありがとうございました。
0278デフォルトの名無しさんNGNG
>>
今時始める奴はcmd知らんのよ
bccスレ時々見ておもう俺の感想
0279275NGNG
ごめんなさい
おっしゃるとおりcmdになれてません…使う機会がなくて
0280デフォルトの名無しさんNGNG
>278
もうDOSは必須じゃないでしょ。BCCDEVとサクラエディタを紹介しておきましょう。
0281デフォルトの名無しさんNGNG
cmdがDOS???
0282デフォルトの名無しさんNGNG
Windowsでは、CUIの時代は開発者の環境でも終焉を迎えているのか・・・
パイプとかバッチ処理とか応用効いて良いんだけど

BCCDEVはいいよね。環境汚さずbcc入れられるからGNUな環境と共存できて
0283デフォルトの名無しさんNGNG
勝手に終わりにすんな
0284デフォルトの名無しさんNGNG
Next-generation shells - is Linux falling behind?
http://blogs.zdnet.com/open-source/index.php?p=86
0285216NGNG
>>217
ただ普通に間違いを指摘すればいいだけなのにこういう言い方を平気で出来る奴ばかりなんですか?
プログラム板の人間って
0286デフォルトの名無しさんNGNG
>>285
何逆切れしてんのこいつ
0287デフォルトの名無しさんNGNG
cmdの話出たけどなんかのインストールで(もちろんXP)
真っ黒な画面がちょっと出て来たときと
「何!?今の!?」って騒がれた。
0288デフォルトの名無しさんNGNG
cmdの話出たけどなんかのインストールで(もちろんXP)
真っ赤な画面がちょっと出て来たときと
「何!?今の!?」って騒がれた。
0289デフォルトの名無しさんNGNG
>>285
低級プログラマなどという職種は、中国人や印度人、に交換されるそうですから近いうちに消えて無くなるので怒るだけ無意味ダト思ワレ(W
0290デフォルトの名無しさんNGNG
低級プログラマってアセンブリとかが得意なプログラマのこと???
0291デフォルトの名無しさんNGNG
中国キモイ
0292車 だん吉NGNG
>>290 人間性
0293デフォルトの名無しさんNGNG
2ch初めてなんじゃない
0294デフォルトの名無しさんNGNG
>>289
貴様、ハッカーを侮辱する気か!
0295デフォルトの名無しさんNGNG
(void**)&vというのはどういう意味の記述なのでしょうか?
void**という部分がよくわからないのですが
0296デフォルトの名無しさんNGNG
>>295
voidポインタへのポインタ
0297デフォルトの名無しさんNGNG
>294
違法アクセスやめようよ
0298デフォルトの名無しさんNGNG
すいません、http://gcc.gnu.org/←このサイトのとこでgccがDLできるんですか?
0299デフォルトの名無しさんNGNG
http://ring.aist.go.jp/pub/GNU/gcc/
0300デフォルトの名無しさんNGNG
>>299
感謝しますありがとうございます
0301デフォルトの名無しさんNGNG
そこソースだけだぞ
0302デフォルトの名無しさんNGNG
ところで「C maga人」って何の雑誌ですか。
0303デフォルトの名無しさんNGNG
http://www.cmagazine.jp/info.html

C MAGAZINEとは?

 C MAGAZINEは国内の技術者に向けて,さまざまな技術情報をお届けしている月刊誌です。
1989年より創刊以降,ソフトウェア開発の第一線に立つ方々にご執筆いただいた内容を一貫
して掲載し続けています。

 プログラミングの初心者はもちろんのこと,さまざまな技術者に向けて,実際のプログラム
開発で役立つ実用性のある内容をお伝えすることを使命としています。
0304デフォルトの名無しさんNGNG
ソースだけでつか・・・
すいません、http://gcc.gnu.org/←このサイトのどこでgccがDLできるんですか?
0305デフォルトの名無しさんNGNG
>>304
いいかげんすれ違いの話はやめたらどうだ
0306デフォルトの名無しさんNGNG
どっかの外部サイトへのリンクがあろう
0307デフォルトの名無しさんNGNG
>>305
すいません・・
0308デフォルトの名無しさんNGNG
> それをdecompileと言います

いいません。
やーい > しったかぶり
0309デフォルトの名無しさんNGNG
> 1989年より創刊以降,ソフトウェア開発の第一線に立つ方々にご執筆いただいた内容を一貫

たとえばだれだ?
0310デフォルトの名無しさんNGNG
>>308
ばか?
0311デフォルトの名無しさんNGNG
だれか>>297につっこんでやれよ・・・
0312デフォルトの名無しさんNGNG
>>309
日下部とかー
0313デフォルトの名無しさんNGNG
ほかには?
0314デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
int *a;
int *b;

*a = 0;

return (0);
}

これで実行するとエラーになるんですが、
intへのポインタを指す変数を2つ宣言してはいけないですか?
0315デフォルトの名無しさんNGNG
>>314
ポインタaが何を指してるか考えてみれ
0316デフォルトの名無しさんNGNG
>>314
aが指す先がない。intへのポインタを指す変数を宣言などしていない。
0317デフォルトの名無しさんNGNG
>>314
int型へのポインタですね。
「int型の何か」はmallocなどで生成します。
0318デフォルトの名無しさんNGNG
>>317
決して間違ったことは言っていないが微妙な回答だな…。
0319デフォルトの名無しさんNGNG
微妙ですね・・ごめんなさいorz

>>314さんのは
*a = 0;
でエラーがでています。
ポインタはメモリをポイントするのですが、
アクセス可能なメモリ以外の場合だと実行時にエラーとなります。

int *a; // int型へのポインタの宣言
int x; // int型の変数の宣言

a = &x; // xのメモリアドレス(ポインタ)をポインタ型のaに代入

*a = 0; // ポイント先(int x)に0を代入
0320!omikuji !damaNGNG
tes
0321デフォルトの名無しさんNGNG
C Magazineは三田典玄とかもかいてただろ? それで「ソフトウェア開発の第一線に立つ方々」だと言うなら、ほかのもあやしいもんだなあ。
0322デフォルトの名無しさんNGNG
>>321
あなたって▓▓▓▓ですよね?
0323デフォルトの名無しさんNGNG
R▓▓y!!!!!!!!!!!!!!!
0324デフォルトの名無しさんNGNG
>>321
いや、三田はエッセイ書いただけだろ。技術的な記事は書いてない。
いくらC Magazine編集部が馬鹿でも、三田に技術的な記事を書かせるほど
馬鹿ではないだろう。
0325デフォルトの名無しさんNGNG
>>308
「いわない」ではなく「正しくない」だろ?
正しくはdiscompileであることぐらいはだれでもしってる。
0326デフォルトの名無しさんNGNG
まあ、いまどきコマンドプロンプトの画面を出したときに「dir」なんてうたなきゃ
いけない環境がタコなだけだよ。
うちは、ふつうに、viしてgccできるし、perlもrubyも最初から入ってるしapachもftpもふつうにうごいてる。
Linuxつかったときと同じなので楽。いまどきこれが常識!
0327デフォルトの名無しさんNGNG
http://e-words.jp/w/E98086E382B3E383B3E38391E382A4E383AB.html
http://www.itmedia.co.jp/dict/programming/tools/compiler/02231.html
http://www.google.com/search?num=50&hl=ja&q=decompile&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0328デフォルトの名無しさんNGNG
↑3つめがぶらくら
0329デフォルトの名無しさんNGNG
>>325
逆アセンブル=disassemble
逆コンパイル=decompile
ここの連中は英語もろくにできないのか?
0330デフォルトの名無しさんNGNG
*a = 0; // 先斗(int x)に0を代入
0331デフォルトの名無しさんNGNG
%cは文字、%dは数字,%xは小数点に関係しますよね。
いま%sというのをみたんですが、これはなにを表すものなんでしょうか?
どなたかご教授おねがいします。
0332デフォルトの名無しさんNGNG
char string[]="\"文字列です\n\"";
0333デフォルトの名無しさんNGNG
標準入出力関数(1) http://www9.plala.or.jp/sgwr-t/c/sec05.html
0334デフォルトの名無しさんNGNG
%xは十六進数の出力だぞ〜
0335デフォルトの名無しさんNGNG
> いま%sというのをみたんですが、これはなにを表すものなんでしょうか

99ページに書いてある
0336デフォルトの名無しさんNGNG
>>332
何で改行してから " つけるの ?
0337デフォルトの名無しさんNGNG
>>326 がノイローゼ気味な件について
0338デフォルトの名無しさんNGNG
つけたいから > 改行してから
0339デフォルトの名無しさんNGNG

char ope = '+'
int num1 = 5;
int num2 = 7;
int ans;

ans = (num1 ope num2);

これで実行するとエラーが生じてしまいます。
どうしてでしょうか?アドバイスがありましたら
よろしくお願い致します。


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

mainが無いな。
0341デフォルトの名無しさんNGNG
ワロタ
0342デフォルトの名無しさんNGNG
;
0343339NGNG
これはプログラムの一部です。
ここに問題があって、エラーになってしまうのです
0344デフォルトの名無しさんNGNG
入門書読み直してくれば?
0345デフォルトの名無しさんNGNG
文字列を式として評価したければparserでも書かなければならない。
そのような機能はC言語の標準では用意されていない。
0346デフォルトの名無しさんNGNG
>>343
つまらないネタは、いくら押してもつまらない。
0347デフォルトの名無しさんNGNG

>>339
>アドバイスがありましたら
>よろしくお願い致します。

Lisp 使え。
0348デフォルトの名無しさんNGNG
>>339
//ans = (num1 ope num2);
switch(ope) {
case '+':
ans = num1 + num2;
break;
case '-':
ans = num1 - num2;
break;
case '*':
ans = num1 * num2;
break;
case '/':
ans = num1 / num2;
break;
}

0349デフォルトの名無しさんNGNG
sageじゃないと上がっちゃうのかw
0350デフォルトの名無しさんNGNG
>>349
2ちゃんねるへようこそ
0351デフォルトの名無しさんNGNG
<348
ありがとうございます
0352デフォルトの名無しさんNGNG
ちょっと分からんので誰か教えてください。
例えば、以下のようなプログラムの場合

int getstr(const char* in, char* out)
{
 [ inを処理して可変長のoutを得る ]
 return 0;
}

int main(void)
{
 const char str1[10]="aaaaaaaaaa";
 char *str2;
 [str2の領域確保?]
 getstr(str1,str2);
 printf("%s",str2);
 [str2の領域解放?]
 return 0;
}

mainではstr2の長さが分からないので領域確保できないですが
どうしたらよいでしょうか?
できれば、領域を確保した関数内で解放も行いたいのですが。
0353デフォルトの名無しさんNGNG
typedef struct {
  int op;
  int (*func)(int, int);
} FUNC;

int f_add(int, int);
int f_sub(int, int);
int f_mul(int, int);
int f_div(int, int);

FUNC selection[] = {
  {'+', f_add},
  {'-', f_sub},
  {'*', f_mul},
  {'/', f_div},
};
0354デフォルトの名無しさんNGNG
  for (i = 0; i < sizeof(bar) / sizeof(FUNC); i++) {
    if (ope == selection[i].op)
      (selection[i].func)(num1, num2);
  }
0355デフォルトの名無しさんNGNG
多めにとっときゃいいじゃん

もしくはgetstr関数内で確保
0356デフォルトの名無しさんNGNG
七行プログラミング part4
http://pc5.2ch.net/test/read.cgi/tech/1051703369/814

こちらも参考にどうぞ.
gcc でしか試していません.
0357デフォルトの名無しさんNGNG
営業乙
0358デフォルトの名無しさんNGNG
UnixとWindows両方で使えるCのZip操作ライブラリが欲しいんですが、どんなのがありますか?

# zlibは圧縮・展開のみでアーカイブ機能はないので…
0359Rubyist!NGNG
PhysicsFS
0360デフォルトの名無しさんNGNG
かなり悩みましたがさっぱり分かりません

deque<char *> dp;に文字列を格納する時に
char buf[100];
strcpy(buf, "abc");
dp.push_back(buf);
とするとうまく格納されるのですが、
char buf[100];
buf[0] = 'a'; buf[1] = 'b'; buf[2] = 'c'; buf[3] = '\0';
dp.push_back(buf);
とするといろいろ不具合が出るんです
何が原因でしょうか?
0361デフォルトの名無しさんNGNG
なんだよ > いろいろ
0362デフォルトの名無しさんNGNG
激しくスレ違いですから〜!
残念!
あと不具合の詳細も書いとけ
0363デフォルトの名無しさんNGNG
>>360
ここだな
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/
0364デフォルトの名無しさんNGNG
>>360
それ以前にそのコードはC++、ここはCスレ。つまりスレ違い。
まあ面倒くさいからstd::dequeにはstd::stringを入れろ。
0365360NGNG
363の方で質問してきます
あと364の方が回答してくれているようですが、
atd::stringを入れるというのがどういう意味か分かりません
0366デフォルトの名無しさんNGNG
それも分からんのにSTL使うのはどうかと…
0367デフォルトの名無しさんNGNG
>>365
deque<string> ds;
0368デフォルトの名無しさんNGNG
>>367

deque<string>は分かるのですが、<char *>で扱うと
strcpy(buf,)で格納するのとbuf[0]、buf[1]と1文字ずつ文字を格納するのとで
違う動作になるのが意味不明で解決したいんです
どちらで文字列を作ってもbufの中身はまったく同じと思うんですが、
違うのですか?
0369デフォルトの名無しさんNGNG
> どちらで文字列を作ってもbufの中身はまったく同じと思うんですが

Cならね
0370デフォルトの名無しさんNGNG
C++だと

strcpy(buf, "abc");
の
buf[0] = 'a'; buf[1] = 'b'; buf[2] = 'c'; buf[3] = '\0';
結果が違うのか〜マイッタ
0371デフォルトの名無しさんNGNG
haa
0372デフォルトの名無しさんNGNG
常識!
0373デフォルトの名無しさんNGNG
へえ
0374デフォルトの名無しさんNGNG
>>360
俺んところはこれを実行しても何も問題なないが。
#include <iostream>
#include <deque>
using namespace std;
int main()
{
    deque<char *> dp;
    char buf_a[100];
    strcpy(buf_a, "abc");
    dp.push_back(buf_a);
    char buf_b[100];
    buf_b[0] = 'a'; buf_b[1] = 'b'; buf_b[2] = 'c'; buf_b[3] = '\0';
    dp.push_back(buf_b);
    cout << dp[0] << '\n' << dp[1] << endl;
    return 0;
}
0375360=365=368NGNG
>>369

C++だと違うのですか?
よければどう違うのか詳しく解説してくれる方居りませんか?
向こうで聞いても誰も教えてくれないので・・・
0376デフォルトの名無しさんNGNG
>>372
また君か
0377デフォルトの名無しさんNGNG
向こうでやれといっているのに。
0378360NGNG
#include <iostream>
#include <deque>

using namespace std;

int main(void){

deque<char *> dp;
char buf[100];

buf[0] = 'a'; buf[1] = 'b'; buf[2] = '\0';
dp.push_back(buf);

buf[0] = 'c'; buf[1] = 'd'; buf[2] = '\0';
dp.push_back(buf);

cout << dp[0] << dp[1] << endl;

return 0;
}

これを実行した時に、頭の中ではabcdと表示されると思うのですが、
cdcdと表示されるのです
0379デフォルトの名無しさんNGNG
>>378
お前、C++なんかやる前にCをもう少しちゃんとやれ。
ポインタについて何もわかってないだろ。
0380デフォルトの名無しさんNGNG
deque<char *> なんか使ってる時点で
ポインタ理解してないだろうな、とは思ったが…
0381360NGNG
やっと理解できました
<char *>って書くと勝手に領域作ってくれて
そこに文字列を代入してくれる仕様だと思いこんでいました
これからはstringを使います
0382デフォルトの名無しさんNGNG
そんなdeque<T*>がそんな特殊化されていたら切れるな。

では、何事もなかったかのように「C言語なら俺に聞け!」をお送りします。
0383デフォルトの名無しさんNGNG
lintの存在意義を教えてください。
0384デフォルトの名無しさんNGNG
>383
中級者はgcc -Wall -pedantic の警告に耳を傾けていれば不必要。
0385デフォルトの名無しさんNGNG
-pedantic をつけるとどうかわりますか?
0386デフォルトの名無しさんNGNG
次の人どうぞ
0387デフォルトの名無しさんNGNG
>385
電子辞書使え
0388デフォルトの名無しさんNGNG
こっちが本スレだったんですか。
改めて、

exe形式で保存するのにはどうせればいいですか^^
exeファイルを作りたいんですが^^
0389デフォルトの名無しさんNGNG
>388
何の? どんな?
0390デフォルトの名無しさんNGNG
>>389
Cとか、そういうファイルをexeにしたいんですが^^
実行するにはexeしかないし^^
0391デフォルトの名無しさんNGNG
まずはageを覚えてください。
0392デフォルトの名無しさんNGNG
VB
0393デフォルトの名無しさんNGNG
>390
レンジで簡単料理の本を読め
0394デフォルトの名無しさんNGNG
>>391
すいません
0395デフォルトの名無しさんNGNG
>>390
別にexeでなくても動きますがなにか。
0396デフォルトの名無しさんNGNG
>>393
え?^^;
0397デフォルトの名無しさんNGNG
>>395
そうなんですか。
じゃあVBっていうので動かしたいんですけど、どうすればいいですか
0398デフォルトの名無しさんNGNG
>>390
優しい私が教えて差し上げましょう。
まず、exeファイルというのはWindows用の実行ファイルの事ですね。
それを作るというのはつまり、コンパイルするということです。
コンパイルするためには、コンパイラというソフトを使うと良いでしょう。
コンパイラはいろいろありますが、市販の物ならMicrosoftのVisualC++など、
無料の物なら…飽きた。この話題飽きた。
0399デフォルトの名無しさんNGNG
>397
だから、料理の本買えって
0400デフォルトの名無しさんNGNG
>>398
そうなんですか^^
親切にどうもありがとうございます。
今からぐぐってきます^^
0401デフォルトの名無しさんNGNG
>>397
VisualBasicの使い方が書いた本が店に売ってるだろ。
0402デフォルトの名無しさんNGNG
>>399
料理の本なんてみなくても目玉焼きぐらいなら作れますよ^^^^^^^^
0403デフォルトの名無しさんNGNG
>>401
ありがとうございます
今度
0404デフォルトの名無しさんNGNG
本屋見てみます
0405デフォルトの名無しさんNGNG
BCCっていうのは使えるんですか
0406デフォルトの名無しさんNGNG
>405
リソースエディタもヘルプも付属されず。あくまで練習用だ。使いたいならVectorでBCCを検索してみろ。
0407デフォルトの名無しさんNGNG
質問があるんですが、















射精していいですか
0408デフォルトの名無しさんNGNG
407
風俗街に逝けょ
0409デフォルトの名無しさんNGNG
>>407
まだガマンしなさい…うふふ
0410デフォルトの名無しさんNGNG
今射精したらムチでヤっちゃうよ?
0411デフォルトの名無しさんNGNG
気を取り直してイってみよう!
0412デフォルトの名無しさんNGNG
晴れ着の女に…
0413デフォルトの名無しさんNGNG
コンドーム買ってやりたげな娘にナンパしる!
0414デフォルトの名無しさんNGNG
BOOL StrTrim(LPTSTR s1, LPCTSTR s2);
と同じ機能のDの関数ってあるの?
0415デフォルトの名無しさんNGNG
間違えた。 D→C
0416デフォルトの名無しさんNGNG
>414
そりゃSDKではshlwapi.hで宣言されたwinapiだから、呼び出し型に注意して動的リンクすりゃ使える。
0417414NGNG
>>416
レスどうも!後でやってみます。
0418デフォルトの名無しさんNGNG
RedHatで標準関数のヘッダファイルがある
ディレクトリってどこでしょうか
0419デフォルトの名無しさんNGNG
stdio.hを検索すればいいだろ
0420デフォルトの名無しさんNGNG
locate stdio.h
0421デフォルトの名無しさんNGNG
遅いだろうけど見当がつかないのなら

% find / -type f -print | xargs grep stdio.h
0422デフォルトの名無しさんNGNG
>>415
驚いた
一瞬D言語スレと間違えたかと目を疑った…
0423デフォルトの名無しさんNGNG
Dって普及すんのかな?
0424デフォルトの名無しさんNGNG
ヴァンパイアハソター
0425デフォルトの名無しさんNGNG
>>418
大抵は/usr/include
0426デフォルトの名無しさんNGNG
ところで何で"C言語"って言うんだね?
"プログラミング言語C"って言うならともかく
0427デフォルトの名無しさんNGNG
cc -o a,exe foo,c ってやればexeファイルができるよ!
0428デフォルトの名無しさんNGNG
なんでxargsつかうんだ? > 421
0429デフォルトの名無しさんNGNG
>427
>cc -o a,exe foo,c

','と'.'は同じではないし
0430デフォルトの名無しさんNGNG
似てるからだいじょぶ
0431デフォルトの名無しさんNGNG
ぐっじょぶ
0432デフォルトの名無しさんNGNG
>>426
日本語だから。
0433デフォルトの名無しさんNGNG
こいつぼく
0434デフォルトの名無しさんNGNG
ぼく大統領
0435デフォルトの名無しさんNGNG
北大と雨量
0436デフォルトの名無しさんNGNG
ポインター型の引数(char *だったり、構造体へのポインターだったり)の
「指す内容」が変更されないことを示すのに「const」って使えますよね?
func(const char *); みたいに。
渡すときに内容がセットされてなければいけないか、どうかを示す方法はないですか?

foo(const char *buf, // Input
BAR *type, // Output
BAZ *info) // Input / Output

みたいな場合、typeのメンバーは呼ぶときにセットしておく必要はないが、
infoのは必要ある、みたいなのをコンパイラーもしくはlintに知らせたい場合。
0437デフォルトの名無しさんNGNG
>>436
「内容をセットする」がどういう意味かを説明せよ。

ポインタが NULL ではない、という意味か? ポインタが指す先に何かあ
る、という意味か? どっちにしても、コンパイル時に検出するのは難し
いと思うけど。
0438デフォルトの名無しさんNGNG
どっちにせよ"変数の値" みたいな実行時に
変化するものをコンパイルラーに検出してもうこと自体おかしい
0439デフォルトの名無しさんNGNG
Cでテキストファイル(単純なリストファイルです)
をいじくるプログラムを作りました。
機能として、単に参照(画面出力)や二つのリストファイルをマージ、ソート
する機能をつけました。
ふと疑問に思ったのですが、各関数に渡す引数については
FILEポインタを渡したほうがいいのか、
const char *を渡し、関数内でfopen,fcloseさせたほうがいいのでしょうか。

どちらにせよ、プログラム内では統一させますが、普通はこうやる
みたいなのはありますか?
ちなみに僕は後者の方法にしました。
0440デフォルトの名無しさんNGNG
>439
再利用しやすいのは前者
0441デフォルトの名無しさんNGNG
>>369
これ、本当なの?
0442デフォルトの名無しさんNGNG
質問なんですが
fopenなどの高水準なファイル入出力関数と
openなどの処理系依存(?)の低水準な関数って、
どう使い分けるの?

openなどを使うメリットは?実行ファイルが小さいとか?
教えてください。
0443デフォルトの名無しさんNGNG
>442
互換性と処理速度が全く違う。動的リンクするならサイズは余り変わらない。ちなみにwinならCreateFileか_lopenを使え
0444デフォルトの名無しさんNGNG
>441
論理エラーの議論を無視するのが2chの仕様
0445439NGNG
返答ありがとうございます。

今度、前者の方で書き直しときます。
0446デフォルトの名無しさんNGNG
>>426
確かB言語ってのがあったからC言語って名前にしたらしい
何故B言語っていう名前だったかは知らん
0447デフォルトの名無しさんNGNG
BCPL→B言語→C言語 だったかと
0448デフォルトの名無しさんNGNG
加えると
ALGOL60 が起源の CPL (Combined Programming Language)
-> BCPL (Basic Combined Programming Language)
-> B (First letter of BCPL)
-> (NB := New B)
-> C (Second letter of BCPL)
じゃなかったかな
0449デフォルトの名無しさんNGNG
>>448
つまりC言語の命名に従えば、
D言語じゃなくてP言語になるべきだったのか
0450デフォルトの名無しさんNGNG
>>449
そうですね
でも C++ も C# もありますしね

ちなみにC#の#は
++を上下に2つくっつけた説と
半音高い説があります

いずれにしても MS は「C# は C++ よりもイケてる」と言いたかったようです
0451デフォルトの名無しさんNGNG
>>450
>半音高い説があります
じゃ俺、もう半音高い D にするわ。
0452デフォルトの名無しさんNGNG
C♭
0453デフォルトの名無しさんNGNG
Cω
0454デフォルトの名無しさんNGNG
確かにC#はC++より逝けてる。うん。
0455デフォルトの名無しさんNGNG
C井
0456デフォルトの名無しさんNGNG
C丼
0457デフォルトの名無しさんNGNG
【C丼 345円】
0458デフォルトの名無しさんNGNG
オレC丼一杯! ウニなしで!
0459デフォルトの名無しさんNGNG
ウニ食えない香具師は包茎
0460激初心者NGNG
ファイルに書き込みをして、その文字を読み込み表示させたいのですが、
うまくいきません(文字化けしてしまいます)。どこに問題があるのでしょうか?
#include <stdio.h>

int main(void)
{
FILE *fp;
char word1[256], word2[256];

fp = fopen("dat37.dat", "w");

printf("Input any word.\n");
fgets(word1, 256, stdin);
fprintf(fp, "%s", word1);

fgets(word2, 256, fp);
printf("%s", word2);

fclose(fp);

return 0;
}
0461デフォルトの名無しさんNGNG
>>460
おいおい書き込みモードでファイル開いてるのに読み込もうとするなよ
0462デフォルトの名無しさんNGNG
>>460
#include <stdio.h>
int main(void)
{
    FILE *fp;
    char word1[256], word2[256];
    fp = fopen("dat37.dat", "w+");
    if (fp == NULL)
        return 1;
    puts("Input any word.");
    fgets(word1, sizeof word1, stdin);
    fputs(word1, fp);

    fseek(fp, 0, SEEK_SET);

    fgets(word2, sizeof word2, fp);
    puts(word2);
    fclose(fp);
    return 0;
}
0463激初心者NGNG
>>461
あ・・。ありがとうございます。^^;
読み込みモードで開きなおしたらできました。
ちなみにfeof関数も使えということなんですが、これは
do {} while(feof(fp) == 0);と、読み込みのとこに足せば
良いのでしょうか?
0464デフォルトの名無しさんNGNG
feof関数とwhileをヘルプで調べろ、タコ。
0465デフォルトの名無しさんNGNG
ついでにif elseもだ
0466激初心者NGNG
>>462
ご丁寧に直して下さってありがとうございます!
ところで
fseek(fp, 0, SEEK_SET);
は指定ファイルを頭出しする為に必要、ということでよいのでしょうか?
0467激初心者NGNG
>>464>>465
すいません^^;
リファレンスでfeof関数は見てみたのですが、EOFを検出すると!=0になるというのが
いまいち使い方がわかりません。
if else文でif (feof == 0)と else で条件分岐させるということでしょうか?
0468デフォルトの名無しさんNGNG
end of fuckの略
0469デフォルトの名無しさんNGNG
つまり、ファイルの終わり。

関数の後にはカッコに囲まれた引数がいる。
0470デフォルトの名無しさんNGNG
データの読み込みに関して質問させてください。
たとえば

-----------------------
This paper written by hoge.
You see , I'm hoge.

1,2,3
4,5,6
7,8,9
-----------------------

上のようなデータファイルがあったとき
1,2,3
4,5,6
7,8,9
の部分だけずらっと読み込みたいんですが、
定石のようなコードはありませんでしょうか?
今まで上のようなデータファイルのときは文字の部分を切り取って
fscanfで読み込みをしていたもんで^^;
0471デフォルトの名無しさんNGNG
素人は一歩ずつ一行ずつやれ
0472デフォルトの名無しさんNGNG
fgetsして先頭文字ををisdigit等で判定して
sscanf等で取り込むのが一般的かと。
極端に速度を求めるのでもない限り。
0473デフォルトの名無しさんNGNG
良スレハケーン(大学受験板)・・・スレタイを見よ。
http://school4.2ch.net/test/read.cgi/kouri/1102125273/

なんともム板にふさわしいスレタイではないか。「真」だ!!!
0474デフォルトの名無しさんNGNG
>>472
先頭文字チェックですか。
参考にします。どうもでした^^
0475デフォルトの名無しさんNGNG
Cじゃ面倒なんでSchemeで100!を計算してみたw
0476デフォルトの名無しさんNGNG
Mathematicaで

100! Shift+Enter

終わり
0477デフォルトの名無しさんNGNG
Mathematicaも関数型言語ですねー にゃんにゃん
0478デフォルトの名無しさんNGNG
最近はオブジェクト指向も取り入れられているらしい。いつも
関数型言語としてしか使わないが。スレ違い。
0479デフォルトの名無しさんNGNG
let rec f x = if x = 1 then 1 else x * f (x-1);;
0480デフォルトの名無しさんNGNG
OCamlかよw
0481デフォルトの名無しさんNGNG
> どっちにせよ"変数の値" みたいな実行時に
> 変化するものをコンパイルラーに検出してもうこと自体おかしい

は? 「変化する」かどうかを決めるのはコードのロジックだろうが!
コンパイラーがチェックするのはあたりまえ。
0482デフォルトの名無しさんNGNG
参照してない仮引数があれば警告するオプションならば、ほとんどのコンパイラにある
0483デフォルトの名無しさんNGNG
>>481
ネタをネタと(ry
0484デフォルトの名無しさんNGNG
> 参照してない仮引数があれば警告するオプションならば、ほとんどのコンパイラにある

は? こいつぼけか。
(1) 参照しかしてない
(2) 値が変わっている
(3) 参照もし、値が変わっている
の3種類を区別する方法だよ ぼけ。(1)はできるが、(2)と(3)を区別したい。
0485デフォルトの名無しさんNGNG
「コンパイラー」って、何か新鮮な響き♥
0486デフォルトの名無しさんNGNG
ふつうです。
0487デフォルトの名無しさんNGNG
>>485
>438の「コンパイルラー」はどうよ。
0488デフォルトの名無しさんNGNG
コンパイラァ
0489デフォルトの名無しさんNGNG
>>481
>>436を、
どう解釈すればそんな回答が飛び出すの?
0490デフォルトの名無しさんNGNG
コンパイゴルァ
0491デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1103913840/393-397よりはマシだ
0492デフォルトの名無しさんNGNG
早朝から支離滅裂なレスをする >>481 に萌え。

>>484
つか >>436 のような場合、未設定の変数「を指すポインタ」を
引数に使う分には警告も何もださないのがふつうで、それを
何とかしたいんでしょ?
結論としては「無理」としか言いようがないけど。

もし引数が構造体へのメンバだったら
まったく使用しないメンバも有り得るわけで
そんなのまでいちいち警告出されたくないだろうし。
0493デフォルトの名無しさんNGNG
そこまで管理したかったらC++で参照使えと。
0494デフォルトの名無しさんNGNG
PADって何?
0495デフォルトの名無しさんNGNG
>>494
電子手帳
0496デフォルトの名無しさんNGNG
1.キーボードから5つの実数データを入力し、その
・合計
・平均
・最大値
・最小値
・範囲
を求めるプログラムを作成せよ。
という課題が出ているのですが学がなくまったくわかりません。
どなたか教えてください。
0497デフォルトの名無しさんNGNG
1行目の要素が512個、2行目の要素が500個・・・
の様に各行の要素数がバラバラのcsvファイルがあります。
これを改行が出るまで読み込み、2次元配列に読み込ませるプログラムを作成中です。
(初期値として配列の要素は全て-1)

fscanf(fp, "%d", &y[i][j]);

を使って読み込んでみましたが値が代入されません。
どのようにすれば読み込めるのか教えていただきたいです。
よろしくお願いします。
0498デフォルトの名無しさんNGNG
>496 ここまでやってみろ。
わからんことは聞け。
int i; float an[5];
float s,a,mi,ma;//合計,平均,最小値,最大値
for(i=0;i<5;i++){
printfで"i番目の実数は?"と表示;
scanfでan[i]に実数を入力;
}
0499デフォルトの名無しさんNGNG
>497
i,jをそれぞれ説明しろ。
fscanfとsscanfをヘルプれ。
0500デフォルトの名無しさんNGNG
>496-497
解決しました。
0501デフォルトの名無しさんNGNG
ヘルプれ…なかなかいいな。
0502デフォルトの名無しさんNGNG
>500
0503超初心者NGNG
文字列が入力してあるファイルからreadシステムコールを使って指定した
1文字をカウントしたいのですが、0文字になってしまいます。
どこに問題があるのでしょうか?
#include <stdio.h>
#include <fcntl.h>

int main(void)
{
int fd;
int n_read;
int count = 0;
int ch;
char buf[256];

fd = open("data.dat", O_RDONLY, 0);

fprintf(stdout, "Input a letter you want to count.\n");
ch = fgetc(stdin);

while ((n_read = read(fd, buf, 1)) > 0) {
if (buf == ch)
count++;
}

fprintf(stdout, "found %d%c.\n", count, ch);

close(fd);

return 0;
}
0504デフォルトの名無しさんNGNG
それ以前にコンパイルできてんのかよ
0505デフォルトの名無しさんNGNG
2次元配列を関数に渡し、新しい2次元配列を返り値として受け取りたいと思っています

//main
double a[3][3]
double b[3][3]

//関数呼び出し (どうやって行列を受け取るか?)
b = arrray2(a);

//関数部 (関数の型を2次元配列にするには?)
double arrray2(double (*a)[3])
{
double c[3][3];

return c;
}

aという行列を関数array2を使い変形したあとbに渡したいんですが、
2次元配列を返すのにどうしたらよいのか教えてください
0506超初心者NGNG
はい。エラーも出ませんし、プログラムも実行されるんですが・・
0507デフォルトの名無しさんNGNG
>>503
>if (buf == ch)
これがコンパイルできてしまうようなコンパイラは
棄てた方が幸せになれる。
0508デフォルトの名無しさんNGNG
文字じゃねーじゃん
0509デフォルトの名無しさんNGNG
>>506
ほんまか。コンパイラ教えれ
0510超初心者NGNG
>>507-509
BCCです・・。 buf == (char)ch ・・じゃだめですよね?^^;
0511デフォルトの名無しさんNGNG
初心者age質問お断り
0512デフォルトの名無しさんNGNG
>505
double[][]→double**
出力用の仮引数double**outを追加。
0513デフォルトの名無しさんNGNG
>>507
> if (buf == ch)

配列「buf」の先頭ポインタ値と、
変数「ch」の値が一致するか?

と言う判定だから、型の不一致で警告は出ても、
エラーにはならないのでは?
0514超初心者NGNG
ためしにscanf("%c", ch)でもだめでした・・・
0515初心NGNG
↓消費税を求める物を作ったつもりなんですが計算をしてくれません。
何故か分かりませんか?
#include <stdio.h>

int main(void)
{
int a, b;
printf("金額を入力して下さい。\n");
scanf("%d", &a);
b = a * ( 1 + 5 / 100 );
printf("%d 円の消費税込みの価格は %d 円です。\n", a, b);
return 0;
}
0516デフォルトの名無しさんNGNG
C言語ではどんな式を与える場合でも宣言された型と一致しなければ逝けない。関数の型を知るにはヘルプを見よ。
0517デフォルトの名無しさんNGNG
a * 1.05
0518デフォルトの名無しさんNGNG
>515
整数の割り算だから。途中でキャストや代入どして、floatやdouble型の式に変換すべし。
0519YuraNGNG
>a * ( 1 + 5 / 100 );
->a * 1.05

これでうまく動くと思います(理由は面倒なので他の人どうぞ)
0520515NGNG
a * 1.05
は自分も確認しました
でも、
a * ( 1 + 5 / 100 );
だと出来ないので不思議に思ってました。
floatかdoubleでやってみたいと思います。
どうもでした
0521デフォルトの名無しさんNGNG
補足:1はint型、1.0はint型ではない
0522デフォルトの名無しさんNGNG
それじゃa * ( 1 + (double)5 / 100 )
0523デフォルトの名無しさんNGNG
int型に小数点入ってる数字が代入できるわけねーだろ
0524デフォルトの名無しさんNGNG
>>523
( ゚Д゚)ポカーン
0525デフォルトの名無しさんNGNG
b = a * ( 1.0 + 5.0 / 100.0);
0526デフォルトの名無しさんNGNG
> a * ( 1 + 5 / 100 );
a + a * 5 / 100;
0527526NGNG
補足。
intに代入するなら浮動少数かますなあほども。
0528デフォルトの名無しさんNGNG
>526
昔、描画関数を速くするためによく整数化したもんだ。
0529デフォルトの名無しさんNGNG
>>523
できますよ。デマを流さないように。つっても釣られるやつはいないと思うけど。
0530デフォルトの名無しさんNGNG
ファイル内容を1ページずつ画面表示するプログラムを書けということなんですけど、
1ページずつ表示する、の意味がわかりません。
コマンドプロンプトの画面1つが1ページなんですか??
0531デフォルトの名無しさんNGNG
>>530
言ったやつに聞け
0532デフォルトの名無しさんNGNG
>530
おそらくkbhitやgetchでキー待ちができる。ヘルプれ。
0533デフォルトの名無しさんNGNG
>>530
1 ページに縮小表示汁
0534デフォルトの名無しさんNGNG
(a==b)==1 なのに、sizeof(a)とsizeof(b)が同じになってくれません。
どうも、sizeof(a)は配列の要素数を返しているようなんですが……
これはコンパイラ(gccです)の仕様なんですか?
0535534NGNG
書き忘れました。両方とも型はchar*です
0536デフォルトの名無しさんNGNG
>>534
char a[256];
char *b;
こうしているんだろ
0537530NGNG
>>532
if (kbhit()) c = getch(); で入力待ちができることはわかったのですが、
それでどう画面をページわけできるのかが・・。
どういう形で使用するのでしょうか?

0538534NGNG
>>536
そうです、そんな感じです。今、bccでもやってみたらgccと同じ動作でした。
C言語自体の仕様なんですか?なんか不自然な気がします……
0539デフォルトの名無しさんNGNG
仕様です
0540デフォルトの名無しさんNGNG
それじゃあ仕様が無いねHAHAHAHAHAHA
0541デフォルトの名無しさんNGNG
>537
一行ずつ
0542デフォルトの名無しさんNGNG
>>537
決めた行数を表示して停止すれば
0543534NGNG
仕様なんですか……
なら、 char a[256]; のときの256って数値は、どこかに数値として残ってるってことですか?
だったら、その数値を読み出す方法とかないんでしょうか。
0544デフォルトの名無しさんNGNG
>>543
いや、sizeofはコンパイル時に定数になるから。
逆にコンパイル時に決まらない値(動的な配列のサイズ)は
求められない
0545530NGNG
>>541-542
ありがとうございます、やってみます!
0546534NGNG
あーなるほど。つまりコンパイルの時点でサイズがわかってる場合のみ、配列のサイズを
求めてるわけですか。 試しに sizeof(malloc(256)) とやっても、返ってきたのはポインタのサイズでした。
0547デフォルトの名無しさんNGNG
>>546
というか厳密に言えば、char a[256];のaの型はchar*じゃないぞ
だからこそsizeofの結果が違ってくるんだけど。
0548534NGNG
え、そうだったんですか。これまで、完璧にchar*と等しいと思いこんでました。
配列を表す型、みたいに呼ぶんでしょうか?
0549デフォルトの名無しさんNGNG
配列型(array type)
0550デフォルトの名無しさんNGNG
char a[256];の型はchar[256]だ。
0551デフォルトの名無しさんNGNG
>>547
厳密に言う必要はない
0552デフォルトの名無しさんNGNG
>>548
char a[256];としたらaの型はchar [256]、つまりcharの配列[要素数256]であり、決してchar*ではない。
構文上はaが使われるたびに配列からポインタの読み替えがなされている。

http://kmaebashi.com/programmer/pointer.html
ここの下の方、「配列→ポインタの読み換え」の項にあるけど、
sizeofと単項&には例外的に配列→ポインタの読み替えが起こらない。
(ここから余談)つまり&aとするとchar(*)[256]、charの配列へのポインタが得られる。
0553デフォルトの名無しさんNGNG
> これがコンパイルできてしまうようなコンパイラは

できないコンパイラーがあったらかなり問題があるぞ
0554534NGNG
>>549-552
sizeof(char[256]) でやってみたら、見事に256が表示されました。こういう形の型もあったんですね。

char *b=&a としたときでも b==a となりました。つまり、「a[256]の配列」が始まる場所と「数値a[0]」がある場所が
同じだから、 「先頭要素へのポインタと読みかえられる b=a」 でも、「char(*)[256]へのポインタである b=&a」でも、
結局は同じ場所を指すことになるってことですね。なんか言いづらいですが、頭のなかじゃ理解できました。
0555デフォルトの名無しさんNGNG
既出でしたらすいません。
実行ファイルが使用したメモリ量を計測する簡単な方法はないでしょうか。
今はタスクマネージャを目視して図っているのですがもっとスマートなやり方があるような気がするのですが・・・

・・・というか意味分かりますかね?(;´Д`)
0556デフォルトの名無しさんNGNG
>>555
スレ違い。
0557555NGNG
>>556
申し訳ありませんでした。
失礼ついでに差し支えなければ教えてください、どこで聞いてくればよいでしょうか?
0558デフォルトの名無しさんNGNG
>>557
このあたりかなぁ

Win32API質問箱 Build26
http://pc5.2ch.net/test/read.cgi/tech/1104109858/
★初心者にVisual C++を教えるスレ★ Part16
http://pc5.2ch.net/test/read.cgi/tech/1101022051/
0559555NGNG
>>558
どうもです!
0560デフォルトの名無しさんNGNG
>>557
ここなんかどう?
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
さもなきゃここか。
http://pc5.2ch.net/test/read.cgi/tech/1092524669/176
0561デフォルトの名無しさんNGNG
並べ替えたい単語数を入力して、
英単語をその数だけ入力して、
アルファベット順に並べるプログラムってどうやって作れますか?

どうかよろしくお願いします。
0562デフォルトの名無しさんNGNG
宿題は宿題スレへって書いてなかったっけ
0563デフォルトの名無しさんNGNG
>>561
ぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
今度はちゃんとテンプレ読んで質問すること
0564デフォルトの名無しさんNGNG
> 並べ替えたい単語数を入力して、

ここがダサい。
0565デフォルトの名無しさんNGNG
>>554
だからさ&aとaは値が同じになっても型が違う。
char a[256];
char *b = a;
char (*c)[256] = &a;
0566デフォルトの名無しさんNGNG
>564 空文字列なら終了とかね。
>561
char**pp=(char**)malloc(n*sizeof(char*));
...
pp[i]=(char*)malloc(100);
...
これならreallocでnを増やせる。
0567デフォルトの名無しさんNGNG
#pragma once というのは
C言語ですか?それともC++で拡張された物ですか?
初歩的な入門書しか買わなかったのですが
次に何を買うか迷っています
0568デフォルトの名無しさんNGNG
>>567
CでもC++でもなく、Visual C++のコンパイラ独自のもの。
本に載っていなくてもその本自体は別に悪くない。
0569デフォルトの名無しさんNGNG
失礼します。。int型4つを持った構造体kozoを、0で初期化して、
初期化済みの構造体のポインタを得たいのです。
static型なので、一発で上のようなことができないでしょうか。
static struct kozo *abc={0,0,0,0};
static struct kozo *(abc={0,0,0,0});
ではうまくいきませんでした。
よろしければどこがいけないのかも教えてください。
0570デフォルトの名無しさんNGNG
>>569

static struct kozo nullkozo;
static struct kozo *abc = &nullkozo;

注: static 変数の初期値はオール0
0571デフォルトの名無しさんNGNG
>569
static struct kozo abc={0,0,0,0};
とおけば、&abcはabcのアドレス。ポインタを初期化するのはアドレスのみ。
0572569NGNG
ありがとうございましたっ。
ポインタはなかなか難しくて・・・(*´Д`)
0573デフォルトの名無しさんNGNG
>>569
static struct kozo abc[1] = {0, 0, 0, 0};
もちろんこういう方法もある。
static struct kozo abc_main = {0, 0, 0, 0};
#define abc (&abc)

ところでstruct kozoってテレフォン電話とかスポーツ運動とかそういう感じのネーミングだよ。
0574569NGNG
なるほど・・・
あ、訳したら構造構造ですね...気をつけます>_<;
0575デフォルトの名無しさんNGNG
>>569
何がしたいのかよく解らないよ。




static struct kozo *abc = calloc( 1, sizeof(struct kozo) );

こういう事か?
0576デフォルトの名無しさんNGNG
プログラムのPADを示せと言われたらどうすればいいの?
0577デフォルトの名無しさんNGNG
ifとswitch~caseによる分岐、速度はどちらが速いのですか?
0578デフォルトの名無しさんNGNG
>>576
PAD図かな?

>>577
分岐数と実装による。
0579デフォルトの名無しさんNGNG
PAD 流れ図 でググれ
0580デフォルトの名無しさんNGNG
PAD アルゴリズム の方がよかったかも
0581デフォルトの名無しさんNGNG
>>577
C の仕様として速度は保証外
現実問題としては、何よりもまず実測
納得いかないときはアセンブラ(読むなり書くなり)
場合によってはハードウェアも視野に入れる
0582デフォルトの名無しさんNGNG
>>577
>>581の言う通りなんだけど、ifかswitchかで迷うなら可読性で軍配の上がるswitchにしてほしい。
0583デフォルトの名無しさんNGNG
>>582
それもまた、一概には言えない。
0584デフォルトの名無しさんNGNG

char str[10] = {""};

こういう初期化方法って一般的ですか
0585デフォルトの名無しさんNGNG
>>584
私なら降格。
char str[10] = "";
0586デフォルトの名無しさんNGNG
二次元配列じゃないんだから
char str[10] = "";
でいいんじゃない?
0587デフォルトの名無しさんNGNG
>>585-586
�dです。
あと、関数内で確保したchar配列の領域って
その関数が終了すると解放されるんでしたっけ?
初歩質問ばっかでスマセン
0588デフォルトの名無しさんNGNG
>>587
staticじゃなければそう
0589デフォルトの名無しさんNGNG
ヘッダファイルの扱い方について質問です。
sub.cで定義されて、かつ外部で使用されるグローバル変数や関数の宣言をまとめたものをsub.hに書いたとします。
sub.hの大半は、externではじまる文になると思うのですが、
sub.cに#include <sub.h>を入れるべきなのでしょうか?入れないべきなのでしょうか?
0590デフォルトの名無しさんNGNG
入れた方がいい気がするが。人によるんじゃ?
0591デフォルトの名無しさんNGNG
>>589
習慣として入れなきゃ駄目。
通常は構造体とかdefineとかがあるから入れないとビルドできないし
もし関数だけだった場合でも.hと.cで関数が食い違ってたら悲惨なことになる。

関数だけで食い違いがなければビルドは通るし普通に動くけどね。
0592デフォルトの名無しさんNGNG
>>590-591
ありがとうございます。
extern文と定義文が同一ソースにあるのは冗長かと思い、迷っていました。
0593デフォルトの名無しさんNGNG
windowsでopen,readを使うにはどうすればいいですか。
fopen,freadは無しで

0594デフォルトの名無しさんNGNG
>>592
#include "sub.h"ね
0595デフォルトの名無しさんNGNG
>593
普通、open/readか、_open/_readが使える。ヘッダは処理系依存。
0596デフォルトの名無しさんNGNG
>>593
CreateFile
ReadFile
0597592NGNG
>>594
書いていて何か違和感のある原因がわかりました(汗
0598デフォルトの名無しさんNGNG
>591
揚げ足取りだが、
>通常は構造体とかdefineとかがあるから入れないとビルドできないし
ヘッダがなくてもビルドはできるんだな。
勝手に定義しておけばいいだけで、なんならヘッダと一致していなくてもビルドはできる。

昔見たソースがそうなっていてしかも、おまけにメンテしていた人の愚痴コメントが書いてあった。
こんなところで勝手に定義して食い違ったらどうするんだとね。
ふと思い出したのであえて突っ込んでしまいました。
0599デフォルトの名無しさんNGNG
あるファイルからアルファベットの出現頻度を出すプログラムを考えよ
0600デフォルトの名無しさんNGNG
>>599
かなり昔学校の課題で考えたことある。で?
0601デフォルトの名無しさんNGNG
>>599
命令すんなボケェ
0602デフォルトの名無しさんNGNG
>>599
#include <stdio.h>
int main(int argc,char**argv){int a,b[256]={0};FILE*fp;if(!(argc==2&&(fp=fopen(
argv[1],"r"))!=NULL))return 1;while((a=getc(fp))!=EOF)b[a]++;for(a='a';a<='z';a
++)printf("%c:%d\n",a,b[a]+b[a+'A'-'a']);fclose(fp);return 0;}
0603デフォルトの名無しさんNGNG
ヴァージョンの増やし方って慣習みたいなのはあるんでしょうか?
手直しするたびに0.1増やすとか、形になったら1.0になるとか、、
0604デフォルトの名無しさんNGNG
c駆け出しの者ですが、質問です。
#include <stdio.h>
typedef struct { char name[20];
int age;
           }data,*pdata;
voidinput(pdata p,char*,int);

int main()
{
data _data[1];
pdata _pdata;

_pdata=_data;

input(_pdata,"ポコたん",19);

printf("%s %d\n",data[0].name,data[0].age);

return 0;
}
void input(pdata p,char *nm,int a)
{
strcpy(p->name,nm);
p->age=19;
}
この場合なぜ関数INPUT内で nmをp->nameにコピーすることで
名前 ポコたん がname[20]の中に入るのか分からないのです
また、どうしてcharのポインタで呼び込まないといけないのでしょうか
普通にchar nameではなぜエラーになるのか
どなたか教えてもらえないでしょうか。
0605デフォルトの名無しさんNGNG
>>604
まず、変数の先頭に_を付けるのは止めた方が良いです。
予約語とかぶる恐れがあります。
Cでは大文字と小文字を区別するので、inputとINPUTは別物ですから、気を付けてください。

本題ですが、
_pdata=_data;
しているでしょ。これは_pdataというポインタが_dataという配列の先頭を指す、
という意味を持っています。
ですから、その後の関数inputの呼び出しでは、メモリ上で_dataと同じ部分がが
使われているのです。
0606デフォルトの名無しさんNGNG
>>604
ところで、本当はネタなんでしょう?
0607デフォルトの名無しさんNGNG
>>604
それコンパイルできません
0608デフォルトの名無しさんNGNG
>>605
忠告ありがとうございます。以後気をつけます。

質問点なのですが、なぜstrcpy(p->name,em);なのかが分からないです。
*emではないのでしょうか?
p->nameは(*p).nameと同義ですよね、それになぜアドレスをコピーできるのかが分かりません。

>>606
マジです、スレ汚してすみませんorz
0609デフォルトの名無しさんNGNG
変数名や関数名の頭に'_'(アンダーバー)を付けるのってどういう時ですか。
暗黙のルールとかあるのかな
0610デフォルトの名無しさんNGNG
付けてはいけません。処理系に予約されています。
つまりコンパイラ屋さんしか使ってはいけない。
0611デフォルトの名無しさんNGNG
少し複雑だけど、そんなことを全く気にしなくてもいいように
_のプリフィクスは使わない方がよい。
代わりに_のサフィクスにする。
使うのはスコープを明示したいとき(主にメンバ変数)。
0612デフォルトの名無しさんNGNG
603が放置されているわけだが。

>603
基本的に適当。
0613デフォルトの名無しさんNGNG
>>610
何とも古くさいルールだな
/usr/usr/usr/usr/usr/usr/bin
0614608NGNG
すみません、emじゃなくてnmでしたorz
落ち着いて少し、調べてきます。お騒がせしてすみませんでした
0615デフォルトの名無しさんNGNG
>>578
>>581-583
トンクス!
レス遅れました_| ̄|○スンマセン
色々試してみます。
0616デフォルトの名無しさんNGNG
>>613
そうなん?詳しく
0617デフォルトの名無しさんNGNG
>>616
詳しくもへったくれもねえだろ
めちゃ小さいプログラムでない限り
何レイヤもかぶせるんだぞ
0618デフォルトの名無しさんNGNG
>>607
見逃していたので一応レスです。
voidとinputの間にスペースを入れ忘れていたのと
%s%dにいれる変数のdataの前に_を付け忘れていました。
0619デフォルトの名無しさんNGNG
解決しました、基本中の基本だったんですね
勉強し直してきますorz
0620デフォルトの名無しさんNGNG
const装飾子について質問であります、Sir!

const char *s;

の時、const はcharに掛かるのでありますかそれとも
*にかかるのでありますか。
また、それはどういう意味でありますか、Sir!

予想
1)constはcharに掛かり文字が変更できない、ポインタの増減は可能であります。
2)const *はポインタを動かすことすら不可能であり、
さらにはcharに触れるなど言語道断である、と申されますか。

いったいどちらの予測が正しいのでありますか?Sir!
0621デフォルトの名無しさんNGNG
なんでconstすらググれねぇの?
終わってるなお前
0622デフォルトの名無しさんNGNG
>>621
m9(^Д^)プギャー
0623デフォルトの名無しさんNGNG
const char* s; → ポインタの参照先がconst
char* const s; → ポインタ変数がconst
char const * s; → 最初に同じ
0624623NGNG
const char* const s; → ポインタ変数そのものも参照先もconst
0625デフォルトの名無しさんNGNG
s++とか*s = 'h'とかやってコンパイルエラー出してみりゃいいんだよ
0626デフォルトの名無しさんNGNG
まあこのくらい自分で試せといいたい
0627デフォルトの名無しさんNGNG
>>622
m9(^Д^)プギャー
0628デフォルトの名無しさんNGNG
>>626
m9(^Д^)プギャー
0629デフォルトの名無しさんNGNG
>>623
m9(^Д^)プギャー
0630623NGNG
ん
0631デフォルトの名無しさんNGNG
なんか見えないレスが多いな
0632デフォルトの名無しさんNGNG
>>631
それは君が馬鹿だからです。
0633ぼるじょあ ◆yBEncckFOU NGNG
m9(・3・)ブキャー
0634デフォルトの名無しさんNGNG
「ヴォケ」でなく「ぼけ」が流行っているのはプログラム板の仕様ですか?
0635デフォルトの名無しさんNGNG
>>634
このスレの伝統です。
0636デフォルトの名無しさんNGNG
下のmain()を使って、push(int v), int pop()の動作を確かめたいんですが
どうしたらいいのかわかりません。
教えてもらえませんか?
#include <stdio.h>

main()
{
  int d;

push(1);
push(2);
push(3);
d = pop();
printf("%d\n", d);
d = pop();
printf("%d\n", d);
push(4);
d = pop();
printf("%d\n", d);
push(5);
d = pop();
printf("%d\n", d);
d = pop();
printf("%d\n", d)
}
0637デフォルトの名無しさんNGNG
自己解決しました。ありがとうございました。
0638デフォルトの名無しさんNGNG
オブジェクトとインスタンスの定義教えて。
0639デフォルトの名無しさんNGNG
>>635
一人だけの奈
0640デフォルトの名無しさんNGNG
>>634
こいつぼけ
0641デフォルトの名無しさんNGNG
int型のみでenterを押すまで数字を入力し続けるやり方がわかりません
1024を入力するとして、入力画面は
1
0
2
4(enter)
とはならず、
1024(enter)
といった感じにしたいです
0642デフォルトの名無しさんNGNG
これはキーボードの操作方法を聞かれているのだろうか
「1」「0」「2」「4」の順にキーを叩いて, 最後に「Enter」キーを叩けばそのように入力できるはずだ.
0643デフォルトの名無しさんNGNG
わかりづらい表現してすみません
要はenterを押すまで数字を入力し続けられ、画面に入力した数字がリアルタイムで出ればいいです
>>641はその際こうなって欲しいということです
0644デフォルトの名無しさんNGNG
> charstr[10]={""};
> こういう初期化方法って一般的ですか

間違い。コンパイラーはwarningださないが、splintはちゃんと指摘してくれる。
0645デフォルトの名無しさんNGNG
それをやるなら
char str[10] = {0};
だろうなぁ
0646デフォルトの名無しさんNGNG
または
char str[10] = "";
0647デフォルトの名無しさんNGNG
>643
環境依存だけどgetchで
0648デフォルトの名無しさんNGNG
> 下のmain()を使って、push(int v), int pop()の動作を確かめたいんですが

189ペイジ参照
0649デフォルトの名無しさんNGNG
質問です。
hoge - piyo の値が10じゃなかったら
変数piyoに数値を変えて10になるようにしたいんですけど
どうやればいいんですか?
なんかすごく簡単そうだと思うけど、実際に組むと全然分りません
0650デフォルトの名無しさんNGNG
if ((hoge - piyo) != 10)
 piyo = hoge - 10;

小学生レベルの式変形かと…
0651デフォルトの名無しさんNGNG
>>650
ありがとうございます
0652デフォルトの名無しさんNGNG
どこが「式変形」なのやら!
0653デフォルトの名無しさんNGNG
piyo = hoge - 10;

これだけでいいじゃん
0654デフォルトの名無しさんNGNG
>>649
>変数piyoに数値を変えて10になるようにしたい

この言葉、誰か日本語にしてよ。
0655デフォルトの名無しさんNGNG
hoge と piyo の型が分からん以上こう書くしかないな…

if ((hoge - piyo) != 10) {
 piyo = hoge - 10;
 if ((hoge - piyo) != 10) {
  fprintf(stderr, "失敗したぞゴルァ\n");
 }
}
0656デフォルトの名無しさんNGNG
struct HOGE { //★
   int foo ;
   int bar ;
} ;

int main(void) {
   static struct HOGE a ;
return 0 ;
}

みたいなことやっても、a が値を保持し続けてくれないんですが、なぜですか?
なにか良い方法はないでしょうか?
一番上の //★ のところにも static 付けてみたけど駄目でした。
どうしてもわかりません・・・
0657デフォルトの名無しさんNGNG
>>656
保持し続けるってどういうこと?
0658デフォルトの名無しさんNGNG
まさかプログラムを一度終了しても…ってことじゃないだろうな
0659デフォルトの名無しさんNGNG
漏れの環境だとずっとゼロを保持してるぞ

マジレスするとプログラムを実行するごとに, 前の実行で設定した値を使いたいなら
ファイルに保存するなりしないといかん.
0660デフォルトの名無しさんNGNG
うはは
0661656NGNG
上のぶんではグローバルになっちゃってますが、
別関数の中で static a とかって宣言すると、静的な領域に確保されて、
関数が消滅した後も、その値が残ってるはずだと思ったんです。
構造体でも同じようなことがしたいのですが、無理なのでしょうか?

プログラムを終了してもって事じゃないけど、レスありがとうございます。
参考になるっす。
0662デフォルトの名無しさんNGNG
>>661
言ってる意味がようわからん。ソース貼ってくれ
0663603NGNG
はよ、応えてください。
0664デフォルトの名無しさんNGNG
>>663
スレ違いにもかかわらず、もう答は出てると思うが。
0665656NGNG
す、すいません。
なぜかちゃんと出来ました(;´Д`)
static がうまく機能しなかったんです。
0666デフォルトの名無しさんNGNG
うまく機能してないのはテメェの臭いマンコだボケ
0667デフォルトの名無しさんNGNG
俺のマンコも綺麗にしてくれ
0668デフォルトの名無しさんNGNG
人それぞれだと思うけど、
�@main()
�Amain(void)
�Bint main(void)
�Cint main()
どれがいいですか?
ちなみに自分は�@番がいいかな、とか思ってます。
0669デフォルトの名無しさんNGNG
正解は�B番なんだろうけど、
結局どれでもいいっすよね?
0670デフォルトの名無しさんNGNG
>>668
省略すると返り値がvoidの場合とintの場合、(もしくはそれ以外)があるので、
int main(int argc, char* argv[])と書いた方が良い。
ちなみに、プログラムが終了時に何も返り値を返さない場合、他のシェルなどの
プログラムから扱い難くなります。
なるべくint型の返り値を返すようにした方が良いです。
0671デフォルトの名無しさんNGNG
そうですか。
ttp://www9.plala.or.jp/sgwr-t/c/sec11.html
こちらのサイトの (2)関数の使用例 あたりで、return を省略したら
int 型になると、はっきり赤字で書いてあったので、鵜呑みにするところでした。
確かに、先のこととか考えると、670さんの表記の仕方の方が正しいと思えます。
大変参考になりました。
0672603NGNG
ヴァージョンとかつけたことないんですか?>ALL
0673デフォルトの名無しさんNGNG
>>670と>>671は本を読み直せ。
0674デフォルトの名無しさんNGNG
>>673
何の本を読めばいいんですか?
0675デフォルトの名無しさんNGNG
>>671
return を省略したら int 型になる
0676デフォルトの名無しさんNGNG
mainはint main(void)かint main(int argc, char *argv[])と同等のもの、
それ以外は処理系定義(つまりどこでも動くとは限らない)とされている
(5.1.2.2.1 Program startup -1より)

mainの戻り値がintとcompatibleな場合、returnを省略するとreturn 0;と
同等になる。mainの戻り値がintとcompatibleでない場合、戻り値は
明示されていない(unspecified)。
(5.1.2.2.3 Program termination -1より)
0677デフォルトの名無しさんNGNG
>>676
ISOに返値型の省略についての記述ってあるのかな
以前探したけど見つからなかった罠…
0678デフォルトの名無しさんNGNG
>>676
本当だ。
省略時のreturn 0;はC++だけだと思ってたらC99に加えられていたのね。
0679デフォルトの名無しさんNGNG
ファイル内の特定のデータを削除したい時は
どうしたらいいんでしょうか?

ファイルポインタを
消したい文字の後ろに持ってきて
fputc('\b', fin);
で削除できるかと思ったのですが
できませんでした。
fputc(0x80, fin);fputc(0x10, fin);
どちらでも駄目でした。
バイナリファイルを扱いたいです。
0680デフォルトの名無しさんNGNG
0x10は0x7Fの間違いです。
失礼しました。
0681デフォルトの名無しさんNGNG
一度全部読み込んで、該当箇所を消して、ファイルに書き込む
0682デフォルトの名無しさんNGNG
>679


りーどらいと汁!
0683デフォルトの名無しさんNGNG
>>676
処理系定義の意味を歪曲してはいけない
未定義や未規定とは違う

 保 証 さ れ た 動 作

であることを銘記すべき
0684デフォルトの名無しさんNGNG
>>676
処理系定義の意味を歪曲してはいけない
未定義や未規定とは違う

 保 証 さ れ た 動 作

であることを銘記すべき
0685デフォルトの名無しさんNGNG
C言語でグラフィックスが書けるらしいのですが
ソース(三角形のプログラム)を拾ってきて貼り付けて実行しても
エラーしか出ません
何か必要なものがあるのですか
0686デフォルトの名無しさんNGNG
>>685
ソースを見ろ
エラーを見ろ
足りないライブラリを追加しろ
0687デフォルトの名無しさんNGNG
円周率πの値を計算するモンテカルロシミュレーションのプログラムが分かる
人是非教えてください。お願いします。
0688デフォルトの名無しさんNGNG
家でも課題ができるようにとBorland C++ Compiler を
インストールしました
しかし学校ではUnixを使っているため
カンパイルから実行まで全てがさっぱりです
初心者向けで良いサイトがあれば教えてください
よろしくお願いします。
0689デフォルトの名無しさんNGNG
>>687
マルチ氏ね
0690デフォルトの名無しさんNGNG
>>688
>>2のcygwinとか入れればいいじゃんかよ
0691デフォルトの名無しさんNGNG
Borlandの使い方も覚えればいいじゃんかよ
0692デフォルトの名無しさんNGNG
カンパイルとは・・・
http://www.google.co.jp/search?hl=ja&ie=Shift_JIS&q=%83J%83%93%83p%83C%83%8B&btnG=Google+%8C%9F%8D%F5&lr=
上から2番目が答えだ。今日からあなたもカンパイル。
0693デフォルトの名無しさんNGNG
>>687
じゃ、まずはモンテカルロという町はどういうところか、ということをレポートに
まとめなさい。
0694デフォルトの名無しさんNGNG
public class モンテカルロ extends 街 implements π {
0695デフォルトの名無しさんNGNG
構造体の宣言そのものを関数内staticにしてしまったのでは?
その構造体の型による「変数」の宣言を関数内のstaticにしろ > ぼけ
0696デフォルトの名無しさんNGNG
今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?
ですが、どこが難しいのかよく解からなく、逆に難しいとされている事を理解できてないのか?と不安です。
たしかに、ポインタの有用な使い方が思い当たらないってのはあるんですが、基本的なことは単純なような気がします。
そこで、難しいとされている理由を教えてください。
*の使い方が、若干ややこしいという事ですか?
0697デフォルトの名無しさんNGNG
あれを難しいというのは最初の30分くらいで、それ以降も難しいと騒いでるのは単に向いてない人だけだよ
0698デフォルトの名無しさんNGNG
int findgoal(int x,int y)
{
int i;
if(x == GOAL_X && y == GOAL_Y)
{
printf("Goal in!!\n");
printmaze();
return;
}
maze[y][x] = KITA;
for(i=x;maze[y][x+1] == AKI;i++)x=x+i;
for(i=y;maze[y+1][x] == AKI;i++)y=y+i;
for(i=x;maze[y][x-1] == AKI;i--)x=x+i;
for(i=y;maze[y-1][x] == AKI;i--)y=y+i;
printf("I can not find goal.\n");
maze[y][x] = AKI;
}
迷路の全ての経路探す関数ですが、これって再帰使わないで解けますか?
0699デフォルトの名無しさんNGNG
>>698
書けません。次。
0700デフォルトの名無しさんNGNG
解けるけど使った方が遙かにいいだろ
再帰を使ういい例だ
0701デフォルトの名無しさんNGNG
使わないで解けと強要されております。
0702デフォルトの名無しさんNGNG
再帰使わないと書けないほど長いプログラムなんですか?
何か解くヒントくれませんかー
0703デフォルトの名無しさんNGNG
宿題スレにいったほうが早い
0704デフォルトの名無しさんNGNG
質問です。
変数が5以上だったら変数の値-5の数値で、
10以上だったら-10、15以上だったら-15と言った感じで、
変数が5の倍数の数値以上だったら、その一番大きい倍数を
引いた数を求めたいんですけど、どうすればいいんですか?
0705デフォルトの名無しさんNGNG
>>704
v = v % 5;
0706デフォルトの名無しさんNGNG
>>705
v %= 5;
0707デフォルトの名無しさんNGNG
そういえば%=って使ったこと無い。
0708デフォルトの名無しさんNGNG
>702
再帰関数の中でそれ自体を引数を変えて呼び出し、返値を使う。ただし仮引数をポインタの入出力にしておけ。
0709デフォルトの名無しさんNGNG
>704
%の実装は、*と/の組み合わせより遅いことが多い。
-(v/5)*5
0710704NGNG
あ、ちょっと説明が間違ってました。
例えば、変数の値が12のとき、求めたい数は2ということです。
0711デフォルトの名無しさんNGNG
>>709
遅かったらコンパイラが最適化でそっちに直すだろう。

ところでx86だと1命令で商と余り同時に得られるんじゃなかったっけ?
だからx86ではそこへ乗算をする分お前の方が遅いと思うんだけど。

>>710
if ((v %= 5) == 0)
    v= 5;
0712デフォルトの名無しさんNGNG
>>709
% の計算量は / と本質的に同じ
0713704NGNG
あー、ちょっと例が悪かったです。
例えば変数の値が29だったら、
29の中で一番大きい5の倍数は25ですよね。
で、29-25を計算して、求める数値は4という意味だったんです。
この、25の部分を求める方法を知りたいんです。
0714デフォルトの名無しさんNGNG
v = (v/5)*5;
0715704NGNG
>>714
え?これでは求めることは出来ませんよね?
vを5で割って、後で5をかけてるから、最初の値に戻るような・・・
0716デフォルトの名無しさんNGNG
>>715
アフォ やってみてから言え
0717704NGNG
理論が分らないと意味ないよ
電卓で計算しても、最初の数値に戻りますよ。
0718デフォルトの名無しさんNGNG
>>717
基礎からちゃんと教えて貰えるとでも思っているのか?
0719デフォルトの名無しさんNGNG
C言語の話じゃないんか?
0720デフォルトの名無しさんNGNG
29/5==5
5*5==25
0721デフォルトの名無しさんNGNG
>>717
死んだ方がいいな。
0722704NGNG
え!Cではそうなるんですか!?
すみませんでしたw
0723デフォルトの名無しさんNGNG
>698
すいません、プログラム間違ってました。
あれじゃ答え出ませんね。
訂正します。
maze[y][x] = KITA;
if(maze[y][x+1] == AKI)
findgoal(x+1,y);
if(maze[y+1][x] == AKI)
findgoal(x,y+1);
if(maze[y][x-1] == AKI)
findgoal(x-1,y);
if(maze[y-1][x] == AKI)
findgoal(x,y-1);
printf("I can not find goal.\n");
maze[y][x] = AKI;
これで再帰を使わないで関数findgoal()を書き換えるんです。
あれ、これって>708さんの言ってたことかな…
0724デフォルトの名無しさんNGNG
>708さんのアドバイスで何とか解けました。
あっざーす!
0725デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0726デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0727デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0728デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0729デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0730デフォルトの名無しさんNGNG
 「 \r 」ってどういうときに使うんですか?
色々調べたけど 「 復帰 」 としか書かれていなくて
肝心の説明がないので困っています。
0731デフォルトの名無しさんNGNG
>>725
鯖の調子が悪いときに投稿しまくりましたな。

>>730
試してみては?
0732デフォルトの名無しさんNGNG
> 今ポインタの勉強真っ只中なんですが、ポインタはよく難しいと言われますよね?

いいえ言われません。言うとしたらよくわかってないくせに知ったかぶりする人が言うだけでしょう。
実際、ちょー簡単です。
0733デフォルトの名無しさんNGNG
>>730
くるくる
0734デフォルトの名無しさんNGNG
>>730
すれ違いです
0735デフォルトの名無しさんNGNG
>723
のやつ、誰か木構造で出来るつわものの方いませんか?
0736デフォルトの名無しさんNGNG
>  「 \r 」ってどういうときに使うんですか?
> 色々調べたけど 「 復帰 」 としか書かれていなくて

ttyのキャリッジを左に戻すときに使います。

OS/9とかはこれ1つでテキストファイルの行の区切りでもありましたね。
0737デフォルトの名無しさんNGNG
>>736
片寄った知識ですね
0738デフォルトの名無しさんNGNG
>>698
アンタひょっとして群馬の大学に通ってないか?
いや念のためだ。
0739デフォルトの名無しさんNGNG
隣接した未踏座標をキューかスタックに突っ込めばいいだけ
0740デフォルトの名無しさんNGNG
>>730
端末の仕様による
0741デフォルトの名無しさんNGNG
端末とは限らないだろう。
0742デフォルトの名無しさんNGNG
整数aとbの値の交換を行うとき(a!=bです)に、
a ^= b ^= a ^= b というのは副作用の関係で良くないと聞きましたが、
a ^= ( b ^= ( a ^= b ) ) にすれば、
a ^= b, b ^= a, a ^= b と同じ動作を期待していいんでしょうか?
0743デフォルトの名無しさんNGNG
asm
{
 push a;
 push b;
 pop a;
 pop b;
}
0744デフォルトの名無しさんNGNG
そこまでして^を使いたがる理由が理解できない
0745デフォルトの名無しさんNGNG
聞かれたことに黙って答えろボケ
0746デフォルトの名無しさんNGNG
あっざーす!
0747デフォルトの名無しさんNGNG
>>742
1つの式の中で副作用を受けるオブジェクトが2度参照されているようだが
0748ぼるじょあ ◆yBEncckFOU NGNG
うっざーす!!
0749デフォルトの名無しさんNGNG
>>742
根本的に、優先順序と評価順序の区別がついていない。
括弧は優先順序を変更できるが、評価順序は変更できない。
a = b ^ ( c ^ d ) という式に関して
b と c^d とで ^ 演算が実行されることは、優先順序により保証される。
だけど、b,c*d の順番で評価されるか c*d,b の順で評価されるかはわからない。
0750デフォルトの名無しさんNGNG
#include<stdio.h>
#include<conio.h>

void main(void)
{
int ch = 'a' ;

_ungetch(ch);
_ungetch(ch);
_ungetch(ch);
_ungetch(ch);
}

次の読み込みを行う前に 2 回以上 _ungetch 関数を呼び出すとエラーとなります。
って書いてあるけどエラーが出ません。エラーの出し方教えてください。
0751デフォルトの名無しさんNGNG
>>750
戻り値
どちらの関数も、正常に終了すると文字 c を返します。エラーが発生すると、_ungetch は EOF を返し、_ungetwch は WEOF を返します。
って書いてあるだろ。
0752デフォルトの名無しさんNGNG
ホントだ! やっと意味がわかりました。ありがとうございました。
0753windows環境ですNGNG
別のプログラムを呼び出す際
そのプログラムの標準入出力を切り替えるには
どうしたらよいのでしょうか?

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

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

int main(void)
{
int check ;
while(!_kbhit()){
printf("loop\n") ;
}
fflush(stdin) ;
check = _getch() ;
printf("%d\n",check) ;

return 0 ;
}

fflushのところで、入力した値をクリアしてると思ったんですけど、
getchで取り出してみると、値が残ってます。この値をクリアしたいんですがどうすればいいんですか。
kbhit()で捕まえたこの値は、stdinじゃないとすれば、どこに存在するのでしょう?

0755デフォルトの名無しさんNGNG
>>754
Using fflush() for input streams especially the standard input stream (stdin)
is undefined and is not supported and will not flush the input buffer.
0756デフォルトの名無しさんNGNG
このプログラムはある系列(SEEDというグローバル変数)の[0,1]なる擬似一様乱数
を発生し表示するプログラムなんですけど、これを参考にして円周率πの値を計算
するモンテカルロシミュレーションのプログラムが作れません。教えてください。
よろしくお願いします!


#include<iostream>
#include<cstdlib>
#define SEED 100000

int main(int argc, char **argv)
{
unsigned int SEED;
unsigned int MAXNUM;

if(argc != 3){
cerr << "USAGE:uniform SEED MAXNUM\n";
exit(1);
}

SEED = atoi(argv[1]);
MAXNUM = atoi(argv[2]);
srand(SEED);
for(unsigned int i =1; i <= MAXNUM; i++){
double x = (double)rand() / (double)RAND_MAX;
cout << i << '\t' << x << '\n';
}
return(0);
}
0757デフォルトの名無しさんNGNG
スレ違い。
宿題スレ逝け
0758デフォルトの名無しさんNGNG
>753
新プロセスのIOを無名のパイプで繋げて、パイプの端を読み書きしてみろ。CreateProcess,CreatePipe,WriteFile,ReadFileを参照
0759デフォルトの名無しさんNGNG
>>725-729
ほとんどの参考書は知ったかぶりだという事ですね
0760デフォルトの名無しさんNGNG
>>759
難しいかどうかは、それを言う人の主観だから、第三者がどうこう言えることじゃない。
だけど、たかがあんなのでめげるようじゃ先が思いやられることだけは間違いない。
     ^^^^^^^^^^^^^^^^
参考書の筆者の話にすり替わりかけているが、騙されんじゃねえぞ。
0761デフォルトの名無しさんNGNG
初体験で失敗するとさ、インポになっちゃうんだよ。
だから優しく教えてくんなきゃイヤ。
0762デフォルトの名無しさんNGNG
つまり>>754は、なすすべ無しと言う事で?
0763デフォルトの名無しさんNGNG
>754
kbhitで食い潰すか、rewind呼ぶんだったかな。

BIOSなどのキーボードバッファに残る
0764デフォルトの名無しさんNGNG
ということは、ここに書いてあることは全部嘘なんですか?
http://www.matx.org/REFS/node84.htm
標準入力=stdin って思ってる、自分が間違ってんのかな?

rewindでも駄目でした。_flushallでも駄目でした。

そのBIOSなどのキーボードバッファにアクセスするには
どうしたらいいでしょう?
0765デフォルトの名無しさんNGNG
>>764
このスレで答える範囲内では無い。
0766デフォルトの名無しさんNGNG
rewindもfflushも、stdinで期待通りの動作をするのはVCだけ
0767デフォルトの名無しさんNGNG
>>765
では、どこのスレで質問すればよろしいのでしょう?

>>766
自分はVCで、期待通りの動作をしてくれないので質問してみました。
0768デフォルトの名無しさんNGNG
かなり変な環境じゃないのか。
ともかくキーが押されたら元に戻るまで待てばどうだ?
0769デフォルトの名無しさんNGNG
>>767
>1は読んだ?
0770デフォルトの名無しさんNGNG
とりあえず、環境依存スレへ。
というのは、元々kbhit()というのが、DOS(コマンドプロンプトじゃないよ)で
BIOSコールでキーボード状態を知るためのものだから。
同様に標準出力を用いずにBIOS等で入力/表示するのが、conio.hにある関数群。
互換性のために、Windows環境でも残されている。
そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。
0771デフォルトの名無しさんNGNG
キーボードバッファは間違いだった。失礼。

//キー押しが来るまで待つ
while(!_kbhit());
//キー押しが戻るまで待つ
while(_kbhit());
0772デフォルトの名無しさんNGNG
元に戻るまで待つとはどういう事ですか?
今確認してみたんですが、やはり駄目です。
やっぱりgetch()でクリアする以外方法はないんですかね?
皆様ならば、getch()の中身を調べて、どこにアクセスして値を取り出しているか、
とかわかると思ったんです。
0773772NGNG
早とちりレス失礼しました。

>>771
なるほど。どうも、レスありがとうございます。

>>770
どうして、そんな事がわかるんですか?
ヘルプ見てもそんな事は一言も書いてなかったです。

何にしても、よくわかりました。
本当にありがとうでした。
0774デフォルトの名無しさんNGNG
>>773
喧嘩売ってるとしか思えないな
氏ねや
0775デフォルトの名無しさんNGNG
相変わらず、バカが多いな
0776デフォルトの名無しさんNGNG
#defineを使って関数名の一部を変更したいんですが

#define aaa bbb
func_aaa();

のようにしてもfunc_bbb()にはなってくれません。
どうすればいいでしょうか?
0777デフォルトの名無しさんNGNG
#define func_aaa func_bbb
0778デフォルトの名無しさんNGNG
#define func_(x) func_##x
func_(aaa)() ;
じゃ不満かい?
0779デフォルトの名無しさんNGNG
> そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。

これ知ったかぶり。
前半はともかく、後半がデマ。
実際同時につかうことはよくある(いまでも)。DOSの時代もよく同時につかわれていた。
0780デフォルトの名無しさんNGNG
>>753
popen関数を使う。
0781デフォルトの名無しさんNGNG
>>779
同時に使用できない、或いは使用すると不都合がある関数はいくつもあるよね。
それをデマボーグと言うのは言いすぎだと思うけど。

#つーか、未だに使っているのか ┐(´・ω・`)┌
0782デフォルトの名無しさんNGNG
>>753
>1を読んだ上で、適当なスレへどうぞ。
【初心者歓迎】C/C++室 Ver.13【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1104843249/
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
http://pc5.2ch.net/test/read.cgi/tech/1098817686/
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
0783デフォルトの名無しさんNGNG
入力した文字列がekeyと一致した時にbreakさせたいのですが、
うまくいきません。どこに問題があるのでしょうか?

while (1) {
    fgets(text, 256, stdin);
    if ((strcmp(text, ekey)) == 0 )
        break;
    fprintf(fp, "%s", text);
}

/* char text[256];
char *ekey = "//end" */
0784デフォルトの名無しさんNGNG
>783
fgetsは改行文字'\n'も格納する
0785783NGNG
>>784
即レスありがとうございます、助かりました。
0786デフォルトの名無しさんNGNG
printfが何回呼ばれたかとかいう具合に、
どの関数が何回呼ばれたかわかる、又はそれに類似した関数って無いですか?
0787デフォルトの名無しさんNGNG
>786
static int c;
#define printf c++,printf
0788デフォルトの名無しさんNGNG
ない
0789デフォルトの名無しさんNGNG
>>786
関数全てにstaticなカウンタを設けないと。
0790デフォルトの名無しさんNGNG
>787
これ、ありがたく使わせていただきます。
0791デフォルトの名無しさんNGNG
DevPartnerStudio買えば、もれなく関数カウンタがついてきます
0792デフォルトの名無しさんNGNG
>790
コンパイラのオプションにクロスレファレンスがないか?
最適化時に結構使えるぞ
0793デフォルトの名無しさんNGNG
>>781
>デマボーグ

サイボーグの親戚か?
0794デフォルトの名無しさんNGNG
《ドイツ語》 Demagogie
0795デフォルトの名無しさんNGNG
> どの関数が何回呼ばれたかわかる

profilerを使え!
0796デフォルトの名無しさんNGNG
>>781
conio と stdio が連携してない時点でクソリブの烙印くれたい
0797デフォルトの名無しさんNGNG
左辺値ってなんですか?
変数のことですか?

*(int *)0
は左辺値ですか?
0798デフォルトの名無しさんNGNG
>>797
非定数のこと
変数も含む
0799デフォルトの名無しさんNGNG
>797
左辺値(lvalue)は、代入の左側に来る式のこと。
0800デフォルトの名無しさんNGNG
>*(int *)0
>は左辺値ですか?

びっくりするだろうけど、
これも左辺値だよ。
キャストで代入可能になったからね。
0801デフォルトの名無しさんNGNG
ageてる馬鹿がいるな
0802デフォルトの名無しさんNGNG

int a[10];

*(int *)a;
これは左辺値ですか?
0803デフォルトの名無しさんNGNG
ですよ。
0804デフォルトの名無しさんNGNG
つまり代入可能型にキャストすれば何でも左辺値ですか?
0805デフォルトの名無しさんNGNG
int i;

(int)i = 1;

これは左辺値ではありません。
0806デフォルトの名無しさんNGNG
-2["hoge"+3]
は左辺値ですか?
0807デフォルトの名無しさんNGNG
>>804
その通りです。
左辺値は変数だけとは限りません。

enum {
FALSE, TRUE
};

*(int *)FALSE = 1;

これも左辺値です。
0808デフォルトの名無しさんNGNG
>>806
それも左辺値です。
0809デフォルトの名無しさんNGNG
*(int *)"ぬるぽ"

これも左辺値ですか?
0810806NGNG
>>808
ほんとに〜?
0811デフォルトの名無しさんNGNG
>>806は左辺値じゃないだろ
0812デフォルトの名無しさんNGNG
あ、>>806は文字列定数"hoge"が式に継承されるので
左辺値ではないです。

*(int *)-2["hoge"+3]
などとすれば左辺値になります。


>>810
嘘でした。
0813デフォルトの名無しさんNGNG
char muha[] = "hello, world!";
-2[muha+3]
なら左辺値ですか?
0814デフォルトの名無しさんNGNG
>>813
単項の'-'が最後に入るので左辺値にはならないよ。

交換法則を適用しても

-(muha+3)[-2]

という意味なので。
0815デフォルトの名無しさんNGNG
> conio と stdio が連携してない時点でクソリブの烙印くれたい

連携してたらこまるだろ! ぼけ
連携してないから同時に使えるんだよ
0816デフォルトの名無しさんNGNG
-(muha+3)[2]
だった。
0817デフォルトの名無しさんNGNG
>あ、>>806は文字列定数"hoge"が式に継承されるので

というのも嘘でした。
int x;
-x
が左辺値じゃないのと同じ理由です。
0818デフォルトの名無しさんNGNG
>>815
連携の意味が通じてないらしいな
頭悪スレで吠えてろ
0819デフォルトの名無しさんNGNG
よくわかりました。
ありがとうございました。
0820デフォルトの名無しさんNGNG
ここって回答者何人で回してますか?
点呼してください。
0821デフォルトの名無しさんNGNG
>820
ごめんごめん、パパの言い方が悪かった、だから良い子にしててね
0822デフォルトの名無しさんNGNG
>>778
レスありがとうございます。

func_aaa()
fooo_aaa()
hoge_aaa()

という形の関数がかなりの数あって、それを

#define aaa bbb

で一度に置き換えたいと思ったんですが、
こういうことは無理ですか?
0823デフォルトの名無しさんNGNG
テキストエディタで置換
0824デフォルトの名無しさんNGNG
818は連携の意味もわからないぼけ
0825デフォルトの名無しさんNGNG
>>822
無理ですか?なんて言っている暇があったら、
もうチョット頭を使ったプログラムを作れ。
0826デフォルトの名無しさんNGNG
>>824
器の小ささを露呈してろ
0827デフォルトの名無しさんNGNG
現在libjpegを使用したいと考え、IJGからlibjpegのソースを
ダウンロードしてきました。VC++用に、Makefile.vsと
jconfig.vsをそれぞれ、Makefile とjconfig.hに名前を変更して、
VC++上でメイクファイルプロジェクトを作成してlibjpeg.libを作成しました。
しかし、このlibjpeg.libを他のプロジェクトでリンクしても
関数名が見つからず、エラーLINK2019になってしまいます。
このライブラリをVC++で使用するために行うことがあればどなたかご教授
願えれば幸いです。
0828デフォルトの名無しさんNGNG
>>827
スレ違い
0829デフォルトの名無しさんNGNG
>>827
extern "C"
0830デフォルトの名無しさんNGNG
ぼけの人は左辺値当てクイズには怖くて参加できなかった模様
0831デフォルトの名無しさんNGNG
hogeの人は左遷手当てクイズには怖くて答えられなかった仕様
0832デフォルトの名無しさんNGNG
みなさんは、インクルードファイル行の管理をどのようにしているのでしょうか?
たとえば、isalpha()を使うために

#include <ctype.h> /* isalpha() */

をソースに追加したとします。
ソースをいろいろいじっているうちに、最終的にisalpha()が消えたとき、
この#include <ctype.h>を消し忘れるのでは?と不安になります。
0833デフォルトの名無しさんNGNG
そういうツールなかったっけ?
ソースファイル内で全く使われていないヘッダとの関連を指摘してくれるような
0834デフォルトの名無しさんNGNG
>832
貴様の作業記憶に残っているはずだろ
0835デフォルトの名無しさんNGNG
>>832
気がついたら消す。厳密にはそこらへんやってないけど
標準ライブラリのヘッダをインクルードするしないで挙動が変わる糞コードを書かなきゃ無問題。
0836デフォルトの名無しさんNGNG
消し忘れて不都合ってあるの?>ALL
0837デフォルトの名無しさんNGNG
ないでしょ
あっても使わなければ無視されるし
0838デフォルトの名無しさんNGNG
>836
うかつな環境だと実行形式のサイズが大きくなるものがあるかも
0839デフォルトの名無しさんNGNG
>>832
isalphaを使わずに、isprintが使われるようになったかもしれない。
0840デフォルトの名無しさんNGNG
locale.h内のstruct lconv構造体について質問なんですが、
lcは、localeの略ですよね
onvの部分は何の略なんでしょうか?
0841デフォルトの名無しさんNGNG
orzの訛ったもの。
0842デフォルトの名無しさんNGNG
lがlocale
convがコンバート
0843デフォルトの名無しさんNGNG
>>823
base.h
func_aaa()
fooo_aaa()
hoge_aaa()

#define aaa bbb
#include "base.h"
#define aaa ccc
#include "base.h"

こういう風に使いたいんです。
エディタで置換すると類似コードが増えて保守が難しくなりますよね。
0844840NGNG
>>842
(ノ∀`)アチャー 
そうでしたか

LC_ALLとかLC_COLLATEとかあるから、てっきりlcとonvが分離しているものかと
でもonvで始まる適当な単語が見つからず困っていました
ありがとうございました
0845デフォルトの名無しさんNGNG
>>843
だから>>778の形にエディタで置換すればいいじゃないか
0846デフォルトの名無しさんNGNG
もうひとつだけ教えてください。
p_cs_precedes関数のcsは、classificationの略なんでしょうか?
classificationは、分類という意味です。
0847デフォルトの名無しさんNGNG
Currency symbolじゃないの?
0848デフォルトの名無しさんNGNG
ググッて見た

char p_cs_precedes

負でない通貨量に対して、 currency_symbol または int_curr_symbol が
前に付くか後ろに付くかによって、それぞれ1または0にセットします。
0849デフォルトの名無しさんNGNG
>>847
ああ・・・
ふたつの単語くっつけてたんだ
csで始まる適当な単語が見つからなかったからなー
p_sep_by_spaceがseparateを略していたから、ひとつの単語を略しているのかなーと思っていたんだがOTL
0850デフォルトの名無しさんNGNG
>エディタで置換すると類似コードが増えて保守が難しくなりますよね。

意味不明
aaa.h
bbb.h
ccc.h
ってしたほうが百万倍保守しやすいが?
0851デフォルトの名無しさんNGNG
根本的に設計が間違ってる悪寒
関数名だけ変えたって中身は同じだったら、何の意味が…
0852デフォルトの名無しさんNGNG
>中身は同じ

おそらく違う
0853デフォルトの名無しさんNGNG
>>845
base.hの関数が多い場合エディタで置換すると

#define func_aaa func_bbb
#define fooo_aaa fooo_bbb
#define foge_aaa foge_bbb
#define fero_aaa fero_bbb
#include "base.h"
#define func_aaa func_ccc
#define fooo_aaa fooo_ccc
#define foge_aaa foge_ccc
#define fero_aaa fero_ccc
#include "base.h"

という風になって、類似コードが増えて保守が難しくなると
いう問題は解決しないように思います。

>>850
aaa.h
bbb.h
ccc.h

とするとそれぞれのファイルに

func_aaa
func_bbb
func_ccc

の関数があってひとつ修正すると残り2つも同じように
修正しないといけなくなります。
0854デフォルトの名無しさんNGNG
>ひとつ修正すると残り2つも同じように修正しないといけなくなります

すればいいやん
0855デフォルトの名無しさんNGNG
>>853

別に同じようなヘッダが複数でなくとも、
プロトタイプと関数の実態定義が別々になってるだけで
追加と削除でいちいち2カ所の修正が手動になるよな
これは統合環境で自動管理できる場合もある

もし統合環境がサポートしない自動管理が必要になったら
そういうツールを自分で作ってはどうかな
0856デフォルトの名無しさんNGNG
>ひとつ修正すると残り2つも同じように修正しないといけなくなります

しなくてもいいやん
0857デフォルトの名無しさんNGNG
>>853
何をやりたいのかいまいち伝わってこないんだけど、
関数ポインタを含んだ構造体でも作れば解決しそうな予感。
0858853NGNG
C++のSTLもどきを作ろうとしてました。

vector.h
typedef struct _vector_typename
{
typename *ptr;
size_t size;
size_t reserve;

}vector_typename;

vector_typename* vector_typename_create(size_t size);
void vector_typename_destroy(vector_typename *p);
void vector_typename_size(vector_typename *p, size_t size);

main.c
#define typename char
#include "vector.h"

のように使えないものかと考えてたんですが...。
0859デフォルトの名無しさんNGNG
C言語でpgm形式の画像処理(配列を使った)の宿題を出されました。

ttp://robotics.me.es.osaka-u.ac.jp/~masutani/Jouki2001/Kadai/kadai3.html

ここにある、波紋やn度の回転のアルゴリズムを参考にやってみたのですが、うまくいきませんでした。
どのようにやればうまくいくのか誰か教えてください。あと、なんか、面白い画像処理のアルゴリズム
があったら教えてください。
0860デフォルトの名無しさんNGNG
>>859
goto 宿題スレ;
0861デフォルトの名無しさんNGNG
二乗のときは^2とすればいいのですけど、2進数とかを表すときにつける2は
どのように表示したらいいですか?
0862デフォルトの名無しさんNGNG
>>858
create/destroy/sizeの関数を vectorライブラリに渡して
ライブラリ中からそれらの関数を呼ぶ形にするのが定石かな。

そうしておけば名前が変わっても(関数のインタフェースが変わらない限り)
問題ないし。
0863デフォルトの名無しさんNGNG
>858

でも本体の方ではそれぞれ定義してんだろ?
だったら .h に切り出してもさほど労力に違いがあるとは思えない
0864デフォルトの名無しさんNGNG
>>861
^2は2進数の00000000000000000000000000000010とのビット単位での排他的論理和
Cには2進数表記はない(欲しいけど)
0865デフォルトの名無しさんNGNG
16進あれば十分だろ
16進表示を見て頭に01の羅列が思い浮かぶし
0866デフォルトの名無しさんNGNG
8進も使ってるけど
0867デフォルトの名無しさんNGNG
ttp://jp.thespoke.net/MessageBoard/MessageBoard_ViewThread.aspx?postid=486

あの似顔絵ウィザードも含めて、HomeStyle+ って
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.NET Framework で書かれてるんですね。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
逆アセンブルしてみたら気づきました・・・・。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ああいうのを作品に組み込むのも面白いかも(笑)

MSの製品を逆汗するような奴をMSはMVPに選んでいるんです。MSは逆汗を認めていると
0868デフォルトの名無しさんNGNG
> ^2は2進数の00000000000000000000000000000010とのビット単位での排他的論理和

こいつぼけ。intが32bitである保証はどこにもない。
0869デフォルトの名無しさんNGNG
排他的論理輪って何ですか?
0870デフォルトの名無しさんNGNG
Exclusive OR のこと
0871デフォルトの名無しさんNGNG
0 xor 0 == 1 xor 1 == 0
0 xor 1 == 1 xor 0 == 1
なる二項演算子xorを排他的論理和と言う。
0872デフォルトの名無しさんNGNG
棒の左端にハエがとまっているときに、これをたたいてやっつけられるのは1匹である。
右端にいる場合も同様。でも、棒の両端にハエがとまっているときには、結局両方逃げて
しまいやっつけられるのは0匹である。また、棒のどちらの端にもハエがいないときには
あきらかに0匹。
0873デフォルトの名無しさんNGNG
ろんりろん?ばか?
0874デフォルトの名無しさんNGNG
これをハエタタキ論理輪という [民明書房刊: 中国4000年のブール代数]
0875デフォルトの名無しさんNGNG
「和」とかきかたかったんだろ
0876デフォルトの名無しさんNGNG
>>868
誰か食いつくと思ったが
お前だったか・・・ 落 ち ぶ れ た な
0877デフォルトの名無しさんNGNG
>>873
ろんりろん?ばか?
0878デフォルトの名無しさんNGNG
「ろんりりん」とかきたかったんだろ
0879デフォルトの名無しさんNGNG
>>872
その例えは初めて見たな…
俺は「繰り上がりを無視する足し算」と覚えたけど

0 xor 1→0+1 = 1
1 xor 0→1+0 = 1
0 xor 0→0+0 = 0
1 xor 1→1+1 = 0 (繰り上がった1は無視)
0880デフォルトの名無しさんNGNG
879はかなりの知ったかぶりのぼけ

XORの場合は「繰り上がる」わけじゃあない。

そういういいかげんなことを言うから、新人がウソを信じちゃうんだよ。
0881デフォルトの名無しさんNGNG
誰かポーカー作って
0882デフォルトの名無しさんNGNG
>>880
>と覚えたけど

いい加減もくそもねえだろ
必死すぎる姿が滑稽だぞ
0883デフォルトの名無しさんNGNG
> その例えは初めて見たな…

たとえなわけねーだろ...ネタだよ! 有名な。

背理法の歌と同じぐらい古いネタだ。
0884デフォルトの名無しさんNGNG
>>880
覚え方の問題で別に事実がどうかには言及してないだろ

って書こうと思ったら>>882に先を越された_| ̄|○
0885デフォルトの名無しさんNGNG
>>882
ごまかし方が必死だな
0886デフォルトの名無しさんNGNG
>>885
は?
0887デフォルトの名無しさんNGNG
今日もまたキモイ流れだな
0888デフォルトの名無しさんNGNG
質問者がいないとネタしか出なくなるのは前からだろ
0889デフォルトの名無しさんNGNG
>>886
ひっしだな
0890デフォルトの名無しさんNGNG
はいたたき論理和はC++でもできますか?
0891デフォルトの名無しさんNGNG
>>862
typenameをcharやintなどに置き換えると構造体の中のポインターの型が
変わるので、各関数の引数と戻り値の型も変わってしまい
関数のインタフェースも変わることになります。

>>863
本体の方もこんなかんじで使えないかなと思ってました。

#define typename char
#include "vector.h"
#include "vector.c"
0892デフォルトの名無しさんNGNG
>>889
ふふふ
0893デフォルトの名無しさんNGNG
>>891
voidって知らない?
0894デフォルトの名無しさんNGNG
日下部?
0895デフォルトの名無しさんNGNG
void *ならともかく
voidつかっても解決しないだろ? > 893
0896デフォルトの名無しさんNGNG
そこまでしてC++使いたくないならCを拡張してそれ用のトランスレータ書けばいいのに。
0897デフォルトの名無しさんNGNG
パンが無いならお菓子を食べればいいのに
0898デフォルトの名無しさんNGNG
それは有名な誤訳 > 897
0899デフォルトの名無しさんNGNG
プログラムで割り切れる(あまりがでない)っていうのはどういうふうに
書きますか?例えばiが12で割り切れる場合とかは?
0900デフォルトの名無しさんNGNG
%
0901デフォルトの名無しさんNGNG
>>900
i%12でいいんですか?
0902デフォルトの名無しさんNGNG
はい
0903デフォルトの名無しさんNGNG
>>902
実行してみたらうまくいきません。
もしiが12で割り切れるならこの処理をするっていうのは
if(i%12){
}
でいいんですか?
0904デフォルトの名無しさんNGNG
これが噂のゆとり教育でつか
0905デフォルトの名無しさんNGNG
>>903
iが12で割りきれる数だったとして、i%12はどうなるか考えてみよう。

if (exp) {
 foo;
}
があったとして、fooに到達できるのはexpがどのような値であればよいのか考えてみよう。

これら二つの結果を総合して、問題を解決してみよう。

# てかきくまえによく考えてみろよな…
0906デフォルトの名無しさんNGNG
ようは902が「ウソつき」なだけだな。
0907デフォルトの名無しさんNGNG
#define ifnot(expr) if(!(expr))
を使えばいいんだよ
0908デフォルトの名無しさんNGNG
fpから文字列を読み込む自作関数readtext内でfgetsがNULLを返した時に
main関数に戻るようにしたいのですが、なんと書けばよいのでしょうか?

void readtext(FILE *fp, char **text1)
{
char buf[256];

if (fgets(buf, 256, fp) == NULL)
/* ここにはなんと書けばよいでしょう? */;
buf[strlen(buf) - 1] = '\0';
*text1 = malloc(sizeof(char) * (strlen(buf) + 1));
strcpy(*text1, buf);
}



0909デフォルトの名無しさんNGNG
return
0910デフォルトの名無しさんNGNG
return; else {

で、mallocがNULLを返したときはみてあげないのね ;-)
0911908NGNG
>>909
すいません、何をリターンすれば良いでしょうか?
いくつか試したのですが、実行エラーになってしまって・・・
0912908NGNG
>>910
return; else {
でも実行エラーになってしまい戻れません^^;
何か他にも記述するものがあるのでしょうか?
お手数をかけますが、よろしくお願いします・・
0913デフォルトの名無しさんNGNG
>912
elseの前の{ }が閉じてない文法エラー。
0914デフォルトの名無しさんNGNG
elseはいらんだろ
return;
だけでいい
0915908NGNG
>>913
一応↓のようにしまして、コンパイルは問題ないようです。
ただ、実行するとreturnのとこでやはりエラー終了してしまいまして・・。

void readtext(FILE *fp, char **text1)
{
char buf[256];

if (fgets(buf, 256, fp) == NULL)
return;
else {
buf[strlen(buf) - 1] = '\0';
*text1 = malloc(sizeof(char) * (strlen(buf) + 1));
strcpy(*text1, buf);
}
}
0916デフォルトの名無しさんNGNG
自分で教科書も関数ヘルプも見れないヤツは教えがいがない
0917デフォルトの名無しさんNGNG
fopenのNULLチェックさえしてないのかー ぼけすぎ
0918デフォルトの名無しさんNGNG
chhar *readtext(FILE *fp)
{
  char buf[256];

  if (fgets(buf, 256, fp) != NULL)
    return strdup(buf);
}

こう書くのがふつう。第2引数はまぬけ
0919デフォルトの名無しさんNGNG
あ、まつびにreturn NULLわすれた。
むしろこうだな。
char *readtext(FILE *fp)
{
  char buf[256];

  if (fgets(buf, 256, fp) == NULL)
    return NULL;
  return strdup(buf);
}
0920デフォルトの名無しさんNGNG
>char buf[256];
>return strdup(buf);
・・・
0921デフォルトの名無しさんNGNG
なにか問題があるとおもった920は超まぬけ
0922908NGNG
>>919
ありがとうございます。
そうですか・・・、そうなるとmallocは同じ関数内では処理できないのですね。
できれば一緒に処理したかったのですが・・

>>917
main関数内ではしているのですが・・引数として渡した先の関数内でも
fopenするのですか???
0923デフォルトの名無しさんNGNG
寧ろfgets()の第二引き数がボケ。
ついでに言えば>917もボケ。
更にsizeof(char)もボケ。
おまけにエラーの内容を書かない>908が一番のボケ。
0924デフォルトの名無しさんNGNG
てs
0925デフォルトの名無しさんNGNG
標準にないstrdupを使わせるのもボケ
0926デフォルトの名無しさんNGNG
>>923-925
じゃぁおまいが答えろヤ、ボケ
0927デフォルトの名無しさんNGNG
fopenに関して質問です。

for文の中で
test0.txt , test1.txt , ・・・ test99.txt , test100.txt
の0〜100の部分を変数としてfopenで呼び出したいのですが
どのようにしたらよいのでしょうか?

0928デフォルトの名無しさんNGNG
sprintf
0929デフォルトの名無しさんNGNG
>>927

#include <stdio.h>
#include <string.h>
...
char fname[MAX];
char s[MAX];
int i;

for(i=0; i<100; i++){
strcpy(fname, "test");
sprintf(s, "%d", i);
strcat(fname, s);
strcat(fname, ".txt");
fp = fopen(fname, ...

0930デフォルトの名無しさんNGNG
>>929
いくらなんでもおバカすぎ。"test%d.txt"
0931デフォルトの名無しさんNGNG
>>927
sprintf
0932デフォルトの名無しさんNGNG
>>930 最初の一文はいらないだろ。
0933デフォルトの名無しさんNGNG
要るよ。
あまりにもセンスのないやり方を、初心者が「これが普通だ」と思うようになったら困る。
ある程度慣れてきたら、strcatなど殆ど使わなくなる。

大方他言語から移ってきて、「文字列の連結はstrcatで」と覚え込んだんだろうけど。
0934デフォルトの名無しさんNGNG
>>932
sprintf() のみで書ける処理を、
わざわざ strcpy() や strcat() と組み合わせるなんて、
どう考えても馬鹿過ぎだろう。
0935デフォルトの名無しさんNGNG
CC 彼女のおっぱい
0936デフォルトの名無しさんNGNG
(( ほんとの彼女のおっぱい
0937デフォルトの名無しさんNGNG
|| 彼女のおっぱい
0938デフォルトの名無しさんNGNG
) )おれのおっぱい
0939デフォルトの名無しさんNGNG
              /  /     /   |      \ ヽ
               / /  /   / /    ||  |  i  ヽ i
              i /  / /  / / /    ||  ||  |│ |ノス
               |//  / /___, -一ァ|  /! |ト、|│ | | く」
                |,-‐¬  ̄---┘'7 |!  ハ! |,、-┼十|! | | |
          , -‐ ''"  し' '´_ /,ィ二l |ト、/!ヽト、\_ヽ!|!l | ハ |
       ,r/      __   ,イ|リ ヾハ! ヽ!  ,ィ⌒ヾミリノ!/リ  |
      / ||ヽ  -'     / ̄ )` __      |ヒノ:} '` ,イ/ |  |
    ,r '   ヾ、  ,-、____ , イ ̄,r==-      ==-'  レ' /|  |
  / ヽ    `ーソ  ' | |ト、,ヘ ′""          "" / / || |
. /    \_  /  | ハ ヽ`゛'ヘ       ' '__. ィ  / / | |  |
           /   / / |  ヽ 川\    ヾ三ニ‐'′//! |  | |  |    童貞諸君、乙であります
        /    / / 八  \川| |`ト- ..  __ , イ‐ァヘ |  | ||  |!
      /    / / /  \  \ 「`ー- 、    /  .〉  ト、|  ヽ、
     ,イ    /-─=¬ニヘ、_  \   厂\ 厂ヽ /!|   | `ー=ヘ
 -‐  ̄ /─ '  ̄     ├- ヽ\  \ノ\ \ 人 ハ!ヽ ||  |-┤ ヽ
      /          /!‐-- | |\   ト、_`ヽ oヽ  ト、!  ||  |‐┤- ヽ
  // 〉      __ /  ├‐-  ||  | 川-‐  | |  厂7! ハ!  ├:┤  ̄ヽ
  / / ー ─    ̄       ├‐- リ  || ハ!ヘ   | |  ト┤|/′ ヾ,┤   ゛i_
  ‐ '              〉‐-    | / /\ .|o | /ヽ/(′    ∨     \
‐--─ ──-r、___-、    /ー_     {(   '´>、! /ヽ/       |\       \
0940デフォルトの名無しさんNGNG
法廷では静粛に!
0941デフォルトの名無しさんNGNG
>>938
ヨヨ お前のおっぱい
0942デフォルトの名無しさんNGNG
JJ おかんのおっぱい
0943デフォルトの名無しさんNGNG
#include <stdlib.h>

main()
{
inta,b,c,d,e,f,g;

c=a+b;
d=a-b;
e=a*b;
f=a/b;

printf("+ 0 , - 1 , * 2 , / 3 \n");
printf("演算子番号入力⇒");
scanf("%d",g);
getchar();
0944943NGNG
switch( g )
{
case 0:
printf("\n + 演算子より左側を入力⇒");
scanf("%d",a);
getchar();
printf("\n + 演算子より右側を入力⇒");
scanf("%d",b);
getchar();
printf("計算結果⇒ %d ",c);
break;
case 1:
printf("\n - 演算子より左側を入力⇒");
scanf("%d",a);
getchar();
printf("\n - 演算子より右側を入力⇒");
scanf("%d",b);
getchar();
printf("計算結果⇒ %d ",d);
break;

0945デフォルトの名無しさんNGNG
case 2:
printf("\n * 演算子より左側を入力⇒");
scanf("%d",a);
getchar();
printf("\n * 演算子より右側を入力⇒");
scanf("%d",b);
getchar();
printf("計算結果⇒ %d ",e);
break;
case 3:
printf("\n / 演算子より左側を入力⇒");
scanf("%d",a);
getchar();
printf("\n / 演算子より右側を入力⇒");
scanf("%d",b);
getchar();
printf("計算結果⇒ %d ",f);
break;
}
return 0;
}


昨日Cをやり始めました。
で、簡易電卓的なモノを作ったのですが、当然の如く動きません(´・ω・`)
一番上のprintfで演算子番号を入力、のところで番号を入力しエンターを押すと強制終了されちゃいます。
その後のswitchでcaseの指定に飛びたいのですが、どうやるのかご教授お願いします。
#include <time.h>とかは適当です(´・ω・`)
0946デフォルトの名無しさんNGNG
HSP以外でプログラミングしたくありません
0947デフォルトの名無しさんNGNG
>>943
あなたはここで質問するレベルですらありません。
少しは勉強してから質問しましょう。
0948デフォルトの名無しさんNGNG
>943-946
scanfの使い方間違い。
同じ機能は関数でまとめろ。
0949デフォルトの名無しさんNGNG
>>946
じゃ、HSP以外使わなきゃいいだろ
0950デフォルトの名無しさんNGNG
>>933
パースする余裕が無い。
0951943NGNG
>>947
こんな微妙なプログラムを組む人なんて滅多に居ないから、
参考にするモノが無くてどこがおかしいのか分からないのです。
5 + 5 はできても 5 + 5 + 5 は出来ない…。

>>948
こうでしょうか?

case 0:
printf("\n半角スペースで区切り演算子より左側、右側をそれぞれ入力してください。");
scanf("%d %d",a,b);
getchar();
printf("計算結果⇒ %c ",c);
break;

でもやっぱりエラーが出たりします…orz
0952デフォルトの名無しさんNGNG
>>951
>こんな微妙なプログラムを組む人なんて滅多に居ないから、
>参考にするモノが無くてどこがおかしいのか分からないのです。

>>947 は、それ以前の問題と言ってるんだろ。
基礎知識をしっかり学んでからにしろ、と。
0953デフォルトの名無しさんNGNG
>951
再帰や計算木を知らないんだろ?
0954デフォルトの名無しさんNGNG
宿題スレが二つあるのと一緒だ。激しく無駄だ
0955デフォルトの名無しさんNGNG
Linuxもスタックも何もかも知らないで純粋なCで稼げる訳ないだろう。まともな解説本読んで勉強するんだ。授業も受けて単位取れば大卒になれる。適度に頑張れ。
0956デフォルトの名無しさんNGNG
>>955
何故、そこで Linux が出る?
0957デフォルトの名無しさんNGNG
学校で課題が出て困ってます。
スロットマシーンを作るプログラムです。
・数字+Enterキーの入力をきっかけに乱数を発生し、0 から 9 までの数値を形成する
・これを三回繰り返し、得られた数字の並び方で点数を付ける
・三回とも同じなら 10 点、二個同じなら 2 点、並び順なら 5 点を与える
・これを十回繰り返して、合計を表示する
このプログラムできる方は教えて下さい!宜しくお願いします!
0958デフォルトの名無しさんNGNG
>>957
激しくスレ違い
0959デフォルトの名無しさんNGNG
ごめんなさい
0960デフォルトの名無しさんNGNG
>>943
変数名は適当につけるな。
#include <stdlib.h>
#include <stdio.h>
main()
{
  int OperandLeft, OperandRight, Result, Operator;
  printf("演算子番号入力⇒");
  scanf("%d", &Operator);
  printf("\n演算子より左側を入力⇒");
  scanf("%d", &OperandLeft);
  printf("\n演算子より右側を入力⇒");
  scanf("%d", &OperandRight);
  switch (Operator)
  {
  case 0:
    Result = OperandLeft + OperandRight;
    break;
  case 1:
    Result = OperandLeft - OperandRight;
    break;
  case 2:
    Result = OperandLeft * OperandRight;
    break;
  case 3:
    Result = OperandLeft / OperandRight;
    break;
  }
  printf("計算結果⇒ %d\n", Result);
}
0961デフォルトの名無しさんNGNG
こんばんわ。
学校の課題がわかりません。教えてください
3で割り切れる数値が表示できません。
0962デフォルトの名無しさんNGNG
>>961
しね。

#include <stdio.h>
main(){
  int i = 0;
  while (1) {
    printf("%d\n", i * 3);
    i++;
  }
}
0963デフォルトの名無しさんNGNG
>>962
いぢめちゃだめだよぉ〜
0964デフォルトの名無しさんNGNG
>>962
おまえもしね。
main() { auto i = 0; while(!0) printf(" %d", i++ * 3); }
0965デフォルトの名無しさんNGNG
数万の数値が入っているバイナリファイルを読み出して、
ソート後にtxtファイルに書き出すプログラムを作っています。

double a[200000];

i=0;
while(1==fread(&a[i],sizeof(double),1,fp)){
i++;
}
n=i;

で読み出しなさいとのことなんですが、
どのように配列に格納してやればいいんでしょうか・・・
0966デフォルトの名無しさんNGNG
>>965
>どのように配列に格納してやればいいんでしょうか・・・

そのように。
0967デフォルトの名無しさんNGNG
>>966
FILE *fp;
double a[200000];
while(1==fread(&a[i],sizeof(double),1,fp)){ ←この行でしょうか

どのような操作が行われているのかよくわかりません。。。
0968デフォルトの名無しさんNGNG
>>967
疑問を抱いたら、まず調べてみる。

ホモサピエンスとして
ごく当たり前の行動も取れないのか?
0969デフォルトの名無しさんNGNG
>>967
あっそう。
0970デフォルトの名無しさんNGNG
調べようがなくて来たんです・・・
while(☆)
☆部分が調べてもよくわからなくて・・・
0971デフォルトの名無しさんNGNG
☆部分には判定する式が入ることはわかっているんですが
今回どのような条件に関して判定しているのかわからないんです
0972デフォルトの名無しさんNGNG
>>970
あなたのその質問に答えることはできません
自力で調べてください

あなたはそんな基礎の基礎レベルの疑問が出てくるたびに
ここで質問する気ですか?
0973デフォルトの名無しさんNGNG
ぬるぽ
0974デフォルトの名無しさんNGNG
>>973
ガッ
0975デフォルトの名無しさんNGNG
>>970=967
fread でググレ
0976デフォルトの名無しさんNGNG
以下の関数を作って、計算させてください。
配列の中で最大値を返す関数  int dataMax(int a[], int b){}
配列の中で最小値を返す関数  int datamin(int a[], int b){]
 
プログラム参考例(これを拡張してください。素人で全然分かりません。
#include<stdio.h>
void main(void){
int i; float a[5];
dataSet(a,5);
printf("Max=%d",dataMax(a,5));
printf("Min=%d",dataMin(a,5));
}
です。助けてください。
0977デフォルトの名無しさんNGNG
>>976
>以下の関数を作って、計算させてください。

どうぞ、ご自由に計算して下さい。
0978デフォルトの名無しさんNGNG
丁寧な人だね。計算するのに一々許可取らなくてもいいよ。
0979デフォルトの名無しさんNGNG
>>976
素人じゃない人にこんな出題したら怒りそう
0980デフォルトの名無しさんNGNG
976
計算するプログラムを作ってください。
です。失礼しました。
0981デフォルトの名無しさんNGNG
>>980
スレ違い

後、基礎を勉強して宿題は自分で解け。
0982デフォルトの名無しさんNGNG
ぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
へどうぞ
0983デフォルトの名無しさんNGNG
わかる気がないとき
・一般教養科目 ⇒ 二度と出席せず、他の科目を頑張る
・専攻科目 ⇒ 父親に土下座
0984デフォルトの名無しさんNGNG
初心者を叩いて優越感に浸って、日ごろのストレスを発散させる目的で来ている人達は、退散してもらえませんか?
0985デフォルトの名無しさんNGNG
>>980
C の前に、もう一度日本語を勉強しなおした方がいいよ。
0986デフォルトの名無しさんNGNG
>>984
初心者を名乗って、自分で努力しようともしない奴よりマシだろ。
0987デフォルトの名無しさんNGNG
int dataMax(int a[], int b){ return b==1||a[0]>dataMax(a+1,b-1)?a[0]:dataMax(a+1,b-1);}

てきとーに書いてみたけど動くんかしらん
0988デフォルトの名無しさんNGNG
ていうかintで返すんならfloatを使う意味がないだろうに。
あれ、引数もint?
0989デフォルトの名無しさんNGNG
>>984
「初心者」は2種類いるんだよ
0990デフォルトの名無しさんNGNG
有難うございます。参考書とか読んでも本当に分かんないんです。
ごめんなさい
0991デフォルトの名無しさんNGNG
>>962
ありがとうございました。助かりました。
0992デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1105454700/
0993デフォルトの名無しさんNGNG
簡単な計算ソフトってどんなプログラムかけばできるんですか。
0994デフォルトの名無しさんNGNG
>>792
マルチ乙。
0995デフォルトの名無しさんNGNG
>>990
あんた誰?
0996デフォルトの名無しさんNGNG
デフォルトの名無しさん
0997デフォルトの名無しさんNGNG
定義と宣言の違いを説明せよ
0998デフォルトの名無しさんNGNG
それを説明するにはスペースが足りない。
0999デフォルトの名無しさんNGNG
990=976
です。


1000デフォルトの名無しさんNGNG
>>984
まったくだ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。