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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
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/
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
立てたくて仕方の無い年頃、か。
0004デフォルトの名無しさんNGNG
姉妹スレ

C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100951565/

C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
0005デフォルトの名無しさんNGNG
自分じゃ何もせずに愚痴言うだけの >>3 よりはまし。
0006デフォルトの名無しさんNGNG
>>5
いや、スレ立てをソフト開発か何かと勘違いしてないか?
継続スレのスレ立てぐらい、ホスト制限さえ無ければ誰でも立てられるが。
0007デフォルトの名無しさんNGNG
>>3==池沼
00083NGNG
川本です。
0009デフォルトの名無しさんNGNG
石橋です
木梨です
とんねるずです
この歌をいただいて
初めて演歌の心を知りました・・・
0010デフォルトの名無しさんNGNG
C言語の質問ではないのですが、
ビープ音を使って人が話しているような音を出す事ってできるのでしょうか?
0011デフォルトの名無しさんNGNG
妄想力による。
0012デフォルトの名無しさんNGNG
>>10
8bit機全盛の時代にそんなのあったな
F-BASIC に TALK コマンドを新設するソフト
「さんだ〜ふぉ〜す」も有名
karateka の主人公は come on ! と叫ぶし
0013デフォルトの名無しさんNGNG
>>10
喧嘩売っているの?
0014デフォルトの名無しさんNGNG
>>6
スレを「立てた」「立てなかった」の問題であって、
「立てられる」「立てられない」の問題ではないだろ。

いつもその調子で論理のすり替えやってんの?
0015デフォルトの名無しさんNGNG
スレ立て如きに何もしないの愚痴だの言うのがおかしいって
0016デフォルトの名無しさんNGNG
とりあえず下の二つを埋めてからこっちを使いませんか。

http://pc5.2ch.net/test/read.cgi/tech/1100951565/
http://pc5.2ch.net/test/read.cgi/tech/1101615970/
0017デフォルトの名無しさんNGNG
埋め厨が来るまでそのまま放置しとけばいいでしょ。
0018デフォルトの名無しさんNGNG
次スレが立ったら即移動しなきゃいけないわけではないからなぁ。
0019デフォルトの名無しさんNGNG
教えてください。
入力した文字列を格納した配列のポインタを戻したいんですけど、警告がでました。
警告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;
}
0020デフォルトの名無しさんNGNG
#include <stdio.h>
#define MAX 256

char *input(void);

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

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

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

return s;
}
0021埋め厨NGNG
こんばんわ。埋め厨です。
0022デフォルトの名無しさんNGNG
うんこトークしようぜ!!!
0023デフォルトの名無しさんNGNG
printf()で " や %d を出力するにはどう書いたらいいんでしょう?
0024デフォルトの名無しさんNGNG
>>23
うんこじゃ無いから却下!!!
0025デフォルトの名無しさんNGNG
>>23
printf("[\"] [%%d]\n");
0026デフォルトの名無しさんNGNG
>>20
動きました!
ローカル変数の扱いの間違いだったんかな?
ありがとうございました。
0027デフォルトの名無しさんNGNG
>>26
釣りじゃなかったのかよ
二度と来るな糞
0028デフォルトの名無しさんNGNG
いやー、やっとスレが主系と副系に落ち着いたな。一時とはいえ4本もあるのは異常事態だったが。
0029デフォルトの名無しさんNGNG
埋め厨恐るべしだな。
0030デフォルトの名無しさんNGNG
まだ異常事態だよ
003123NGNG
>>25
ありがとうがざいます。
0032デフォルトの名無しさんNGNG
949 :デフォルトの名無しさん :04/12/11 21:42:51
初心者です。

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

voidにしてはいけない理由でもあるのでしょうか。
0033デフォルトの名無しさんNGNG
993 :デフォルトの名無しさん :04/12/11 23:09:50
その通り、処理系が認めていればなんでもいい。
ただし、コードの可搬性はなくなる。

994 :デフォルトの名無しさん :04/12/11 23:11:27
>>993
可搬性をどの程度持たせるべきかとは、全く別な議論だな

996 :993 :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.
0034デフォルトの名無しさんNGNG
俺俺から先に使え。特に>>32、お前だ。
0035デフォルトの名無しさんNGNG
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でフリースタンディング環境の場合プログラム開始時に呼ばれる関数は(戻り値の型・引数含め)処理系定義と書いてある。
0036デフォルトの名無しさんNGNG
>>35
LinuxのようなOSもそのフリースタンディング環境になるの?
003736NGNG
OS自体のこと
0038デフォルトの名無しさんNGNG
>>36-37
OS自体はフリースタンディングだと思う。
ただシェルあたりは独立したプログラムにするのであれば、それはフリースタンディングではないだろうな。
0039デフォルトの名無しさんNGNG
ちなみにフリースタンディングの条件はこの2つのようだ。
― 複素数型を使っていない
― 標準ヘッダは<float.h>, <iso646.h>, <limits.h>, <stdarg.h>, <stdbool.h>, <stddef.h>及び<stdin.h>しか使っていない
0040デフォルトの名無しさんNGNG
>>38
WinMainはどっちだ?
0041デフォルトの名無しさんNGNG
<iso646.h>の中身ワラタ
0042デフォルトの名無しさんNGNG
<iso4649.h>
0043デフォルトの名無しさんNGNG
前スレでマンデルブロー集合について質問した奴です。
なんとか計算の結果を2次元配列風に表示するところまではできたんですけど
実際に2次元配列に結果をいれることが出来ません。

アドバイスおねがいします、、、

0044デフォルトの名無しさんNGNG
http://www6.ocn.ne.jp/~anomina/board.htm
0045デフォルトの名無しさんNGNG
まさか2次元配列の使い方が分からない訳じゃないだろうから
・メモリが確保できない
・二次元配列を関数の引数に渡せない
のどちらかかな。
ちゃんと>>1のFAQを読んでいるなら、違うだろうけど。
0046デフォルトの名無しさんNGNG
2が1番小さい素数、3が2番目に小さい素数・・・・・、
i番目に小さい素数を返す関数nthprime(i)をつくり、500番目に
小さい素数を求めよ。
作成したプログラムのアルゴリズム書け。
ただし関数nthprimeは再帰呼び出しを用いて作成すること。
#include<stdio.h>

int primep(int) ;
int nthprime(int) ;

int main()
{
 int i = 500 ;
 printf("%d",nthprime(i));
}
int primep(int i)
{
 int k ;
 for(k = 2 ;k < i ;k++){
  if(i % k == 0){
  return 0 ;return 1 ;
  }
 }
}
int nthprime(int i)
{
/*ここがわからないです・・・*/
}

誰かお願いします。
0047デフォルトの名無しさんNGNG
>>46
機能か一昨日同じような問題に答えた記憶があるな。宿題スレで。
0048デフォルトの名無しさんNGNG
>>47
ぶっちゃけ同じ人なんですが〜アルゴリズムについて
教えていただけなかったので・・・。
というかint primep(int i)の中身が納得できないんです。。。
0049デフォルトの名無しさんNGNG
  if(i % k == 0){
  return 0 ;return 1 ;
  }
ここがわからないです
005043NGNG

for(i=0; i<SIZE; i++)
{
   for(j=0; j<SIZE; j++)
   {
            mandel[i][j] = 0;
       }
}

こんな感じでなら二次元配列すべてに0を入れたりi+jの結果を入れたりすることはできるのですが、、、

マンデルブロー集合の計算でもfor文を使いまくってるんで
そこから見直したほうがいいでしょうか?



0051デフォルトの名無しさんNGNG
>>49
オレも他の人もそんなことは一度も書いていない
0052デフォルトの名無しさんNGNG
>>51
もしわかってるならでいいんですが
i=500だったらこれで素数判定はおかしくないですか?
0053デフォルトの名無しさんNGNG
>>51
for(k = 2 ;k < i ;k++){
if(i % k == 0){
return 0 ;return 1 ;
}
}
だっただろ?
なんで勝手に問題書き換えるんだよ
005453NGNG
あれ?最初から違ってたのか
005553NGNG
for(k = 2 ;k < i ;k++){
if (i % k == 0) {
return 0;
}
}
return 1 ;
こうね
005653NGNG
素数は1とそれ自身以外では割り切れない数のことだ。
そのforループの中では、渡された数が2〜(渡された数-1)の範囲の数で割り切れるか試してるわけだ。
割り切れたら素数じゃないから0を返し、割り切れなかったら素数だから1を返してる。
OK?
0057デフォルトの名無しさんNGNG
int nthprime(int i)
{
if(i == 500)
{
nthprime(0);
}
return 3571;
}
0058デフォルトの名無しさんNGNG
>>43
計算の結果とやらがローカル変数に格納されていて
格納先の2次元配列との受け渡しでポインタ処理を間違っていたり、
どちらかの変数の寿命に整合性が取れていないことが原因かとみた。
0059デフォルトの名無しさんNGNG
>>52
どう考えてもわかってない人の方が少ないから、そういう言い方は逆に失礼だと思うよ。
0060デフォルトの名無しさんNGNG
>>56
1って素数だっけ?
0061デフォルトの名無しさんNGNG
>>60
どこにも1が素数だなんて書いてないと思う
0062デフォルトの名無しさんNGNG
いつから宿題スレに落ちぶれたんだ?ここは。
0063デフォルトの名無しさんNGNG
>>60
違うが、「この関数を使って」で示された関数はそこを考慮してなかった
それをそのまま使っただけだ。
0064デフォルトの名無しさんNGNG
>>61

>>56
> 素数は1とそれ自身以外では割り切れない数のことだ。
0065デフォルトの名無しさんNGNG
おっとsage忘れ&>>62すまそ
0066デフォルトの名無しさんNGNG
>>59
みなさんすみませんでしたm(_ _)m
>>56
つまりそこでのiっていうのは500ではないのですか?
0067デフォルトの名無しさんNGNG
>>64
揚げ足取りウザい
0068デフォルトの名無しさんNGNG
>>67
いや俺が覚え間違えてたのかな〜と思っただけ。
0069デフォルトの名無しさんNGNG
>>67
心が荒んでますね。
0070デフォルトの名無しさんNGNG
>>66
iが500だったら
for(k = 2 ;k < 500 ;k++)
になるから、
if (i % k == 0)
ここでiは2〜499で割り切れるか試されるの!
なぜわかってくれんのだ

>>68
そうかごめん。
>>69
そうかもしれんorz
0071デフォルトの名無しさんNGNG
>>70
わからない理由は答えが3571になるのに素数判定では500までしか
やらないからです。
すみません。バカで・・・。
0072デフォルトの名無しさんNGNG
>つまりそこでのiっていうのは500ではないのですか?
そう500だね
0073デフォルトの名無しさんNGNG
>>71
素?
nthprimeはnまでの中の最大の素数、じゃなくて、
n番目の素数 を求める関数だろ
0074デフォルトの名無しさんNGNG
>>73
はい。そうです。
0075デフォルトの名無しさんNGNG
>>71
primepは単に与えられた数が素数か素数かを判定するだけ。
3571を計算してるのはnthprimeの方。
nthprimeの方で数字を1から順番にprimepで評価してやって、
primepが3571回1を返した時点でその回数を返してやるの。
0076デフォルトの名無しさんNGNG
int main()
{
 int i = 500 ;
の i と、

int primep(int i)
の i が別のもの、って事が判ってないんじゃないの?
0077デフォルトの名無しさんNGNG
今更だけど>>26さん、
>>20のコードって思いっきり間違ってますよ

input()でとって来たの使って作業してると、そのうち動かなくなると思われ…
0078デフォルトの名無しさんNGNG
>>75
あっ、nthprimeの方で数字を1から順番にprimepで評価して
るんですか〜!わかりました!!
ありがとうございました!

みなさんありがとうございました!
0079デフォルトの名無しさんNGNG
>>76
別のものなんですか?
0080デフォルトの名無しさんNGNG
>>79
やっとわかってくれたと思ったのに(;´Д`)
0081デフォルトの名無しさんNGNG
>>80
でも76さんのおかげでなんとなくわかりましたよ!
これ以上はご迷惑でしょから〜大丈夫です。
ありがとうございました!
0082デフォルトの名無しさんNGNG
>>50
同等のことをしているつもりの動かないコードを晒せ。
0083デフォルトの名無しさんNGNG
定本Cプログラマーのためのアルゴリズムとデータ構造っていう、アルゴリズムの入門書に
正規表現のプログラムが載っているのですが、理解できる気がしません。

・・・・・・正規表現なんて、実際使えればもんだいないですよね?
0084デフォルトの名無しさんNGNG
Cの入門のとき
#include <windows.h>
#include <stdio.h>

int main(){
MessageBox(NULL, "", "", MB_OK);
return 0;
}

ってプログムを止める方が楽しいと思った。
0085デフォルトの名無しさんNGNG
>>83
プログラム見るんじゃなくて、理論から勉強しろ。
0086デフォルトの名無しさんNGNG
>>83
あの本はわかりやすかったと思うんだけどなぁ
0087デフォルトの名無しさんNGNG
>>85
あのーー。オートマトン理論とかいうやつですかね?
やっぱりあれ勉強しないといけないんですか・・・・
0088デフォルトの名無しさんNGNG
アルゴリズム入門というからには理論を勉強するのが筋。
単に関数だけコピペで使いたいのならネットで拾ってくればいいし。
0089デフォルトの名無しさんNGNG
>>87
Turing Machineから勉強すると良いよ。
それに、オーダーの概念も知らないでしょ。
009087NGNG
Java勉強しようかと思っていたところだったが、またひとつ課題ができてしまいましたね(汗
時間があれば勉強してみます。ありがとうございました。
0091デフォルトの名無しさんNGNG
TuringMachineは勘弁してやれ
0092 NGNG
ttp://www.bohyoh.com/Books/ReikaiA01/RSA01chap09.pdf

ここの3ページ目の下のほうにある(47)〜(53)の答えを教えてもらえませんか?

ttp://www.bohyoh.com/Books/ReikaiA01/RSA01chap11.pdf

ここの(29)(30)(31)もです。お願いします。
0093デフォルトの名無しさんNGNG
>>92
断る
0094デフォルトの名無しさんNGNG
>>92
そのくらいは自分で考えないと、この先何もできないような…。
つーか、strxxxのサンプルソースなんかいくらでもあるんだから
せめて探すくらいしなさい。
0095デフォルトの名無しさんNGNG
>>92
宿題スレいけ
0096デフォルトの名無しさんNGNG
素数は、「1とそれ自身以外では割り切れない」数のことだ。

素数が1、ではない
0097デフォルトの名無しさんNGNG
>>96
-1 は?w
0098デフォルトの名無しさんNGNG
>>97
フ━━━( ´_ゝ`)━━━ン!!
0099デフォルトの名無しさんNGNG
1とその数以外に約数を持たない1より大きな自然数だなぁ
0100デフォルトの名無しさんNGNG
>>99
「1より大きな」ってあたりが美しくない
もっとエレガントに定義してみな
0101デフォルトの名無しさんNGNG
確かに「自然数で」が抜けてるw
0102デフォルトの名無しさんNGNG
>>100
見本みせてくれ
お前ならなんと言う?
0103デフォルトの名無しさんNGNG
字面的に短くとは言ってないぞ
0104デフォルトの名無しさんNGNG
誰がそんな事言ってんだ
0105デフォルトの名無しさんNGNG
さ、おじさんもう寝るぞ
明日までにできてるかな?
0106エラストテネスNGNG
素数と思ったら素の数を素数とする。
0107デフォルトの名無しさんNGNG
>>99
数学的に書いてください
0108デフォルトの名無しさんNGNG
「2つの約数を持つ自然数」ってのはどう?
0109デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#define N 6

int array[] = { 9, 0, 2, 5, 3, 2 }; // 適当な入力
int order[] = { 0, 1, 2, 3, 4, 5 }; // 0 から N-1 まで昇順

int shoujun(const int *a, const int *b){
/* ここに order[] に対する処理を加えたい */
 return (*a-*b);
}

int main(){
 int i;

 qsort(array, N, sizeof(int), (int(*)(const void*, const void*))shoujun);

 for(i=0;i<N;i++){ printf("%d ", array[i]); }
 printf("\n");
 for(i=0;i<N;i++){ printf("%d ", order[i]); }
 printf("\n");
 return 0;
}

stdlib.h の qsort() を使い、出力として
array[] = { 0, 2, 2, 3, 5, 9 }; 昇順に
order[] = { 1, 2, 5, 4, 3, 0 }; 元の array[] の要素の小さい添え字順
という操作を qsort で用いる関数に order[] に対する処理を加えて
行いたいと考えているのですがいまいち方法が分かりません。
そもそも qsort でこのようなことは可能なのでしょうか。
0110デフォルトの名無しさんNGNG
>>109
構造体でまとめろ。
0111デフォルトの名無しさんNGNG
>>109
手っ取りばやくやるならふたつの配列じゃなくて構造体にまとめてひとつの配列にする。
0112111NGNG
かぶった orz
0113デフォルトの名無しさんNGNG
方法1)
先に order[] を array[] の順に並べ替えろ
次に array[] だ

方法2)
別の配列を用意して array[] の順に並べ替えろ、そいつで array[],order[] を入れ替えろ
そいつには元々の array[] の添え字を入れておけ
0114113NGNG
スマソ、ウソツイタ

方法1) ではできなかったorz
0115109NGNG
>>110-114
ありがとうございます。
とりあえず構造体を使ってみます。
0116デフォルトの名無しさんNGNG
>>115
return (*a-*b); はやめな。
0117デフォルトの名無しさんNGNG
現在、VBでEXEを作成し、VC++でVBEXE用のDLLを作成。
そのDLLの中で画面の物理的なサイズを取得しようとしたのですが画面の解像度を変更するたびに物理サイズもそれに伴い色々変わってしまいます。
私が考えていた結果では解像度に関係なく物理サイズは同じ結果となるはず・・・。
私の使い方が悪いのでしょうか?
どなたか教えていただけないでしょうか?
 <コーディング>
    w_hdc = CreateIC("DISPLAY", NULL, NULL, NULL);
    w_ret = GetDeviceCaps(w_hdc, HORZSIZE);
0118デフォルトの名無しさんNGNG
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0119117NGNG
板を違えたようです・・・。
すみませんでした。
0120デフォルトの名無しさんNGNG
shortを使うより、intを使ったほうが実行速度が早いと聞きました。

さゆがC/C++の宿題を片付けるの 36代目
http://pc5.2ch.net/test/read.cgi/tech/1102753497/35-

このあたりについて詳しく書かれた文章とかないでしょうか。
0121デフォルトの名無しさんNGNG
>>120
処理系と処理内容によって異なる。
0122デフォルトの名無しさんNGNG
>>120
http://www.kouno.jp/home/c_faq/c1.html#1
> どうでもいいならint を使う。

大抵intはCPUにとって1番高速に演算できるサイズになっている。
それにCには演算前にshort/charはintになる整数拡張があり、言語自体intを整数型の基本に据えていると言える。
0123120NGNG
ありがとうございました。
これまで、変数型をいちいち変えていました。
for文のときにループが100回以下ならcharを使うなんてことをしていたのは、
3バイトケチって、手間と速度を犠牲にしていたわけですね。
0124デフォルトの名無しさんNGNG
>>123
いや、ループ変数にcharを使っても大抵のCPUでは32ビットレジスタか32ビット幅の
スタック領域を消費するから全く節約にならない。
#言い方悪いが、全くの無駄。
0125デフォルトの名無しさんNGNG
>>124
ん?それはCPUのせいなのか?
0126デフォルトの名無しさんNGNG
>>125
8ビット(つーか1バイト)のレジスタや8ビット幅のスタックを扱えるCPUなら話は別だ。
仮令インテルチップであっても32ビットレジスタをchar変数4つには割り当てられないからな。
0127デフォルトの名無しさんNGNG
そこでSIMDですよ。
0128デフォルトの名無しさんNGNG

【イメージ】

○○○( str, "現在%2d時%2d分%2d秒です"
,st.wHour ,st.wMinute ,st.wSecond ) ;

現在の時刻を %d とかの形に変換した後、strに文字列として一気に
流し込むような処理がしたいんですけど、そんな事ができる便利な
関数ありませんか?
ちょっとわかりにくかったらすみません。
0129デフォルトの名無しさんNGNG
(☉◇☉)Σ
0130デフォルトの名無しさんNGNG
>>128
sprintf()或いは日付けに特化したstrftime()
0131デフォルトの名無しさんNGNG
ただ今、きょん時ねこ分きつね秒です
0132128NGNG
>>130
ありがとうございます。
お陰で出来ました。
0133デフォルトの名無しさんNGNG
<ご質問>
キャラクタ'AA'(0x4141)を0xAA に変換したいのですが、
スマートなロジックの書き方があればご教授ください。

お願いいたします。
0134デフォルトの名無しさんNGNG
byte0 + (byte1<<4)
0135デフォルトの名無しさんNGNG
ちがっとーよ
0136デフォルトの名無しさんNGNG
a = 0xaa;
でいいんじゃない?
0137デフォルトの名無しさんNGNG
>>134>>136
馬鹿?

>>133
自分の行動に「ご」をつけるような常識知らずに教える気はない。
#つーか、結構めんどいよ。
0138デフォルトの名無しさんNGNG
>>137
つか、あの質問から何がやりたいのかを理解できたとしたら凄いよ。
0139デフォルトの名無しさんNGNG
strtol

日本語はマジ直とけ
技術屋としてシャレにならんぞ
0140デフォルトの名無しさんNGNG
>>139
それは無茶では?
0141デフォルトの名無しさんNGNG
138へのアンチテーゼ
0142デフォルトの名無しさんNGNG
if(strcmp(str,"AA")==0) ans=0xAA;
0143デフォルトの名無しさんNGNG
>>142
せめてmemcmpに。
0144デフォルトの名無しさんNGNG
uchar hex1asc(uchar c)
{
if(c >= 'a') c -= 'a' - 10;
else if(c >= 'A') c -= 'A' - 10;
else c -= '0';
return c & 0x0F;
}

uchar hex2asc(uchar *s)
{
return (hex1asc(s[0]) << 4) | hex1asc(s[1]);
}
0145デフォルトの名無しさんNGNG
strtolでいいやん
0146デフォルトの名無しさんNGNG
char line[ ] = "AA";
sscanf(line, "%x",&ans);
とか
0147デフォルトの名無しさんNGNG
>>133
「スマートなロジック」を定義してくれ
0148デフォルトの名無しさんNGNG
>>145
'AA'だけを変換してくれるような機能は無かった気がするけど。。
0149デフォルトの名無しさんNGNG
>>148
ttp://www9.plala.or.jp/sgwr-t/lib/strtol.html
0150デフォルトの名無しさんNGNG
>>149
やっぱりそんな機能無いよね。
0151デフォルトの名無しさんNGNG
とりあえず 142 がスマートっぽい。
0152デフォルトの名無しさんNGNG
uchar hex1asc(uchar c)
{
if(c >= 'a') c -= 'a' - 10;
else if(c >= 'A') c -= 'A' - 10;
else c -= '0';
return c & 0x0F;
}

uchar hex2asc(ushort s)
{
return (hex1asc((uchar)(s >> 8)) << 4) | hex1asc((uchar)(s & 0x00FF));
}
0153デフォルトの名無しさんNGNG
>>148
そういう質問なのかw

if (str[0] == 'A' && str[1] == 'A')
ret = 0xaa;
0154デフォルトの名無しさんNGNG
文字列じゃなくて文字だと言うことに気付いてない香具師多過ぎ
0155デフォルトの名無しさんNGNG
Linuxで書かれたCのプログラムをWindowsでコンパイルする方法は無いですか?
unistd.h等のインクルードファイルが無くてエラーが出ます。
あとコンパイルできたとしても動くんでしょうか?
0156デフォルトの名無しさんNGNG
>>155
標準ライブラリなどプラットフォーム非依存のライブラリだけを使っていれば、コンパイルできれば動くはず。
0157デフォルトの名無しさんNGNG
Cygwinというソフトを使うとWindows上に擬似Linux環境を作れるから
そこのgcc使うとコンパイル・実行できる。

普通のWindows用コンパイラを使う場合はエラーが出た箇所を
片っ端から#ifdefで囲んでいってWindows用に書き換えていく必要がある。
人はこれを移植と呼ぶ。
0158デフォルトの名無しさんNGNG
>>156
>>157
ありがとうございます。
Cygwinを試してみます。
0159デフォルトの名無しさんNGNG
擬似Linux環境??????
0160デフォルトの名無しさんNGNG
Unixだろ
0161デフォルトの名無しさんNGNG
#include <stdio.h>

main()

{
char buf[80];

scanf("%s",buf);
printf("%s %d \n",buf);

return 0;

}

とやったら普通、Aを入力したらA 65と出力しますよね?Aはちゃんとでるんですが10進数のほうがおかしいです。
0162デフォルトの名無しさんNGNG
printf("%s %d \n",buf         );
0163デフォルトの名無しさんNGNG
>>161
> scanf("%s",buf);
> printf("%s %d \n",buf);
    (snip)
>とやったら普通、Aを入力したらA 65と出力しますよね?
普通はそんなバカなコード書きません。
>Aはちゃんとでるんですが10進数のほうがおかしいです。
おかしいのはあなたです。
0164デフォルトの名無しさんNGNG
#include <stdio.h>

main()

{

char a[20];

scanf("%s",a);
printf("%d",a);

return 0;
}

同じ人で恐縮なんですが、これでAAAと入力、そしたらprintf側はどうでますか?
656565って感じにはでないんですか?
0165デフォルトの名無しさんNGNG
>>164
馬鹿は黙ってろ
0166デフォルトの名無しさんNGNG
>>159
Cygwin は RedHatLinux だよ
0167デフォルトの名無しさんNGNG
>>164
 ならない
0168デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
char buf[80];
scanf("%s",buf);
printf("%s %d \n",buf, buf[0]);
return 0;
}
0169デフォルトの名無しさんNGNG
CygwinでCやってるんですけど、何回もプログラムを実行してると
たまにバグるのは気のせいですか・・・orz
0170デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
char a[20];
scanf("%s",a);
printf("%03x",*(unsigned long *)a);
return 0;
}
0171デフォルトの名無しさんNGNG
>>169
君のプログラムにバグは内科医?
0172デフォルトの名無しさんNGNG
バグってからGDBでrunすると1,2回は何も出ず終わるんですが・・・
これまたrunしすぎるとエラーでます。
そんなもんですか??
0173デフォルトの名無しさんNGNG
>>172
その情報で何か有効な意見が得られると思いますか?
0174デフォルトの名無しさんNGNG
どんなエラーかくらい書けよ
0175デフォルトの名無しさんNGNG
もういいです
0176デフォルトの名無しさんNGNG
バグって何?
0177デフォルトの名無しさんNGNG
>>168サンクスです。馬鹿はだまってらんねーです

#include <stdio.h>

main()

{

char a[20];

scanf("%s",a);
printf("%s %d%d%d",a,a[0],a[1],a[2]);

return 0;
}

へいるまん「これでおーけーね?」
0178デフォルトの名無しさんNGNG
>>177
%Xにしろ。
0179デフォルトの名無しさんNGNG
とりあえず馬鹿であることは認識したようだ
0180デフォルトの名無しさんNGNG
文字列の入ったテキストファイルを読み込んで、
あらかじめ作っておいた配列に格納する方法を教えてください
C言語でお願いします
0181デフォルトの名無しさんNGNG
宿題は宿題スレへ
0182デフォルトの名無しさんNGNG
文字列の入ったテキストファイルを読み込んで、
あらかじめ作っておいた配列に格納する方法を教えてください
C言語でお願いします
0183デフォルトの名無しさんNGNG

宿題は宿題スレへ
0184デフォルトの名無しさんNGNG
いつもお世話になっております先輩ども

TrsFmtConv.c:1641: error: declaration for parameter `stOldSet' but no such parameter
TrsFmtConv.c:1640: error: declaration for parameter `stSet' but no such parameter
TrsFmtConv.c:1652: error: number of arguments doesn't match prototype
cc1: error: prototype declaration

みたいなエラーがイパーイ出るんですが、
原因は何だと推測されますか?
0185デフォルトの名無しさんNGNG
ヘッダ
0186デフォルトの名無しさんNGNG
>>185
ヘッダ・・・?
自分もそう思って定義してるつもりだったんじゃないかと
確認してみましたが、未定義じゃなかったようです

二重定義とかかな・・・
0187デフォルトの名無しさんNGNG
定義してる型がおかしいとか引数の数がおかしいとか、そんなとこじゃないのかな?
何せファイルがデカすぎるからどっかで起きたtypoが全体をブッ壊してるようにも思える。
0188185NGNG
うおおおおおおおおおおおおおおおおおおお
解けたあああああああああああああああああああああああ

原因は内部変数の定義でセミコロン付け忘れでした_| ̄|○
>>185,>>187、レスサンクスです!

もうCの開発嫌だ・・・
0189デフォルトの名無しさんNGNG
お疲れ!
0190デフォルトの名無しさんNGNG
number of arguments doesn't match prototype
0191デフォルトの名無しさんNGNG
くだらない質問で恐縮ですが、
C言語で配列の要素数を#defineやプログラム内で宣言せずに
scanfなどでプログラム実行中に後から指定する方法は無いのでしょうか?
やって見ると、「定数式が必要」とエラーになるのですが・・・

0192デフォルトの名無しさんNGNG
malloc() と free()

C言語では、配列の大きさはコンパイル時に(というかプログラムを書いた時点で)
決まるものでなければなりません。たとえば、int n; int a[n]; という宣言は不可能です。

プログラムが動いてから配列の大きさを決めたい場合は、関数 malloc() で割り当ててやります。
http://www5a.biglobe.ne.jp/~iwase47/00comp/alloc.html
0193デフォルトの名無しさんNGNG
あーマルチしちゃってたのね
0194デフォルトの名無しさんNGNG
C99使えるコンパイラへ乗り換えろ
0195デフォルトの名無しさんNGNG
それは10種類あるのかよ?
0196デフォルトの名無しさんNGNG
ない。
0197デフォルトの名無しさんNGNG
2次元配列を用いて九九の結果を画面に出力するプログラムを作成せよ。
但し掛け算の計算はmulとして関数を作成すること。
おしえれ
0198デフォルトの名無しさんNGNG
>>197

void mul(int i, int j)
{
  return i * j;
}
int main(void)
{
  int data[9][9];
  int i, j;

  for (i = 0; i < 9; i++) {
    for (j = 0; j < 9; j++) {
      data[i][j] = mul(i + 1, j + 1);
    }
  }

  for (i = 0; i < 9; i++) {
    for (j = 0; j < 9; j++) {
      printf("%d ", data[i][j]);
    }
    printf("\n");
  }
  return 0;
}
0199デフォルトの名無しさんNGNG
>>198
void mul(int i, int j)
~~~~
0200デフォルトの名無しさんNGNG
>>199
あうあう。一発書きだから許せ。
int mul(int i, int j)に訂正。
0201デフォルトの名無しさんNGNG
> mul(i + 1; j + 1)

間違っちゃいないんだけど、ばっきゃろーってとこだな
あと九九は2の段からだろ
仮面ライダーが本郷猛だった頃はそうだった
0202デフォルトの名無しさんNGNG
> ;

オレモナー
0203デフォルトの名無しさんNGNG
>>201
ごめん、言いたいことがわからん。
0204デフォルトの名無しさんNGNG
>>201
えー、俺、小学校のころ1の段から覚えさせられた覚えがあるべ。
0205デフォルトの名無しさんNGNG
>>201
四十か...
0206デフォルトの名無しさんNGNG
>>203

  for (i = 1; i <= 9; i++) {
    for (j = 1; j <= 9; j++) {
      data[i-1][j-1] = mul(i, j);
    }
  }
  
のがいいって言いたいんじゃね?
0207デフォルトの名無しさんNGNG
どっちも一緒や。そんな微細なこと、ドウでもいい
0208デフォルトの名無しさんNGNG
// ...
int *pdata;
// ...
pdata = data[-1][-1];
// ...
pdata[i][j] = mul(i, j);
// ...
0209デフォルトの名無しさんNGNG
>>208
そこまでメンドい事やるくらいだったら、「data[0][0]は使いません」の方が全然わかりやすい。
0210デフォルトの名無しさんNGNG
>>209
メモリが勿体ない
0211デフォルトの名無しさんNGNG
NUMERICAL RECIPES in Cは>>208のスタイルをとってるな。
0212デフォルトの名無しさんNGNG
東京の時刻を元にして、各都市の時刻を求めるプログラムを書いているんですが、
年月日それぞれをまたぐ場合をif elseで求めているため条件式の嵐になっています・・・
特に月をまたぐ場合、28日と30日と31日という3つの条件についてそれぞれ求めなければならず、
非常にわけがわからなくなっています。

これって明らかに効率の悪い手法ですよね?
0213デフォルトの名無しさんNGNG
unix time化して時差分を引いてフォーマッティングすりゃいいんでは
0214デフォルトの名無しさんNGNG
cを習って半年の大学生です。
課題↓が全く分かりません、教えてくださいマセm(__)m
ttp://www.siokara.cjb.net/siobin/sio001/src/sa10580.zip.html
0215デフォルトの名無しさんNGNG
あるプログラムを書き換えるソフトを作ろうとしているのですが、コンパイルがうまく通ってくれません。
何度見返してみても自分ではおかしな点を発見できなかったので、見ていただけないでしょうか。

#include<stdio.h>

int main(void)
{
FILE *fp;

fp=fopen("KAZOKUK.EXE","wb");

fseek(fp,0x000140D9h,SEEK_SET);
while(ftell(fp)<=0x000140EDh) fputc(fp,0x90h);
fputc(fp,0xEBh);

fclose(fp);

return 0;
}

エラー E2121 a.c 9: 関数呼び出しに ) がない(関数 main )
エラー E2377 a.c 10: While文に ) がない(関数 main )
エラー E2121 a.c 11: 関数呼び出しに ) がない(関数 main )
0216デフォルトの名無しさんNGNG
エラー E2121 a.c 9: 関数呼び出しに ) がない(関数 main )
エラー E2377 a.c 10: While文に ) がない(関数 main )
エラー E2121 a.c 11: 関数呼び出しに ) がない(関数 main )
0217デフォルトの名無しさんNGNG
>>216
それでただの書き忘れかと思ったんですが、どこにもそんな個所が見つけられなくて困ってます。
どこがおかしいのでしょうか?
0218デフォルトの名無しさんNGNG
h
0219デフォルトの名無しさんNGNG
>>215
0x000140D9h
のhが意味不明。
0220デフォルトの名無しさんNGNG
>fputc( fp, 0x90 );
逆だ、逆
0221デフォルトの名無しさんNGNG
>>217
君の頭
0222デフォルトの名無しさんNGNG
>>215
wbで開いて良いのか?知らないぞ。
0223デフォルトの名無しさんNGNG
>>222
ワロタ。
0224デフォルトの名無しさんNGNG
家族計画ってそんなにおもしろいか?
0225デフォルトの名無しさんNGNG
fgets関数を使ってファイル内容を読み出したいんだけど、
()って記号は読み出せないんですか?
0226デフォルトの名無しさんNGNG
あーなるほど、何かのプログラムにNopパッチを当てようとしているのか。
0227デフォルトの名無しさんNGNG
どこがおかしいですか?

問題
西暦2000年から10000年の間で,夏季オリンピックが開催されるにもかかわらず,
閏年でない年をすべて列挙するプログラムを作りなさい。

#include <stdio.h>
main()
{
int y;
for(y=2000; y<=10000; y++)
  if (y % 4 == 0)
{
if (y % 100 == 0 && y % 400 != 0);
printf("%d");
  }
}
0228デフォルトの名無しさんNGNG
最近、printfにあからさまな誤りを入れた質問が乱発しているが
scanfに続くネタとして、面白いんだろうか
0229デフォルトの名無しさんNGNG
>>228
標準関数の仕様を理解していないんでしょ。
0230デフォルトの名無しさんNGNG
ネットワーク関係のライブラリが欲しいんですけど、何処に行けばあるの
でしょう、なんか見つかりません
0231デフォルトの名無しさんNGNG
君のHDの中にあるはず
0232デフォルトの名無しさんNGNG
文字列s1、s2を引数で受け取り、s1に文字列s2が含まれているかどうか調べる関数を作成しなさい
実行結果は、含まれているなら1を、含まれていないなら0をそれぞれ返すようにしなさい。
文字列検索関数strcmpなどは使用しないこと。
・
・
・
これ誰かわかります?
0233デフォルトの名無しさんNGNG
>>232
計算アルゴリズム
http://pc5.2ch.net/test/read.cgi/tech/1090227743/
0234215NGNG
>>218,219
ずっとhは必要だと勘違いしてましたorz
>>220
こんなとこにミスがあるとは…
原因は書き忘れのみだと思い込んでました
>>222
80KBになってしまいますた鬱
rb+が正しいみたいですね
>>224
感動ゲーの中では最高傑作と名高いのでやってみることにしました
>>226
いわゆるNoCDパッチってやつです

みなさんありがとうございました。おかげで完成しました。
では心おきなくプレイしてきまつ。
0235デフォルトの名無しさんNGNG
strstrはその「strcmpなど」に含まれるんだろうな。
0236デフォルトの名無しさんNGNG
>>215
これはすごい
0237とのNGNG
マウスフックしてウィンドウのタイトルバーでホィールが動いたときに処理をするようなプログラムを作りたいのですがうまくいきません
右ボタンなどはWM_NCRBUTTON_CLICKでつかまえて、ヒットテストをみれば上手くいたのですがホィールはどうしたらできますか?ご存知のかたいたら教えてください
0238デフォルトの名無しさんNGNG
WM_MOUSEWHEEL を捕まえればいいんじゃない?
0239デフォルトの名無しさんNGNG
>>1
>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
↑これが読めない脳足りんが増えて来ましたね。
0240230NGNG
>>231
いやHDの中も探したんですけど、ないです。
具体的にはsys/socket.hとその実行ファイルが欲しぃ。
0241デフォルトの名無しさんNGNG
>>227
>夏季オリンピックが開催されるにもかかわらず,
日本語の使い方がおかしいと思う
>printf("%d");
printf("%d",変数)
0242デフォルトの名無しさんNGNG
;付け忘れた
0243デフォルトの名無しさんNGNG
「あいうえお」みたいな文字列を一文字ずつ16進数にして配列に入れて行くにはどうしたらいいですか?
0244デフォルトの名無しさんNGNG
>>234
ICOのほうが感動するぞ。
イブバーストエラーもよかった。
弾幕ゲームも、すべての弾を避けれたときに感動するぞ。それ以外はマゾヒズム。
0245デフォルトの名無しさんNGNG
>>232
>これ誰かわかります?
俺はわかるぞ
0246デフォルトの名無しさんNGNG
>>232
うん、わかるわかる。
0247とのNGNG
>>238
それだとうまくいかなかった
なんかヒットテストが常に0になる
やりかたがまずいのかなあ
0248デフォルトの名無しさんNGNG
>>247
とりあえず >1 でも嫁。
0249デフォルトの名無しさんNGNG
夏季オリンピックは、いったい何年まで行われるのだろうか?
西暦10000年になる前に暦が変わったり、
人類そのものが絶滅するかもしれない事は考えないのだろうか?
0250デフォルトの名無しさんNGNG
>>249
物理の問題で糸にも少しくらい重さがあるじゃないかと思ったことあるだろ
0251デフォルトの名無しさんNGNG
戦争で中止したこともあった死ね
0252デフォルトの名無しさんNGNG
>>250
うん、ある。
コペンハーゲン解釈も試験のための答え方は憶えたけど本心では納得してなかったりする。
0253デフォルトの名無しさんNGNG
>>252
最近多世界解釈なら納得でき始めている。
納得しちまっていーものなのかなぁ、という不安はある。
0254デフォルトの名無しさんNGNG
すいません。質問です。コンパイル出来なくて困ってるんですが
#include<stdio.h>
int main(void){

int num[10],i,k,j;

printf("10個の数字を入力して下さい:");
for(i=0; i < 10; i++)scanf("%d",& num[i]);

for(j=num[0]; num[0] < num[10] ;num++)
for(k=num[1]; num[1] < num[10]; num++){
if(j==k)printf("同じ数は%dです\n",j);
}
return 0;
}
9行目と10行目でエラーが出てまして、皆さんだったらどう直されますでしょうか?
0255デフォルトの名無しさんNGNG
どうやって配列をインクリメントするんだい?
0256デフォルトの名無しさんNGNG
なんだこれ
0257デフォルトの名無しさんNGNG
うわっ、これはひどい
0258エラストテネスNGNG
初心者の時は{}省略せずに毎回毎回きちんと書け。

for(j=num[0]; num[0] < num[10] ;j++){
for(k=num[1]; num[1] < num[10]; k++){
if(j==k)printf("同じ数は%dです\n",j);
}
}
0259デフォルトの名無しさんNGNG
なんで急にこんなエラーメッセージも読めない、
基本的なことを調べようともしない奴ばっか増えたの?
0260エラストテネスNGNG
こっちだがな
for(j=0; i<10;j++){
for(k=0; k<10; k++){
if(j==k)printf("同じ数は%dです\n",num[j]);
}
}
0261デフォルトの名無しさんNGNG
これだと例えばエラーを直しても、例えばnum[10]=0,1,2,3,4,5,6,7,1,5のときに
 同じ数は1です
 同じ数は5です
 同じ数は1です
 同じ数は5です
とか表示されるぞ

もうちょい改良しておけ
0262デフォルトの名無しさんNGNG
さらにいうとこうだがな
for(j=0; i<10;j++){
for(k=0; k<10; k++){
if(num[j]==num[k])printf("同じ数は%dです\n",num[j]);
}
}
0263デフォルトの名無しさんNGNG
>>259
昔からだよ。そうだな、だいたい古代エジプトあたりからだ
0264デフォルトの名無しさんNGNG
>>263
日本ではだいたいいつごろからだ?
0265デフォルトの名無しさんNGNG
>>262
>>260をコピペしたら間違ってたし
× for(j=0; i<10;j++)
○ for(j=0; j<10;j++)
0266デフォルトの名無しさんNGNG
>>264
はっきりした区分はないが、ポリネシア人との邂逅があった時期とされている
0267254NGNG
>>255〜>>256 さん
レスありがとうございます。

>>255
num[0]++に、変更したところコンパイルできました。

私も皆さんのようなプログラムに近づけるよう精進致します。^^;
ありがとうございました。
0268デフォルトの名無しさんNGNG
>>255〜>>256 さんの、誤りでした。すいませんでした。
0269デフォルトの名無しさんNGNG
> 皆さんのようなプログラム
…俺たちはプログラムではないわけだが。
0270初心者ですNGNG
CとTURBO Cの違いってなんですか?
他にもPASCALとTURBO PASCALなどがあります。

根本的に違う言語なんでしょうか?
0271デフォルトの名無しさんNGNG
>>269
トロンのノリだな
不倫、なぜ忍び込んだ
0272デフォルトの名無しさんNGNG
>>269
君は自分がプログラムであるという事実に気づいていないようだな...
0273デフォルトの名無しさんNGNG
>>270
君に使いこなすのは無理って点は全部共通かな
0274デフォルトの名無しさんNGNG
>>259
人に訊くレベルにすら達していない莫迦も増えましたが、
得意げに教えたがる手合いも増えましたね。
0275デフォルトの名無しさんNGNG
>>270
"TURBO C"や"TURBO PASCAL"はソフトの名前。
"C"や"PASCAL"は言語の名前。
比較するものではない。
0276デフォルトの名無しさんNGNG
>>270
オートバイとCBRの違いはなんですか?
ってのと同じくらい プ な発言だぞ
0277デフォルトの名無しさんNGNG
>>276
井上君の家のカローラと武田君の家のカローラはどこが違うんですか?
と同じレベルじゃない?
0278デフォルトの名無しさんNGNG
>>277
それはちょっと違うんじゃ・・・
0279デフォルトの名無しさんNGNG
託児所になっとる・・・
0280デフォルトの名無しさんNGNG
餓鬼末
0281デフォルトの名無しさんNGNG
>>277

「トヨタ」と「トヨタ・カローラ」ってどこが違うんですか? だ
0282デフォルトの名無しさんNGNG
「あいうえお」みたいな文字列を一文字ずつ16進数にして配列に入れて行くにはどうしたらいいですか?
0283デフォルトの名無しさんNGNG
>>282
一文字ずつ処理するのは必要条件なのか?
0284デフォルトの名無しさんNGNG
>>282
>「あいうえお」みたいな文字列を一文字ずつ16進数にして

それぞれどの様な 16 進数値になればよいのだ?
0285デフォルトの名無しさんNGNG
>>282
何がやりたいのか、いまいち分からんが「漢字コード」で検索してミソ。
0286デフォルトの名無しさんNGNG
すいません。getcharのしつもんです。
Cでアンケートを集計したくてプログラムを書いたんですけど
うまくいきません。
一文字入力してエンターを押すと、処理が一つ跳んでしまうようです。
問題はgetchar の使い方でしょうか?
またはgetcharは使うとまずいですか?
次にソースを載せておきます。誰か原因と代替案お願いします。
0287286NGNG
#include<stdio.h>
int main ()
{
int g, h, i = 0, j = 0, k = 0;

for (h = 1; h <= 3; h++){ //簡単の為3人分だけ数える。

//アンケートのQ1.はYes または No で答えるもの。
//Yesを y 、Noを n 、無回答を 0 で入力する。
printf ("Q1. ");
g = getchar ();
if (g == 'y'){
i++;
}
if (g == 'n'){
j++;
}
if (g == '0'){
k++;
}
}
//A1.回答表示
printf("A1.\n");
printf (" Yes = %d\n", i);
printf (" No = %d\n", j);
printf ("Mukaitou = %d\n", k);
return 0;
}
0288デフォルトの名無しさんNGNG
>>286
邪道かもしらんが、<conio.h>をインクルードして、getch()を使ったら?
Enter押す必要もないし。
0289デフォルトの名無しさんNGNG
>>286
なにが起こってるのかはgetcharから受け取った値をその都度表示してみれば分かるだろう。
0290デフォルトの名無しさんNGNG
>>283
もじを数字にして暗号化したいっす
0291デフォルトの名無しさんNGNG
>>282
char sz[] = "あいうえお";
0292デフォルトの名無しさんNGNG
>>286
関係ないが、switchにするか、せめてelse ifでつなげ。
0293デフォルトの名無しさんNGNG
>>290
とりあえずここを順に読んでみることを勧める。
ttp://homepage1.nifty.com/toshio-k/prog/c/
0294286NGNG
>>288
Enterはぜひとも欲しいので・・・
>>289
y\nってことですかね。
>>292
いや、これはおはずかし・・・・
0295デフォルトの名無しさんNGNG
>>294
何かしらんが、一回一回Enter押したいのか?
だったらscanfにすれば。
0296286NGNG
>>295
scanf("%c\n", &g);
みたいな感じですか?
0297デフォルトの名無しさんNGNG
入力ストリームを毎回フラッシュするという手もあるぞ。


冗長ですか・・・そうですか λ...
0298デフォルトの名無しさんNGNG
>>296
\n入れると動作がおかしくなる。%cのみで。
0299デフォルトの名無しさんNGNG
>>291
要件満たしてないじゃん…
  wchar_t sz[] = L"あいうえお";
こうじゃないと。
0300デフォルトの名無しさんNGNG
>>296
http://www.kouno.jp/home/c_faq/c12.html#17
0301デフォルトの名無しさんNGNG
>>297
入力ストリームのフラッシュって動作未定義じゃないか。
0302286NGNG
やば、余計恥ずかしい。
>>298,300
うむ。了解です。ありがとうございました。
0303デフォルトの名無しさんNGNG
C言語で3Dプログラムを勉強しているんですが、
サンプルのプログラム中に

>//四角形座標の最大最小値の初期化
>max_x = max_z = -1e10f;
>min_x = min_z = 1e10f;

とある"1e10f"はどのような値なのでしょうか?
0304デフォルトの名無しさんNGNG
>>303
たしかに意味わからんな。
2進数にしたら、11110000100001111、と左右対称系になるから、
ここに何か意味があるのかも?3Dはわからんからこれ以上
何も言えないが。
0305デフォルトの名無しさんNGNG
>>303
適当な値でしょ。
0306デフォルトの名無しさんNGNG
>>303
http://www.bohyoh.com/CandCPP/FAQ/FAQ00082.html
0307304NGNG
ああっ!恥かいた!0xついてないし、16進数じゃないやん!
最後のfは浮動小数点型のサフィックスだ。
1e10は、「1*10の10乗」って意味だ。

吊ってくるorz
0308デフォルトの名無しさんNGNG
まぁまぁ・・・はやまらないで
0309303NGNG
>307
えと

1e10 = 10^10 = 10M(100憶) Σ( ̄□ ̄


ありがとうございます。

0310デフォルトの名無しさんNGNG
今の流行は無線LANでの首吊りですよ。
0311デフォルトの名無しさんNGNG
>>309
計算間違い。
0312303NGNG
あう、 MじゃなくてGか。。。
0313デフォルトの名無しさんNGNG
>>309
1e10 で
>Σ( ̄□ ̄ 
なら、1e300 だとどうなるんだろう…
0314デフォルトの名無しさんNGNG
>>313
グレートウォールの表面積は何平米?
0315デフォルトの名無しさんNGNG
すいません、ものすごく基本的なことかもしれないんですけど、
変数を宣言して初期化する際に

int a = 5 * 3;

のように演算を行って初期化することは正しい行為なんでしょうか。
0316デフォルトの名無しさんNGNG
>>315
イイヨー
0317315NGNG
>>316
即答ありがとうございました。
0318デフォルトの名無しさんNGNG
リンクリストを作ろうと思うんですが、
typedef struct {
    void *data;
    list *next;
} list;

と書きたいんですが「構文エラー : 識別子 'list'」とかいうエラーになります。
このような書きかたは出来ないんでしょうか。
0319デフォルトの名無しさんNGNG
出来ない
0320デフォルトの名無しさんNGNG
http://www.kouno.jp/home/c_faq/c1.html#14
0321デフォルトの名無しさんNGNG
>このような書きかたは出来ない

こうすれ
typedef struct list_{
void *data;
struct list_ *next;
} list;
0322318NGNG
できました!ありがとうございます!
0323デフォルトの名無しさんNGNG
C言語の課題おしえてください。

直線を指定した座標から座標まで引くプログラムなんですが
ターミナルに出力するのではなくてファイルに出力するらしいです。
検索してもライン関数を使ってるのしかなくて、そのライン関数
自体の中身がわからりません。どうか教えてください。
0324デフォルトの名無しさんNGNG
>>323
ここは課題を教えるスレじゃ無い
0325323NGNG
そうでしたか・・・みなさんすみませんでした!
0326デフォルトの名無しさんNGNG
現在学校でC言語のテスト中です;
どなたか名前を入力させて
その名前を10回表示するというプログラムを作成してください
なにとぞお願いします
0327デフォルトの名無しさんNGNG
int i;
char name[128];
scanf("%s", &name);
for (i = 0; i < 10; i++)
printf("%s", name);
0328デフォルトの名無しさんNGNG
>>326-327
いっぺん死んで。
0329デフォルトの名無しさんNGNG
>>327
"%128s"かfgetsにしろ
0330デフォルトの名無しさんNGNG
>>327
&nameの&は余計だな。
0331デフォルトの名無しさんNGNG
大抵のところで、scanfはポインタを教える前に使わせるからなぁ
とりあえず&をつけろと教えられている気がする
0332デフォルトの名無しさんNGNG
C++はなぜどこででも変数宣言できるようになったんだ?
0333デフォルトの名無しさんNGNG
>>332
使う直前で宣言する方がわかりやすいから
0334デフォルトの名無しさんNGNG
>>332
ちゃんとは知らんが、スコープの先頭で宣言しなきゃいけないってのが
コンパイラにとっては都合がいい(コンパイラの実装が楽)でも、
書く側にとっては辛いからじゃない?
0335デフォルトの名無しさんNGNG
>>332
コンストラクタの実行タイミングを制御するのにいちいちブレースつけにゃならんのがダサいからだろ
0336デフォルトの名無しさんNGNG
>>327
そんな使い方するから scanf 使いはアフォやと偏見もたれるんじゃい
0337デフォルトの名無しさんNGNG
>>336
ちょい待て。scanfなんか、まともに動くプログラム作ろうと思ったら使わんだろ。
0338デフォルトの名無しさんNGNG
だがそれがいい
0339デフォルトの名無しさんNGNG
>>337
そんなことない。結構便利。
0340デフォルトの名無しさんNGNG
無能scanf使いによる自己弁護が始まりました
0341デフォルトの名無しさんNGNG
じゃぁみんな scanf の代わりになに使ってんノ?
0342デフォルトの名無しさんNGNG
せめてfgetsとsscanfにしろ
0343337NGNG
>>339
いや、めちゃくちゃちょこっとしたテストプログラム書くときだけだろ?
「まともに動くプログラム」ではない。
0344デフォルトの名無しさんNGNG
だから何つかうんだってば。
正規表現ライブラリとか標準であればそっち使いたいけど。
0345デフォルトの名無しさんNGNG
質問
エムアロック?マロック?
0346デフォルトの名無しさんNGNG
>>345
エムアロック
「マロック」って言う奴は例外なく馬鹿。
0347デフォルトの名無しさんNGNG
マロックにきまってるだろ。ちっとは考えろ。
0348デフォルトの名無しさんNGNG
キャプテンマーロック
0349デフォルトの名無しさんNGNG
エムアロックなんて読むやつはなぁ、
calloc をシーエーアロックなんて読むんだよ、バカ。
これはカロックだ。
0350デフォルトの名無しさんNGNG
>>344
>>342見ろ

>>345
マァロック
0351デフォルトの名無しさんNGNG
>>345
いきがったやつは
memory allocation
で,エムアロックだよ,なんてぬかすが,
ネイティブは普通に
マォック
って発音する(のを聞いた).
マロックでいんでない?
オレ的にはcharはキャラと言いたいけど,あれもチャーだしね.
ギタリストかよ
0352デフォルトの名無しさんNGNG
>>349は救いようのない馬鹿
シーエーアロック?なんでaを2回読んでんだw
シーアロックだよ
0353デフォルトの名無しさんNGNG
意見を総合すると
>>346は例外なくBAKAってことでFA?
0354デフォルトの名無しさんNGNG
モーロン
0355デフォルトの名無しさんNGNG
>>353
単独の対象に対して「例外なく…」って言うお前は間違いなくバカ
0356デフォルトの名無しさんNGNG
>>352
馬鹿はお前。
malloc はもともと「エムアーアロック」って読むのが正式。
母音が2つ続くので連音して「マァロック」→「マロック」になった。
0357345NGNG
>>346-356
かえって分からなくなりました。ありがとうございました。
0358デフォルトの名無しさんNGNG
> malloc はもともと「エムアーアロック」って読むのが正式。
ほぉぉお。何をもって「正式」なんだか根拠を示してもらおうか。
0359Rubyist!NGNG
楽しそうだな。
0360デフォルトの名無しさんNGNG
>>358
Dinkin博士の「プログラマ発音史 - 技術用語の史学的考証 - 」知らんのか?
この分野の権威だぞ。
0361デフォルトの名無しさんNGNG
やはりこういう一種の宗教問題的な,
技術的でない曖昧な話題は盛り上がるね.
人間の本質だよ,議論して答えを導き出すという.
言い争いにしかなってないかもしれねーけど,
こういうのを授業でもやりたい.
0362デフォルトの名無しさんNGNG
>>360
権威主義馬鹿。
つーか、googleで一件もヒットしないのに、権威?
他の分野ならともかく、プログラムで?
ぷぷぷぷぷ。
0363デフォルトの名無しさんNGNG
>>361
>やはりこういう一種の宗教問題的な,
>技術的でない曖昧な話題は盛り上がるね.
大した知識もない馬鹿でも参加できるからね
0364356=360NGNG
真っ赤なうそだぴょーん
わーい、google で検索してやんの!
0365デフォルトの名無しさんNGNG
>>364
ちょっとワロタ
0366デフォルトの名無しさんNGNG
>>364
あ、そ。じゃ、エムアロックね。
0367デフォルトの名無しさんNGNG
そして誰もいなくなった
0368デフォルトの名無しさんNGNG
ケロッグじゃ駄目なん?
0369デフォルトの名無しさんNGNG
pingはぺやんぐだよな
0370デフォルトの名無しさんNGNG
sin はシンだよな
0371デフォルトの名無しさんNGNG
で、80種類のコンパイラは?
0372デフォルトの名無しさんNGNG
質問です。
教えてください!
0373デフォルトの名無しさんNGNG
NullReferenceExceptionはぬるりだよな
0374デフォルトの名無しさんNGNG
>>370
sinはサインに決まってる。
そして、cosはコカインだ。
0375デフォルトの名無しさんNGNG
アークコカイン最強
0376デフォルトの名無しさんNGNG
おまいらスレ違い

最高に頭悪そうな発言してください in ム板 (3)
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
0377デフォルトの名無しさんNGNG
>>376
私が行くには高級すぎて…
0378デフォルトの名無しさんNGNG
ファイル内でstatic で定義した値を
extern で外部からアドレス参照できるようにするのはC言語動作的に
大丈夫なのでしょうか?

hoge.h
--------------------------
extern const int* gp_hoge;

--------------------------


hoge.cpp
--------------------------
static const int moge = 1;
int* gp_hoge = &moge;
--------------------------


main.cpp
--------------------------
#include "hoge.h"

int main()
{
printf("%d\n" , *gp_hoge );
return 0;
}
--------------------------
0379デフォルトの名無しさんNGNG
>378
動作上はまったく問題ない

が、なるべく使うのはやめたほうがいい
0380デフォルトの名無しさんNGNG
>>378
何のためにstaticをつけているのだろうか。
0381デフォルトの名無しさんNGNG
int i;
char a[5][6];

ってカンジに宣言してて

iはいろいろ変わっていってて、ある条件下で
a[0][1]にiの値を入れたいんですが何か方法ありませんか?

0382デフォルトの名無しさんNGNG
a[0][1] = i;
0383デフォルトの名無しさんNGNG
>381

if ( i == "ある値" )
a[0][1] = i;
0384381NGNG
>>382-383
そうやって代入して文字列a[0]を出力すると、
printf("%s",a[0]);では、
a[0][1]の部分がちゃんと出力できないですよね?
これを解決する方法ないですか?
0385デフォルトの名無しさんNGNG
printf("%c",a[0][1]);

もしくは


a[0][0] = " ";
と適当に値を放り込んでから表示。
0386デフォルトの名無しさんNGNG
a[0][0] = ' ';
だろう
0387デフォルトの名無しさんNGNG
a[0][1] = i +'0';
0388385NGNG
>386

_|\○ノ"  あ・・・
0389デフォルトの名無しさんNGNG
>379
>が、なるべく使うのはやめたほうがいい

なぜ?

>380
>何のためにstaticをつけているのだろうか。

見られたくないことがあるから。
そんときgp_hogeは他を指してればいい。
0390デフォルトの名無しさんNGNG
下のように、forループの中である条件が成立したときに、
(breakのようにforループを抜けてしまうのではなくて)
iを一つ進めてforループ中の処理の先頭に飛びたいのですが、
簡単に書く方法(命令)は無いのでしょうか。(break並に)
条件以下をswitchしてもいいのですがなんか書き方が面倒です。

for(i=0;i<1000;i++)
{
:
:
if(hoge==hoo){以降の処理をせずにiを一個進めてループ中の処理の先頭に戻る)}
  : 
  :
(色々な処理)
  :
  :
}
0391デフォルトの名無しさんNGNG
>>390
なんかネタみたいな質問だなcontinue
0392デフォルトの名無しさんNGNG
>>391
あ、便利なのがあったんですね。知りませんでした。ありがとうございます。
0393デフォルトの名無しさんNGNG
Cの場合はループ中で制御変数を書き変えても大丈夫ですよね?
0394デフォルトの名無しさんNGNG
>>393
まぁな。ただしそんなコード書く奴は馬鹿だが。
0395デフォルトの名無しさんNGNG
ファイル内でstatic で定義した変数を
extern で外部から参照できるようにするのはC言語動作的に
大丈夫なのでしょうか?

hoge.h
--------------------------
extern const int moge;
--------------------------


hoge.cpp
--------------------------
static const int moge = 1;
--------------------------


main.cpp
--------------------------
#include "hoge.h"

int main()
{
printf("%d\n" , moge);
return 0;
}
--------------------------
0396デフォルトの名無しさんNGNG
>>395
上で回答もらってんだろ。氏ね。
しかもcpp?馬鹿。
0397デフォルトの名無しさんNGNG
失礼しました
ファイル内でstatic で定義した変数を
extern で外部から参照できるようにするのはC言語動作的に
大丈夫なのでしょうか?

hoge.h
--------------------------
extern const int moge;
--------------------------

hoge.cp
--------------------------
static const int moge = 1;
--------------------------

main.c
--------------------------
#include "hoge.h"

int main()
{
printf("%d\n" , moge);
return 0;
}
--------------------------
0398デフォルトの名無しさんNGNG
>>397
hoge.h の中の extern は未解決参照としてリンカに渡されリンカが自動生成するオブジェクト
hoge.cp の中の static は内部ラベルがつくだけでリンカにはDATAセクションの一部として渡される
main.c が参照している moge は hoge.h で宣言された未解決参照で、hoge.cp で定義された moge とは別物
よって main.c の翻訳結果を実行したとき、規格合致処理系なら 0 と表示する
もし 1 と表示する処理系があったなら、その処理系は規格合致処理系ではない
0399デフォルトの名無しさんNGNG
>>394
普通だ。それより、
>>393
for の構文を検討するように。
制御変数などというものはない。
0400394NGNG
>>399
あ〜、おれも言い方がまずかった。
for (i = 0; i < 10; i++)
みたいな文でiを中で変更するなってことね。

> 制御変数などというものはない。
まぁ、>>393が言わんとすることは大体わかるだろ。
そんなに肩肘張らなくても…。
0401デフォルトの名無しさんNGNG
>393の質問は、
>ループ中で制御変数を書き変えても
だよな。

>for (i = 0; i < 10; i++)
つーか、ループ中に変えてるじゃん。
0402デフォルトの名無しさんNGNG
(;´Д`)ハァハァ
ttp://www.cppreference.com/
0403デフォルトの名無しさんNGNG
>>400
いや、for が
for (変数=初期値; 変数を使った終了判定; 変数++)
という書式だとか思っているなら間違いだし、
変数を途中で増やそうが減らそうが何の問題もない。
0404394NGNG
>403
いやいやいや。もちろん、あなたのおっしゃるとおりです。
が、まぁ、私の言いたいことは典型的なfor (i = 0; i < 10; i++)みたいな
イディオムにおいて、ループ中でiをいじるのは「スタイルとして」ダメでしょうという、
ただその1点のみです。
なぜfor文がこういう構文になっているのか、という問題でもありますし。
0405デフォルトの名無しさんNGNG
>>404
あーやっと理解できた。スマソ
それなら同意。
0406デフォルトの名無しさんNGNG
自作した二分木をコンソールに出力したいんですが
難しくて悩んでいます。きれいに木のようにしてコンソールに
描画するいい方法はないでしょうか・・・。

     8
    +-+-+
    5   10
  +-+-+
  2   6

たとえば↑こんなふうに・・・
0407デフォルトの名無しさんNGNG
末端から必要スペースの総量を計算していけばいけると思うよ。
0408デフォルトの名無しさんNGNG
るbyさいこう!
0409デフォルトの名無しさんNGNG
float 型って符号部1bit, 指数部8bit, 仮数部23bitなんですよね?

float f = -1.5;
などとしたときにビットがどうなっているか知りたいのですが,
どのような方法がありますか?

0410デフォルトの名無しさんNGNG
・fのアドレスを取得してcharのポインタに放り込む
でおk
0411デフォルトの名無しさんNGNG
(u)int32_tとかの方がいいんじゃないか?
0412デフォルトの名無しさんNGNG
あー、32bit決め打ちなら確かにそれでいいな
0413デフォルトの名無しさんNGNG
unsigned long fToUL(float src)
{ return *(unsigned long*)&src; }

unsigned long x = fToUL(-1.5f);
↑x のビットを調べれば桶

キャストがいやなら union でやれば桶
0414デフォルトの名無しさんNGNG
unsigned int flg;
float shousuu;

for(flg=0x80000000;flg;flg>>=1){
if(flg&(unsigned int)shousuu){
putchar('1');
}else{
putchar('0');
}
}
0415409NGNG
いろいろありがとうございます
今環境がないので, 夜にでもやってみます
0416476 ◆FIcNi4f8js NGNG
>>414-415
(unsigned int)shousuu
これはダメだよ
0417401NGNG
>>404
未だ判らないんだけどさ、>400はループ中でiを変えてるじゃん。
それとも、forの括弧の中はループ中じゃないと言う主張?
0418デフォルトの名無しさんNGNG

>     8
>    +-+-+
>    5   10
>  +-+-+
>  2   6

  2+
  + 5+
  6+ +
    + 8
    +
   10+

これでどうかね?
0419デフォルトの名無しさんNGNG
char a[]="aiueo";

printf ("%s\n",a[2]);

エラーがでますがなぜですか?
予想ではuが表示されると思うのですが・・・
0420デフォルトの名無しさんNGNG
>>419
%sを使っているからじゃないの?
0421デフォルトの名無しさんNGNG
%c使え
0422デフォルトの名無しさんNGNG
>>419
printf("%c\n", a[2]);
0423デフォルトの名無しさんNGNG
×printf ("%s\n",a[2]);
○printf ("%c\n",a[2]);

printf ("%s\n",&a[2]);
printf ("%s\n",a);

この二つも試して違いを調べてみてくれ。
0424デフォルトの名無しさんNGNG
ついでにprintf ("%s\n",a+2); もやった方がいいと思うぞ
0425デフォルトの名無しさんNGNG
おお!!
凄いレスが!
皆さんサンクスです。
%sは先頭からって感じですねありがトン
0426デフォルトの名無しさんNGNG
printf("%s\n",2[a]);

>%sは先頭からって感じですねありがトン
おまえはあふぉ
0427394NGNG
>>417
それは単にあなたの揚げ足取りだと思います。
それがわかっているなら、あんな質問は出ないでしょう?
0428デフォルトの名無しさんNGNG
>>426
ひどいこと言わないの
0429デフォルトの名無しさんNGNG
>>426
(;´Д`)?まともに動かないだろそれ。
0430デフォルトの名無しさんNGNG
sizeof(s[0]) == 1 ⇒ 2[s] == s[2]
0431デフォルトの名無しさんNGNG
アドレスと値をゴッチャにしてるうちは悩みつづけそう。
0432デフォルトの名無しさんNGNG
>>430
「sizeof(s[0]) == 1」という事実と「2[s] == s[2]」という事実が
どうつながるのか意味不明なんですけど。
0433デフォルトの名無しさんNGNG
>>432
「2[s] と書くと、s から 2バイト後ろを指す」
とでも思ってるんでしょう。

s がどの型を指していても (void * は除く)
a[b] と b[a] は等価ですから! >>430
0434デフォルトの名無しさんNGNG
a[b]とb[a]が等価であると言い張るなら
[a,b]と書けても何の不思議もないはずだ。違うか?
0435デフォルトの名無しさんNGNG
違う。
0436デフォルトの名無しさんNGNG
>>434
そこまで言うなら]a, b[でもいいじゃないか。違うか?
0437デフォルトの名無しさんNGNG
0[a+b]ならいけるか
0438デフォルトの名無しさんNGNG
struct DATA{
     char *str
     int num
};

この構造体について説明するときどう言えばいい?
「文字型ポインタ変数と整数型変数をメンバに持つ構造体DATA」ってのはおかしい?
0439デフォルトの名無しさんNGNG
構成要素の説明としては普通に通じるとは思うけど
説明って何の為のものかを言うべきなんじゃないのか。
0440デフォルトの名無しさんNGNG
>>438
charポインタとint型変数をメンバに持つ…でいいじゃん。
変に日本語にするとあいまいにならないか?
「整数型」はshort・longも含むし。
0441デフォルトの名無しさんNGNG
>>438
「バグってます」
以上。
0442デフォルトの名無しさんNGNG
>>419
printf("%c\n", 2["aiueo"]);
0443デフォルトの名無しさんNGNG
> 2["aiueo"]
この書き方って相手をビビらす以外にまともな使い道ってあるの?
0444デフォルトの名無しさんNGNG
>>427
Cでは、ループ制御は自分でしなければなりません。
whileではなくforを使うなら、ある程度判りやすく書くことが出来ます。

と言う説明でいいのでは?
0445デフォルトの名無しさんNGNG
>>443
こっちならデバッグ用に使うんだけどね。
printf("%c\n", "abcdef"[val]);
0446デフォルトの名無しさんNGNG
#include <stdio.h>

int main(){
int a[] = {1,100,10000},*b = a;

//アドレスの中身を++してからその値をアドレスとして参照した先の値を表示
printf("1: *b == %d\n",*b++);

//上に同じ
printf("2: *b == %d\n",++*b);

//参照先のアドレスの中身を--してから表示
printf("3: *b == %d\n",--(*b));

//アドレスの中身を--++++した値をアドレスとしてその値を表示した後その値を++
printf("4: *b == %d\n",++*(--b)++);

//*bの中身を表示
printf("5: *b == %d",*b);

優先順位だけで見るとコメント文のように実行されると思うのですが、
実際は後置インクリメントは優先順位が高いにも関わらず処理の順番
は遅くなります。
演算子の優先順位と処理の順番は別物なのでしょうか。

return 0;
}
0447デフォルトの名無しさんNGNG
訂正します。

>>//アドレスの中身を--++++した値をアドレスとしてその値を表示した後その値を++

//アドレスの中身を--++++した値をアドレスとして参照先の中身を表示
0448デフォルトの名無しさんNGNG
アドレスの中身ってなんだろう・・
0449デフォルトの名無しさんNGNG
>>448 わかりにくい表現ですみません。

アドレスの中身 == メモリのアドレス先に格納されている値

という意味で使用しました。
0450デフォルトの名無しさんNGNG
「b++」という式のを評価した場合、増加前の値だと決まっている。
*b++のような場合は先にbが増えていることもありうるが、
それとこれとは別問題。
C++で自分で++のオーバーロードやってみると、なんとなくわかるよ。
0451デフォルトの名無しさんNGNG
評価の順番でいえば
++*(--b)++ は ++(*((--b)++))
0452デフォルトの名無しさんNGNG
>>446
インクリメント演算子などは関数に見たてて考えたらいい。
前置の場合はインクリメントさせた自分自身が返されて
後置の場合はインクリメントするが返されるのは元の値、てなふうに
0453デフォルトの名無しさんNGNG
open()システムコールをコールする関数があります。
その関数は諸事情によりclose()しないまま処理を終了します。
が、条件によってたまにクローズする時もあります。

再びその関数が呼ばれた時
対象ファイルがオープン状態かクローズ状態かを判定する方法ってありますか
0454デフォルトの名無しさんNGNG
>>453
常にcloseしない(orする)ようにしろ。
0455デフォルトの名無しさんNGNG
静的変数に記録するなり、引数と戻り値を使うなりしろ
0456453NGNG
closeすると
�@「ここまでreadした」カーソルが最初に戻ってしまうので
カーソルを記録するための処理がかなり増える
�A何万回とファイルアクセスを繰り返すのでopen close openは負荷になる

上記理由から
オープン判定が可能であればopenしっぱなしが良いんだけど
判定は不可能ってことでFAですか?
0457446NGNG
ありがとうございました。評価順位についてもう一度よく考えてみます
0458デフォルトの名無しさんNGNG
>>453
ロックでもかけとけば?
0459デフォルトの名無しさんNGNG
>>458

ありがとうございます。ヘヴィメタでいいですか?
0460デフォルトの名無しさんNGNG
>>456=453
完全な解答聞きたかったら環境ごとのスレ行け。
環境に依存するのにFAは無理だろ。

標準では無理だけど
0461デフォルトの名無しさんNGNG
openとcloseのラッパ作るとか。
0462453NGNG
あっさりできる方法ってありそうで意外とないもんなんですね

制御の方を見直すことにします。
回答してくれた方々、どうもありがとうございました。
0463デフォルトの名無しさんNGNG
>>457
演算子の優先順位と結合規則でぐぐれ、考える必要も無いぞw
0464デフォルトの名無しさんNGNG
#define porta (*(int *)0x05)

ポインタの基本はある程度理解しましたが、上の意味というか書式の組み合わせがよくわからないっす。
PIC16F84マイコン用のプログラムで、I/Oポートaのレジスタ(アドレス0x05)にアクセスするのですが・・・。
なんでこれでアクセスできるようになるのかよくわからないです。

(*(int *)0x05)
↑ここに"(int *)"があるのがよくわかんないです。で、入れたことにより"* 0x05"がどういう役割を持つのかと。

とりあえず、すでに質問している自分が何言ってるのかすらよくわかりません _| ̄|○

サルな私にも理解できるように、優しく、かつ美しく、そして華やかに教えてください。
お願いしますm(__)m
0465デフォルトの名無しさんNGNG
>>464
> ここに"(int *)"があるのがよくわかんないです。
整数をポインタにキャスト
0466446NGNG
>>463 早速ぐぐりました。

演算子の優先順位と結合規則によって処理の順番が決定されるのですね。

ありがとうございます。
0467デフォルトの名無しさんNGNG
VC++の質問ここでしてオッケですか?
0468デフォルトの名無しさんNGNG
>>465

キャストでしたか・・・。始めたばかりでキャストに頭が回りませんでした。
数学的にカッコを展開してました。 _| ̄|○ 
もう一度基礎からやり直します。
どうもでしたm(__)m。
0469デフォルトの名無しさんNGNG
わざとらしいので絶 対 にダメだ
0470デフォルトの名無しさんNGNG
おk(ry
0471デフォルトの名無しさんNGNG
>>462
状態を記録した構造体なり何なりをやり取りするようにするくらいしかないんじゃない?
staticな変数に記録って手もあるだろうけどリエントラントにならないし、
色々神経つかわんとならんし。
0472デフォルトの名無しさんNGNG
ファイルハンドル用のint変数を初期値-1にしておく。
open()したら0以上になる。close()したらまた-1を格納しとけ。
0473デフォルトの名無しさんNGNG
>>403
for?(前処理; まじ?; 再処理)
ですか?
0474デフォルトの名無しさんNGNG
union {
    T1 t1;
    T2 t2;
} u;

で、u.t1 に値をセットしたあとに u.t2 にアクセスするとどうなるんですか?
未定義の動作ですか?
0475デフォルトの名無しさんNGNG
>>474
http://www9.plala.or.jp/sgwr-t/c/sec16.html
0476デフォルトの名無しさんNGNG
>>474
それを未定義にしたらunionの存在意義がなくなるぞ。
0477デフォルトの名無しさんNGNG
どうして未定義と思ったのか興味ある。解説してよ
0478デフォルトの名無しさんNGNG
すみません、教えてください。
floatの変数を小数点以下n桁で切り捨てるにはどうすればいいのでしょうか?
今はn桁繰り上げてintにキャストしてまたfloatに戻してn桁繰り下げ、という
ことをしてるんですが、もっと効率がいい方法ってないでしょうか?

float round(float value, int digit)
{
  int temp;
  temp = (int)(value * pow(10, digit));
  return ((float)temp) / pow(10, digit);
}
0479デフォルトの名無しさんNGNG
>>478
sprintf()してatof()とか?
0480デフォルトの名無しさんNGNG
>>479
m9(ry
0481デフォルトの名無しさんNGNG
&0x0000ffff
0482デフォルトの名無しさんNGNG
>>478
精々、pow(10, digit) を中間変数に保存するとか。
(コンパイラによっては最適化でやってくれるかも知らんが)
あとは…digit の値の範囲限定できるなら
static const double pow10[] = {1e0, 1e1, 1e2, 1e3, ...};
みたいに、表引きするとか。
0483デフォルトの名無しさんNGNG
> それを未定義にしたらunionの存在意義がなくなるぞ。

こいつunionの存在意義を勘違いしているぼけ。
0484デフォルトの名無しさんNGNG
> > それを未定義にしたらunionの存在意義がなくなるぞ。
> こいつunionの存在意義を勘違いしているぼけ。

たしかに

typedef union {
short word;
char byte[2];
} foo;
とかやってそうだ。で、unionを「そういうふうに使うためのもの」だと思い込んでいさそうな厨だな。
0485デフォルトの名無しさんNGNG
> close()したらまた-1を格納しとけ。

こいつは、openとcloseの対応関係がすでに把握できないような「おわってる」ソースを
平気でかくぼけだからこういうことを言うわけだ。

もしくは、そういう「おわってる」ソースを書くぼけな会社の先輩に「そういうものだ」と
おしえられてそのまま信じ込んでいるぼけ
0486デフォルトの名無しさんNGNG
> closeすると「ここまでreadした」カーソルが最初に戻ってしまうので
> カーソルを記録するための処理がかなり増える

っていうか、そんな不安定な状態でオープンしっぱなしってのが ぼけ
readするたびに書け!
0487デフォルトの名無しさんNGNG
> 「b++」という式のを評価した場合、増加前の値だと決まっている。
> *b++のような場合は先にbが増えていることもありうるが、

ねーよ > ありうる
ぼけ。

Cの基本中の基本だろうが ぼけ
0488デフォルトの名無しさんNGNG
>>483-487

まとめて書け ぼけ
0489デフォルトの名無しさんNGNG
2つぐらい別にかいてもいいだろ? ぼけ
それにもともと別のに関することだから2つわけて書くのが当然だ! ぼけ
0490デフォルトの名無しさんNGNG
>>487
お前はその基本すら不完全にしか知らないからそういう馬鹿回答が出るわけで。
0491デフォルトの名無しさんNGNG
>>487
ここでも読んでなぼくちゃん
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0492デフォルトの名無しさんNGNG
退散する前に、10種類のコンパイラ、いい加減に言えよ?
0493デフォルトの名無しさんNGNG
センセー

ファイル内でしか使わない関数は全部static付けてるんですけど、
コレって何かデメリットあります?
0494デフォルトの名無しさんNGNG
>>493
外部から無茶な使われ方せずにすむ。
名前が衝突しなくなる。
0495デフォルトの名無しさんNGNG
>>493
ない。そうするのが普通。
0496494NGNG
あ、デメリットか。
「後で使いたくなったとき外部から呼び出せなくなる」とか馬鹿が言いそうだが無視しろ。
0497デフォルトの名無しさんNGNG
>「後で使いたくなったとき外部から呼び出せなくなる」とか馬鹿が言いそうだが
そんな馬鹿見たことねーよ
お前がそう最初勘違いしてただけだろ
0498494NGNG
>>497
上でとんだ恥かいてる罵倒厨か。おつかれ。
0499デフォルトの名無しさんNGNG
なんか知人のプログラム見たりしたらあまり使われてなかったから何かあるんじゃないかと気になってたんだ。
うん、ありがとうオマイラ ヾ(・ω・*)
0500デフォルトの名無しさんNGNG
> ファイル内でしか使わない関数は全部static付けてるんですけど、
> コレって何かデメリットあります?

ない。積極的につけろ。

せいぜい、処理系によっては、リンク後のmapファイルに関数名がでてこないただの
uniqueな番号になってしまうものもある。程度。(たがいはファイル名と関数名をつないで
数字をつけたもの程度になるだけだけど)
0501デフォルトの名無しさんNGNG
> ここでも読んでなぼくちゃん
> http://www.st.rim.or.jp/〜phinloda/cqa/cqa7.html

とりあえずそのURLだしておけばにげられると思ったぼけか ;-)

だが

> *b++のような場合は先にbが増えていることもありうるが、

が明らかなぼけなのは、そのペイジ見ても同様。
0502デフォルトの名無しさんNGNG
>>501
またえらく遅いレスだな。必死になって調べてましたか?
では、説明してもらおうかね。
0503デフォルトの名無しさんNGNG
> またえらく遅いレスだな。

まってたのかー
えらく必死だね ;-)
0504デフォルトの名無しさんNGNG
また伝説を作るのかい。
0505デフォルトの名無しさんNGNG
>>503
いや、そんな返しいらんからさ、早く説明してごらん、ぼくちゃん。
0506デフォルトの名無しさんNGNG
あ、わかった! きっと 502 は

> *b++のような場合は先にbが増えていることもありうるが、

なんていう知ったかぶりをしてしまった張本人で、それをごまかそうと必死なのか!
なるほど。
0507デフォルトの名無しさんNGNG

while(1)
printf("ぬるぽ");
0508デフォルトの名無しさんNGNG
>>504
なに?こいつ、前もこんなことしてんのか?
かまうだけ無意味?

>>506
お前からはまともなレスは一切来ないな。
それで会社では「こんな終わってるコード書くなよな〜」なんて後輩いびってるわけ。
屑ですね。ぷ。
0509デフォルトの名無しさんNGNG
じゃあ、答えかかないほうが、長くひっぱれておもしろそうだな ;-)

というわけで、ほかのひとも答え(彼のボケを確実に指摘してしまうような)を
かかないでください。
ご協力おねがいします。
0510デフォルトの名無しさんNGNG
ということにしたいのデスウォンドンペリンカーン
0511デフォルトの名無しさんNGNG
>>507
lintでエラーでるよ。
for (;;) にしろ。
0512デフォルトの名無しさんNGNG
いくらごまかしても、君の特徴はくっきりはっきりぴっかぴか。
0513デフォルトの名無しさんNGNG
日下部圭子のマンコに挿入
0514デフォルトの名無しさんNGNG
なんでwhile(1)だめなん?
定数使ってるから?
0515デフォルトの名無しさんNGNG
>>513
いや、日下部ならもうちょっとマシなこと言うぞ。
0516デフォルトの名無しさんNGNG
ふふ。

> *b++のような場合は先にbが増えていることもありうるが、

これで何時間ひっぱれるかな ;-)
がんばれば20時間ぐらいひきずりまわしてあそべるかな ;)
1週間は無理か。

しったかぶりをしてしまって、必死になってしまっている厨が、
ひーひーいって、脈拍があがっている状態を長く保たせたほうがおもしろいよね。
で、
かれが「ふう、これでごまかしきれた」と思ったころに、また
「 *b++のような場合は先にbが増えていることもありうるが、」と
ひとこと書くだけでいいのです。
ごきょうりょくおねがいします ;-)

(そうすれば、また必死になってあばれるでしょうから^^)
0517デフォルトの名無しさんNGNG
なるほど今週のお題か > 『 *b++のような場合は先にbが増えていることもありうるが』
0518デフォルトの名無しさんNGNG
こわがりスキー
0519デフォルトの名無しさんNGNG
さすがに1週間はむりだろ? 「本日の」ぐらいでは?
0520デフォルトの名無しさんNGNG
ものすごくわかりやすい自作自演だなw
0521デフォルトの名無しさんNGNG
彼専用のIDが表示されているかのような自作自演
0522デフォルトの名無しさんNGNG
ふえているコンパイラーを10個あげろ?

もしくはその挙動が不定や未定義であるという記述を規格にみつけろ?

いまごろひっしこいて規格をしらべてるのかな。
あ、標準規格とか読むぐらいのまともなやつならそんなまぬけなこと言わないか。
せいぜいgoogleしまくってる程度だろうなあ。(でもぜったいにみつからないだろうが。
増えているような場合は)
0523デフォルトの名無しさんNGNG
で、10種類は?
0524デフォルトの名無しさんNGNG
> いや、日下部ならもうちょっとマシなこと言うぞ。

かれはいまヨーロッパ旅行中のはず。
fjに書いてあった。
0525デフォルトの名無しさんNGNG

「おいすー^^」

「あ、キチたん インしたお!」

「よーし、今週も1スレ潰すぞー^^」

「おー^^」
0526デフォルトの名無しさんNGNG
>>524
fjがまだ機能していることに驚いた
0527デフォルトの名無しさんNGNG
その前は何だったっけ・・・・・・多すぎて思いだせん
0528デフォルトの名無しさんNGNG
まあ、あばれている彼の目的は、
自分が
「 *b++のような場合は先にbが増えていることもありうるが、」
などとまぬけなしったかぶりをしてしまったことを
葬り去るためなんだろうけど。

どうせ匿名なのになんで、そんなに必死になるのだろうか?
0529デフォルトの名無しさんNGNG
>>528
一人でやっててくれ(^^
0530450NGNG
*b++のような場合は先にbが増えている、ということはありませんでした。
手元のgcc、bccで試しましたがいずれも結果は私の考えが間違っていた
ことを示しておりました。もう二度とあのようないい加減なことは書きませんので
ご勘弁ください。
0531デフォルトの名無しさんNGNG
>>528
こいつは先に増えていることは在りえないとさっさと証明すれば終わることなのに、
何をこんなに粘着しつづけているのか。
0532デフォルトの名無しさんNGNG
>>531
暇でしょうがないだけだろ
0533デフォルトの名無しさんNGNG
終わっちゃった
0534デフォルトの名無しさんNGNG
数学ができないプログラマは何を証明すればいいかわからない
0535デフォルトの名無しさんNGNG
>>530
ついに証言を偽造する始末。
厨必死すぎw
0536デフォルトの名無しさんNGNG
>>535
はいはい、もう終わったからねー、粘着しないで下さいゴン中山きんにくんせいや
0537デフォルトの名無しさんNGNG
>>530
さっさとそう認めてあやまればいいのにね。
なんであんなに暴れるんだろう。
0538デフォルトの名無しさんNGNG
え、今日のおやつ、こんだけ?
0539デフォルトの名無しさんNGNG
> こいつは先に増えていることは在りえないとさっさと証明すれば終わる

あのー...証明もなにもCの基礎の基礎だとおもうぞ。
i = 1 + 2; で i に3が入っていることを証明するよりむずかしい。
0540デフォルトの名無しさんNGNG
え? クサカベせんせいの真似をしているつもりだったわけ?

わたしは直接習ったことあるけど。
そんなに ぼけ ぼけ 言っているのはきいたことないぞ。

それとも、たまたまわたしのクラスが優秀だっただけ?
0541デフォルトの名無しさんNGNG
>>539
ANSI-C規格が証明であり基礎だろう
0542デフォルトの名無しさんNGNG
いまどきANSI-Cなんていういいかたするやつがぼけ
0543デフォルトの名無しさんNGNG
ANSIみればbが先に増えるわけねーことは一目瞭然。
っていうかANSI以前からそうだし。
0544デフォルトの名無しさんNGNG
っていうか、そんな「基礎中の基礎」をANSI規格がうんぬんいわなきゃいけないから
厨っていわれるんだろうに。
0545デフォルトの名無しさんNGNG
日曜だねぇ。
中高生はもう冬休みなのか?
0546デフォルトの名無しさんNGNG
中高生以下ののうみそしかないやつがなんかいってるー
0547デフォルトの名無しさんNGNG
自作自演て難しいんだな。
0548デフォルトの名無しさんNGNG
*b++ 程度の基本中の基本でまちがえたのが、よほどくやしかったんだね。
0549デフォルトの名無しさんNGNG
っていうか、そこわかってないで「C使ってる」とはいえないもんな。
0550デフォルトの名無しさんNGNG
きょうは「*b++のような場合は先にbが増えている」をつまみに
酒が1升ぐらい飲めそうだな。
0551デフォルトの名無しさんNGNG
厠必死スキー
0552デフォルトの名無しさんNGNG
おお、絵に描いたような自作自演。
0553デフォルトの名無しさんNGNG
どれとどれがおなじ? > 552
0554デフォルトの名無しさんNGNG
それにしてもここレベル低いなあ。
0555デフォルトの名無しさんNGNG
見るまでもわかるだろw
0556デフォルトの名無しさんNGNG
printfの戻り値は見たほうがいいのでしょうか?
0557デフォルトの名無しさんNGNG
>>556
黙れ
0558デフォルトの名無しさんNGNG
>>555
イミフ
0559デフォルトの名無しさんNGNG
>>558
直す前に押し
0560デフォルトの名無しさんNGNG
>>559
よく有
0561デフォルトの名無しさんNGNG
で、今日あおっていたのは、void氏の弟子なんですか?
0562デフォルトの名無しさんNGNG
日曜日だってのに、えらいスレ進行速いなぁおい。
引きこもってないで遊びに行きなさい。

…ん?おぢさんは仕事中だ。orz
0563デフォルトの名無しさんNGNG
562もかなりのこわがりすぎーだな。
0564478NGNG
>>479
>>482
レスありがとうございます。
乏しい知恵を絞ってやっと思いついた方法なんですが、ひょっとして
もっといい方法があって、自分だけ回りくどいことをしてるのかな、と
思ってました。
方法自体はそれほどとんでもなくおバカなわけではないんですね、
安心しました。
0565デフォルトの名無しさんNGNG
>>564
浮動小数点数に対して、切り上げとか切り捨てとかを
真剣に考えようとする事そのものが、かなりおバカだとは思うけどな。
0566デフォルトの名無しさんNGNG
>>565
煽るだけか?
0567デフォルトの名無しさんNGNG
>>566
そうだが、何か?
0568566NGNG
いや、なんでもない。
忘れてくれ。
0569デフォルトの名無しさんNGNG
「b++」という式のを評価した場合、増加前の値だと決まっている。
*b++のような場合は先にbが増えていることもありうるが

プ
0570デフォルトの名無しさんNGNG
入力バッファをクリアする際にfflush(stdin)を使うのは間違っていると、
ある本に書いてありましたが、入力バッファを消すにはどのようにしたら
良いのでしょうか。
0571デフォルトの名無しさんNGNG
読み捨て
0572デフォルトの名無しさんNGNG
clrstdin();
0573570NGNG
>>571 >>572 

\nになるまで読み捨てるか、clrstdin();を使用するのですね。
これからはそのようにします。ありがとうございます。
0574570NGNG
>>572 今試してみたのですがclrstdin();がコンパイルできませんでした。

stdio.hにないのかと思い辞書で調べましたが、clrstdin()はありませんでした。
そこでgoogleで「clrstdin」で検索をかけたのですが1件もヒットしません。

どのような関数なのか教えてくださいませんか?お願いします。
0575デフォルトの名無しさんNGNG
>>574
clrstdinは標準ライブラリ関数には含まれていないから諦めろ。
0576570NGNG
>>575 はい、諦めます。教えて下さりありがとうございました。
0577デフォルトの名無しさんNGNG
>>567
失せろ。
0578デフォルトの名無しさんNGNG
> 「*b++のような場合は先にbが増えていることもありうるが」

ふふ
0579デフォルトの名無しさんNGNG
570じゃないけど、rewind(stdin)はどないな感じなんですか?
0580デフォルトの名無しさんNGNG
>579
>571-576みたいな感じ。
0581デフォルトの名無しさんNGNG
>>578
kita-
0582385NGNG
質問です

関数の外に書いた変数宣言は、どのタイミングで領域を確保するのでしょうか?
0583582NGNG
名前消すの忘れてた ○| ̄|_
0584デフォルトの名無しさんNGNG
>>582
最初
0585582NGNG
というと、exeを実行した時点ででしょうか?
0586デフォルトの名無しさんNGNG
簡単なソースでアセンブリソース見て見れ。
0587582NGNG
ごめんなさい、アセンブラわかんないです
デバッガなどで調べてみます

ありがとうございました
0588デフォルトの名無しさんNGNG
「b++」という式のを評価した場合、増加前の値だと決まっている。
*b++のような場合は先にbが増えていることもありうるが
0589デフォルトの名無しさんNGNG
>>588
もうそのネタはいいから。
0590デフォルトの名無しさんNGNG
で、10種類は?
0591デフォルトの名無しさんNGNG
すみませんが教えて下さい。
下の様なプログラムを組んだところ、「関数は値を返すべき」という忠告が出ました。
どこか間違ってますでしょうか?分かる方、ご教授の程お願いします。

#include <stdio.h>

int beki(int a,int b);

main(){
int x,y,z;

x=2;
y=3;

z=beki(x,y);

printf("%dの%d乗は%dです。",x,y,z);

}

int beki(int a,int b){
int zz,i;
zz=1;

for(i=0;i<b;i++){

zz=zz*a;

}
return zz;
}
0592デフォルトの名無しさんNGNG
main
0593デフォルトの名無しさんNGNG
>>591
>どこか間違ってますでしょうか?
あんたがプログラミングをしようと思うこと。
0594デフォルトの名無しさんNGNG
生き方
0595デフォルトの名無しさんNGNG
分かりました。ありがとうございました。
0596デフォルトの名無しさんNGNG
>>591
マジレスすると、main()の戻り値が省略されているので、intを返すとみなされている。
main()の最後に return 0; でも付ければ警告は消えるだろ。
0597デフォルトの名無しさんNGNG
時間を使わないで乱数を使いたい場合はどうしたらよいでしょうか?
0598デフォルトの名無しさんNGNG
rand()の種のことだろうか・・・
0599デフォルトの名無しさんNGNG
>>598
そうです
種をまきたいんですが
time.hが使えないんですよ
0600デフォルトの名無しさんNGNG
>>599
何らかの方法で毎回変わる値を作ればいい。
起動回数でも何でもいい。
0601デフォルトの名無しさんNGNG
起動回数なんてどうやって汁ですか?
ぐぐってもわかりません
0602デフォルトの名無しさんNGNG
>>601
ファイルに作るなりフラッシュに書き込むなりすればいい。
詳細は環境依存。

他にも、状況によって変化していく様な、
どこかのメモリ領域の内容を種にするという方法もある。

とにかく、藻前自身が何らかの方法で毎回変化する値を実装すればよいのだ。
0603デフォルトの名無しさんNGNG
マイクから周囲の雑音を取り込んでSeedにする!(・∀・)
0604デフォルトの名無しさんNGNG
srand((unsigned)argv[0]);とかいいんじゃない?
他にも適当なローカル変数のアドレスを種にするのもまたよろし。
0605デフォルトの名無しさんNGNG
void initialize_random_number()
{
int seed;
printf("乱数の系列を初期化します。\n");
printf("乱数のシード(任意の正の整数):");
scanf("%d",&seed);
if(seed<1)seed=1;
srand(seed);
}

の中で乱数のシードという意味がわかりません。
0606デフォルトの名無しさんNGNG
>>605
コンタクトレンズ
0607デフォルトの名無しさんNGNG
うっ! Delphi
0608デフォルトの名無しさんNGNG
ふつうプロセスIDだろ > たね
0609デフォルトの名無しさんNGNG
いやらしい
0610デフォルトの名無しさんNGNG
> return 0; でも付ければ

ふつうEXIT_SUCCESS
0611デフォルトの名無しさんNGNG
>>610
>ふつうEXIT_SUCCESS

それ、素人。
0612デフォルトの名無しさんNGNG
いいえ。プロはみんなそれ
0613デフォルトの名無しさんNGNG
(しかも、うちのOSは正常終了が0じゃない)
0614デフォルトの名無しさんNGNG
> (しかも、うちのOSは正常終了が0じゃない)
誰も聞いてないです :-)
0615デフォルトの名無しさんNGNG
>>599
大抵、/dev/randomみたいな乱数作ってくれる仕掛けがあるから、それで初期化しろ。
0616デフォルトの名無しさんNGNG
>>612
nmitaみたいに害毒を垂れ流すのはそろそろよしてくれんか。
0617デフォルトの名無しさんNGNG
>>614
別に構わんが
0618デフォルトの名無しさんNGNG
データをy=exp(bx)で近似するときのa,bを求めるプログラムです。
x[i],y[i]にはデータが入っています。

bの値がかなり大きく出てきてしまいます。

x1 = x2 = y1 = xy = 0;
for(i=0;i<n;i++)
{
x1 += x[i];
x2 += x[i]*x[i];
y1 += log(y[i]);
xy += x*log(y[i]);
}
b = (n*xy-x1*y1)/(n*x2-x1*x1);
a = exp((y1-b*x1)/n);
0619デフォルトの名無しさんNGNG
xy += x*log(y[i]);
このへん?
0620618NGNG
>>619
すいません、どういうふうに変えればよいのでしょうか?
正直、どこが間違っているのかわからないんですが。
0621デフォルトの名無しさんNGNG
どうでもいいけどaってなんや
0622618NGNG
>>621
すいません。
「y=a*exp(bx)で近似する。」の間違いでした。
0623デフォルトの名無しさんNGNG
回答期待age
0624デフォルトの名無しさんNGNG
データの指数関数への当てはめを直線への当てはめに還元するやり方ね、
俺もやったことあるんだけど、かなりデータ数が多いか、最初からまとまった
データが得られていないとうまくいかない。そのときは仕方がないから
MathematicaのFindfit使っちゃった。
0625デフォルトの名無しさんNGNG
xy += x[i]*log(y[i]);
こうかな?
0626デフォルトの名無しさんNGNG
おっぱいが大きい人が好みなのですが、どうすればよいでしょうか?
0627デフォルトの名無しさんNGNG
char buffer[32];
strncpy(buffer, "AAA", 3);
strncat(buffer, "               ", 25);
strncpy(buffer, "BBB", 3);

スペースを25個追加する時に、いちいち"    "と
記述しないといけないんでしょうか?
うまい方法があったら教えて下さい。
0628デフォルトの名無しさんNGNG
>>626
頭悪スレに逝ってください。
0629デフォルトの名無しさんNGNG
>>627
char buffer[32];
char *p = buffer;
int i;
for(i=0;i<3;i++) *p++='A';
for(i=0;i<25;i++) *p++=' ';
for(i=0;i<3;i++) *p++='B';
*p = '\0';
0630デフォルトの名無しさんNGNG
char buffer[32]="AAA               BBB";
0631デフォルトの名無しさんNGNG
>>627
よくみたら最後がstrncpyじゃん
ひっかけ?
char buffer[32]="BBB";
0632627NGNG
strncat(buffer, "BBB", 3);
が正しかったです。ひっかけじゃないです。

>>629さんを参考にコードを作ってみました。
ありがとうございました。

char buffer[32];
getSpace(31, (char *)buffer);

void getSpace(int icount, char *p)
{
  for(int i=0;i<icount;i++)*p++=' ';
  *p++= 0;
  return;
}
0633デフォルトの名無しさんNGNG
>>627
char buffer[32], *p = buffer;
strncpy(p, "AAA", 3);
memset(p += 3, ' ', 25);
strncpy(p += 25, "BBB", 3);
*(p += 3) = '\0';
0634デフォルトの名無しさんNGNG
sprintf(p, "AAA%25sBBB", "");
0635デフォルトの名無しさんNGNG
●クルマが自転車にはねられた!9台目
http://hobby7.2ch.net/test/read.cgi/car/1103695847/
0636デフォルトの名無しさんNGNG
C言語のacceptのエラー処理で、

while (1){
 struct sockaddr_in client_sin;

 memset((void *)&client_sin, 0, sizeof(client_sin));
 len = sizeof(client_sin);
 accepted_socket = accept(listening_socket, (struct sockaddr *)&client_sin, &len);

 if (accepted_socket == -1) {
  if (errno != EINTR && errno != ECONNABORTED) {
   perror("accept");
   exit(1);
  }
  continue;
 }

 break;
}

と、書いてみたのですが、
acceptの正しいエラー処理がわかりません。

どのような処理を施せばよいでしょうか。
0637デフォルトの名無しさんNGNG
>>636
acceptはC標準にはありません。以上。
0638デフォルトの名無しさんNGNG
まぁ、ネットワークプログラミングスレ行きかな。
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
ネットワークプログラミング相談室 Port12
http://pc5.2ch.net/test/read.cgi/tech/1102427855/
0639デフォルトの名無しさんNGNG
すいません
InvalidateRectで全画面描画すると
凄いチカチカするんですが
これはもうどうしようもないんでしょうか?
0640デフォルトの名無しさんNGNG
>>639
>>1を注目して読んでみよう。
0641デフォルトの名無しさんNGNG
>>639
DoubleBufferは?
0642デフォルトの名無しさんNGNG
>>639
InvalidateRectってそういうことするためのものだ。
範囲が狭ければクリップ範囲を指定すれば?
0643デフォルトの名無しさんNGNG
#include <stdio.h>

char my_tbl[10] = {
0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09, 0x0a,
} ;

int main( void ) {

char* data ;
data = my_tbl ;
printf( "%d\n" ,sizeof(data) ); //★
return 0 ;

}

★の所で、10というサイズを得たいのですが、なにか良い方法は無いでしょうか?
ポインタが指し示す先のmy_tblのサイズを得たいのです・・・
無理でしょうか?
0644デフォルトの名無しさんNGNG
>>643
不可能
0645デフォルトの名無しさんNGNG
無理
0646デフォルトの名無しさんNGNG
マジっすか
0647デフォルトの名無しさんNGNG
うん
0648デフォルトの名無しさんNGNG
領域越えてるよ
文字列は最後に\0が入るから
それだと11バイトを入れてる
0649デフォルトの名無しさんNGNG
>>648
釣れますか?
0650デフォルトの名無しさんNGNG
aからbまでの最短距離を求めるプログラムを作ろうとしています。

  ●→●→● b
  ↑/↑/↑
  ●→●→●
  ↑/↑/↑
 a ●→●→●

条件が

 �@図で見ると●が等間隔に見えるが、実際は等間隔ではない。
 �A/は斜め上のみ移動可能とする。
 �B進める方向は、右、上、斜め上の3方向のみ。

です。参考になるプログラムを探しているのですが、巡回セールスマン問題
というプログラムを見つけたのですが、やりたい事と少し違う?感じがします。
このプログラムを解くのに参考になるWebページを知っている方、
又は、良い検索キーワードを知っている方が居ましたら教えてください。
よろしくお願いします。
0651デフォルトの名無しさんNGNG
>>650
・ダイクストラのアルゴリズム
・隣接リスト表現(adjacency matrix)
0652デフォルトの名無しさんNGNG
>>650
ちなみに、「巡回セールスマン問題」とは、すべての点を周り尽くす最短距離とその経路を
求める問題で、NP問題、すなわち、全数検査をしないと求まらない問題に分類されている。
0653デフォルトの名無しさんNGNG
>>650
男なら総当りだ。
0654デフォルトの名無しさんNGNG
あ、ごめん、adjacency matrixは正しい日本語訳は「隣接行列」だったわ。
どちらにしろ、それで解けるから。
0655デフォルトの名無しさんNGNG
>>650
●での最短距離と直前の●を求めて行けば解決
0656デフォルトの名無しさんNGNG
>>650
どうぞ。
http://www.me.sophia.ac.jp/or/lab/ishizuka/OC/spath_00.html
0657650NGNG
わたしは女です。o(`ω´*)o
勝手に変な私を想像しないでください。
0658デフォルトの名無しさんNGNG
あーそうだ。ついでに
「有向グラフ」もぐぐっとけ。要するに、あれだ、aからbとbからaの「重み」が違うって事。
一方通行を隣接表現してしまうと一方通行の表現が面倒になるので、通常は
逆方向を、最長経路よりも長いであろう値(99999999とか)にする。
0659デフォルトの名無しさんNGNG
キモ
0660653NGNG
>>657
おっと失礼、女性でしたか。
では改めて変な想像させてもらうよ。
0661650NGNG
おお、もうレスが。

>>651さん
>>653さん
>>655さん

ありがとうございます。さっそく調べます。
>>657さん。想像に釘さして申し訳ありませんけど、自分九州男児ですから。(つД`)スマソ
0662 ◆bGJcuGhzXI NGNG
cvd
0663デフォルトの名無しさんNGNG
>>650
最短距離が見付からなくとも死にはしない。
0664デフォルトの名無しさんNGNG
>>663
うっせハゲ
0665デフォルトの名無しさんNGNG
今ふと思ったんですが、

#include "hoge1.h"
#include "hoge2.h"

とかってなってたら、必ず hoge2.h が hoge1.h の後に取り込まれるんですか?
なんか優先順位的なものがあるような気がしました。
0666デフォルトの名無しさんNGNG
ありません
0667デフォルトの名無しさんNGNG
>>665
includeというものは
その位置に、そのファイルの内容を入れるという意味だ
優先もクソも無い
0668デフォルトの名無しさんNGNG
hoge1.h の内容が
#define foo 1
int fuga;
だとして

int func(void)
{
#include "hoge1.h"
fuga = foo;
return fuga;
}

は

int func(void)
{
#define foo 1
int fuga;
fuga = foo;
return fuga;
}

と同じです
0669デフォルトの名無しさんNGNG
頼むからincludeする順番を指定されるようなヘッダファイルを書かないでくれよ。
0670デフォルトの名無しさんNGNG
インクルードガード
0671デフォルトの名無しさんNGNG
double pow(double,double)べき乗関数を使おうと考えているのですが、
調べると
>数学関数によって定義域エラーが検出されると、
>errnoにEDOMの値が設定される。
>値域エラーが検出された場合は、
>errnoにERANGEの値が設定される。
>このとき数学関数はHUGE_VALの値を返す。(errno.h参照)
http://www.geocities.co.jp/SiliconValley-Bay/5543/mahou/c/math.html

がありました。
質問;
定義域エラーは関数に入る前に制限をすればいいと思いますが、
範囲エラー(値域エラー)について判断するプログラムをどうかけばいいのか
をご教授ください。よろしくお願いします。



0672デフォルトの名無しさんNGNG
>>671
if(errno==ERANGE)
0673デフォルトの名無しさんNGNG
>>652
惜しい!「全数検査をしないと求まらない(と思われている)問題」だ
そんなこと、どうでもいいんですけどね
0674デフォルトの名無しさんNGNG
>>671
関数にエラーかどうか判断してもらえばいいじゃん。
それが嫌なら、適当な値で線引きしとけ。
0675668NGNG
もし、書いちゃったとしたら、優先順位を変更するような
命令はあるんですか?
0676デフォルトの名無しさんNGNG
ない。
0677デフォルトの名無しさんNGNG
何をそんなに気にしているのか分からん。
0678デフォルトの名無しさんNGNG
インクルードの話が出たので・・・
例えば hoge.h で宣言される関数が stdio.h を使用する場合、
hoge.hの中でstdio.hをインクルードするべきですか?
それともhoge.c、およびhoge.hで宣言される関数を使うソースで
インクルードファイルを羅列するべきですか?
(すべてのヘッダに多重インクルードガードがされてる前提。)
0679デフォルトの名無しさんNGNG
>>678
FILEとかを引数に持つのなら stdio.hをincludeするしかないだろ。
0680デフォルトの名無しさんNGNG
>>678
ん?たとえばhoge.hにvoid func(void);ってプロトタイプが宣言されていて、
そのfunc()(定義はfunc.cにあるとする)内部でprintfやら何やら使って
いたとしても、

> hoge.hの中でstdio.hをインクルードするべきですか?
> それともhoge.c、およびhoge.hで宣言される関数を使うソースで
> インクルードファイルを羅列するべきですか?

↑どちらも必要ないぞ。そのへんはわかってる?
0681デフォルトの名無しさんNGNG
ヘッダは全てそれ単体でincludeできるようにするのがアタリマエだろ。
「先にxxx.hをincludeしておいてください」とかやられたらかなわん。
0682680NGNG
訂正
×:定義はfunc.cにあるとする
〇:定義はhoge.cにあるとする
0683デフォルトの名無しさんNGNG
別に設計思想て言うか好きで良いんじゃね?

個人的には単体includeで作るが
会社のは単体ヘッダだよ。
つまり、ヘッダにヘッダをincludeするなって意味だね。
必要な定義等がある場合、まさしく先にincludeが必要ってなる。

理由は他環境に移植や、ライブラリの保守や可読性とか…
例えば
多重インクルードガードがされていて、
目的のヘッダが何処で実際に展開されているのか分り難いとかを防ぐとか…
include先のヘッダに、更にincludeがしてあって、
そヘッダもincludeがしてあって…と延々となっていて
それが、多重インクルードガードで実際にどうなってるか分らないとかね。
0684デフォルトの名無しさんNGNG
プリプロセッサで処理すればいいだけでは?
0685デフォルトの名無しさんNGNG
>>678
ヘッダ内で、#ifdef使って、再定義を回避する。
0686デフォルトの名無しさんNGNG
>>685については、
http://www.wakhok.ac.jp/~kanayama/C/03/node112.html
0687デフォルトの名無しさんNGNG
>>683
アホ会社だ…
0688デフォルトの名無しさんNGNG
#pragma once
0689デフォルトの名無しさんNGNG
>>688
C99以降はよく知らんが、そんなの仕様にあったっけ?
0690デフォルトの名無しさんNGNG
>>683
// hoge.h
struct hoge { };

// hage.h
struct hoge* hage();

// hige.h
void hige(struct hoge*);

// hogo.h
#define hogo() hige(hage())

// main.c
#include "hogo.h"
main()
{
hogo(); // pass, but undefined behavior
}

よくあるケースだが、hogo マクロを使うだけな場面で
hogo マクロの実装詳細にいちいち立ち入らないと
必要なヘッダや引用すべき順序がわからないのは
巨大で複雑なソースとの付き合い方として苦しくねいか?

別にマクロを使ってるからどうのってわけじゃなく、
#include "hige.h"
main()
{
hige(); // error
}
でも同じことだよな
0691デフォルトの名無しさんNGNG
> FILEとかを引数に持つのなら stdio.hをincludeするしかないだろ。

こいつぼけすぎ。
べつに先にstdio.hをインクルードしtればいいじゃん。
0692デフォルトの名無しさんNGNG
> ヘッダ内で、#ifdef使って、再定義を回避する。

こいつもおおぼけ、それが678の行っている「多重インクルードガード」のことだろうが ぼけ
0693デフォルトの名無しさんNGNG
FILEを引数に持つのなら止むを得んが、
普通FILE*なので何もインクルードする必要なし。
0694デフォルトの名無しさんNGNG
> hogo マクロを使うだけな場面で
> hogo マクロの実装詳細にいちいち立ち入らないと
> 必要なヘッダや引用すべき順序がわからないのは

いや、そんな実装がそもそもまぬけ
0695デフォルトの名無しさんNGNG
> 普通FILE*なので何もインクルードする必要なし。

こいつぼけ。たとえポインターでもincludeしてないときはエラーだ。
0696デフォルトの名無しさんNGNG
C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
すいません、間違えてうえのスレに投稿してしまいました。こちらで質問にお答えいただけないでしょうか?
689からの投稿です
0697デフォルトの名無しさんNGNG
>>696
向こうのスレにレスがついているようだが
0698デフォルトの名無しさんNGNG
C言で、ある文字列を同じ座標に繰り返し出力させたいのですが
どうしたらいいでしょうか?教えてください
エスケープシーケンスはOSの関係上使えませんでした
0699デフォルトの名無しさんNGNG
>>694
それはあんたの実装とやらを聞いてからでないと
同意も反駁もしようがないな
0700デフォルトの名無しさんNGNG
うちはまともな実装なので、必要なヘッダーふぁいるは1つかせいぜい2つだな
0701デフォルトの名無しさんNGNG

                |
                |
                |
                |
     /V\        ,J >>700
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

0702デフォルトの名無しさんNGNG
>>698
環境を言わないとどうしようもない
0703デフォルトの名無しさんNGNG
環境を言われても誘導しかできないな、このスレでは
0704デフォルトの名無しさんNGNG
>>699
三田典玄みたいな害毒を垂れ流す奴に餌をやるのはよしてくれ。
0705デフォルトの名無しさんNGNG
すいません、教えてください。

ファイルから16bitのPCMデータをfreadで2byteずつ読んできて、
上位ビットを bit-high(char), 下位ビットを bit-low (char)に
入れました。これを10進の -32768 〜 32767 に戻して、
すこしこねまわして、最後に再び byteに戻してファイルに
書きたいんですけどうまくいきません。

実はFortranでの数値計算が専門で、Cの知識は厨房レベル
です。ですが・・・ とうしてもなんとかしたいので教えてください。

よろしくお願いします。
0706デフォルトの名無しさんNGNG
>>705
どううまくいかないのか分からないと(ry
0707デフォルトの名無しさんNGNG
>>705 です。

long high-10d, low-10d, signal;
char bit-high, bit-low;
...

high-10d = (long)bit-high;
low-10d = (long)bit-low;
signal = high-10d * 256 + low-10d;
...

とかやって10進にしようかとやってみましたがダメダメでした。
FFTとか、GAとかは得意なんですが、Cはこんなあほレベルなんです。
ほんとすいません。
0708デフォルトの名無しさんNGNG
> 上位ビットを bit-high(char), 下位ビットを bit-low (char)に
上位バイト・下位バイトっていいたいのか?
0709デフォルトの名無しさんNGNG
> long high-10d, low-10d, signal;
> char bit-high, bit-low;

変数名がムチャ。
0710デフォルトの名無しさんNGNG
そもそもCって変数名に「-」使えたっけ?
規格では[a-zA-Z_]だけだった気がするんだが
0711デフォルトの名無しさんNGNG
>>707
なにがダメだったのかよくわからんが、
それだと文法エラーにならんか?
0712デフォルトの名無しさんNGNG
かぶった orz
ついでに数字を入れ忘れた(´・ω・`)

[a-zA-Z_][a-zA-Z1-9_]か
0713デフォルトの名無しさんNGNG
>>708

あ、そうです。間違えました。すみません。上位8bit, 下位8bitと考えても
いいですね。ちなみに、エンディアンとか、昨日覚えたぐらいのレベルです。
ポインタとか、構造体は知ってます。

あー ほんとにダメダメですね。
0714デフォルトの名無しさんNGNG
文法エラーの件は。。。 実際には違う変数名を使っています。
0715デフォルトの名無しさんNGNG
>実はFortranでの数値計算が専門
これも怪しいもんだな…
0716デフォルトの名無しさんNGNG
とりあえず、charじゃなくて、unsigned charにしてみれ。
0717デフォルトの名無しさんNGNG
>実はFortranでの数値計算が専門

一応、学位持ちです。論文も多数あります。
0718デフォルトの名無しさんNGNG
> -32768 〜 32767 に戻して
あと、↑がしたんだったら、signalはshortの方がいいんじゃないの?

それ以外に、エンディアンだの符号拡張だのいろいろ問題がありそうだが、
何がしたいのかはっきりせんから、レスも適当だが。
0719デフォルトの名無しさんNGNG
Cでは変数の中に入ってる数字が10進か16進かでの区別はないよ
0720デフォルトの名無しさんNGNG
ファイルのフォーマットは?
0721デフォルトの名無しさんNGNG
>>718
符号付きの整数を上下8bitずつに分解して処理するということが
そもそも何の意味があるのかさっぱり見当つかんのよな。
0722デフォルトの名無しさんNGNG
>>705 です。ご迷惑をおかけします。

したいことは、WAVファイルの音楽データに、自作の演算(FFTなど)をかけて
エフェクト処理したいだけです。正直、10進数をプログラム上で演算する知識
しか持ち合わせていないので、2byteでファイルから読んできたデータを、
どうやって10進数にするか? それをどうやって2byteにもどしてファイルに
書き込む処理をするか? が知りたいのです。

fread, fwrite を使ってステレオ → モノラル変換するようなサンプルプログラム
を入手したので、データを読んで書く、というような操作は一応できています。
波形を弄くろうとしたら・・・ ダメダメというわけです。

複素数や特殊関数の演算はしょっちゅうでも、longだintだcharだのは、
Fortranの数値計算にはほとんど使わないので、専門以外のことは
このぐらいの知識しかないんですよ・・・ すいません。

>>720 ファイルのフォーマットは。。。 バイナリだろう、としかわかりません。



0723デフォルトの名無しさんNGNG
8ビット2チャンネルじゃないのか?
0724デフォルトの名無しさんNGNG
>>722
読み込めばそのまま10進で扱えますYO

int a = 0xff; // 16進で入れる
a += 10; // 10進で演算

エンディアンが違うなら上位下位の入れ替えが必要だけど
0725デフォルトの名無しさんNGNG
そもそも16bitでfreadせずに、char単位で読み書きすればいいだけの話じゃないの?
0726698NGNG
>>702
環境は、VC++6.0で
OSはXPです

おねがいします
0727デフォルトの名無しさんNGNG
>>724
すいません、C言語のエンディアンコードって何処に載っているのでしょうか?
ちなみにWavに関する質問者とは別人です
0728デフォルトの名無しさんNGNG
>>725

>そもそも16bitでfreadせずに、char単位で読み書きすればいいだけの話じゃないの?

いいえ、逆なんです。入手したサンプルソースが、1byte(char)単位で読むプログラム
だったんですよ。fread 使って 16bit (2byte)単位でで直接ファイルから読めるんですか?

 ※わたしはそれぐらいCは無知なんです・・・

だったら話は簡単なんですけど。
0729デフォルトの名無しさんNGNG
こんな感じ?ファイルのフォーマットがわからんから、lowとhighの
読み込み順序を逆にしなければいかんかもしらんけど。

unsigned char low;
unsigned char high;
short signal;

fread(&low, 1, 1, fp);
fread(&high, 1, 1, fp);

signal = (short)(high << 8 | low);
0730デフォルトの名無しさんNGNG
>>722
http://www.kk.iij4u.or.jp/~kondo/wave/
0731デフォルトの名無しさんNGNG
> fread 使って 16bit (2byte)単位でで直接ファイルから読めるんですか?

読めます
0732デフォルトの名無しさんNGNG
>>729

ご丁寧にありがとうございます。今日は自宅で、Linuxがないので
明日に職場で試してみます。

>>730

私もそこは見てみました。ですが・・・ 素人には難しいですね。

>>731

Thanks !!!
0733デフォルトの名無しさんNGNG
>>728
>※わたしはそれぐらいCは無知なんです・・・
「Cは」?「プログラミング基礎は」じゃないか?
0734698=726NGNG
分からないのでおねがいします。
0735デフォルトの名無しさんNGNG
>>734
http://pc5.2ch.net/test/read.cgi/tech/1101393155/
0736デフォルトの名無しさんNGNG
>>734
Cだけでは不可能
つまりスレ違い
0737デフォルトの名無しさんNGNG
>>736
そうですか・・・失意体前屈

回答ありがとうございます
0738デフォルトの名無しさんNGNG
どんな下手なCGでもかまいません。
オーロラの3DCGをVC++6.0で描いてください。
誰か私を助けてください(つ_T)

それとプロジェクトの設定のとこのMidlって何か教えてください・・・orz
0739デフォルトの名無しさんNGNG
>>738
>>1
0740デフォルトの名無しさんNGNG
>>729 でお教え頂いたのですが、

high の8bit (char) と low の8bit (char)を10進に変換する方法は、
highをビットシフトして、lowとの論理和をとる・・・

signal = (short)(high << 8 | low);

はお教え頂いてわかりました。演算した結果(signal)を
再び上下8bitにわけるには

high = ((unsigned char)signal) >> 8 ;
low = ( high << 8 ) & (unsigned char)signal ;

でいいですか? いろいろすみませんです。
0741デフォルトの名無しさんNGNG
>>740
high = (unsigned char)(((unsigned)(signal & 0xff00)) >> 8);
low = (unsigned char)(signal & 0x00ff);
0742デフォルトの名無しさんNGNG
high = (unsigned char)(signal >> 8);
low = (unsigned char)signal;
0743デフォルトの名無しさんNGNG
>>742
signedの変数を右シフト…か。
0744742NGNG
ぇsignedだったのか・・・反射的にレスしちまって前見てなかった・・・orz
0745デフォルトの名無しさんNGNG
>high = (unsigned char)(((unsigned)(signal & 0xff00)) >> 8);
>low = (unsigned char)(signal & 0x00ff);

high は、signal を 255.0 とで&とって.。。。右シフト、了解です。わかりました。
low は0.255と&ですね。相変わらずわたしは論理積と論理和がわかってなかった・・・

でも、変数の範囲を考えると、>>742 さんのやり方でも切れるんですね。
勉強になりました。

なお、ちなみに私、low high がそれぞれ "unsigned char" でいいのか悪いのか、
わかってません。high のほうは signed でないといけないような・・・
そこだけ注意してやってみます。
0746デフォルトの名無しさんNGNG
>>745
>high のほうは signed でないといけないような・・・
馬鹿タレ。
lowとhighはsignalを作るための部品でしかないから
unsignedで何の問題も無い。合成した結果がsignedならいいんだろ。
0747デフォルトの名無しさんNGNG
>>746

すいません。ありがとうございました。
しかし、この板すごいっすね〜 感心しました。
0748デフォルトの名無しさんNGNG
scanf関数を使って、入力待ちの時に、エンターキーだけで
入力終了させるようにするにはどうしたらいいですか
教えてください
0749742NGNG
>>742のはsignalがunsignedという条件ではうまくいくけど
signalがsignedだとうまくいかない。あしからず
0750デフォルトの名無しさんNGNG
>>749
うまくいかないっていうか、「うまくいく保証がない」だよね
0751デフォルトの名無しさんNGNG
>>748
…無理だと思うが…。方法があったら俺も知りたい。
環境が許すなら、getch()を使えばいいだけだが。
0752デフォルトの名無しさんNGNG
>>749 >>750

あとは大丈夫だと思います。やってみます。ありがとうございました。
0753デフォルトの名無しさんNGNG
今、特定のメモリ領域からビット数を指定してデータを
取得するコードを書いてます。
メモリからリードする際に4バイト固定かつ4バイトアラインが存在する
という条件があり、ビット指定は
「オフセットxxBit目からyyBit分」
という指定をされます。オフセットは0から始まります。

例えば、21bit目から95bitリードしろという指定が来ると
int a[4]を用意してa[0]の21ビット目からa31ビット目,a[1],a[2],
a[3]の0ビット目から19ビット目にデータがリードされます。

これを、int b[4]を用意し、b[0],b[1],b[2]の0ビット目から30ビット目に
詰めるように格納したいのですが、楽にやる方法が考え付きません。
どなたかご教授お願いします。
0754デフォルトの名無しさんNGNG
>>753
効率無視していいのなら、1bitずつコピーするのが楽。
0755デフォルトの名無しさんNGNG
>>753
logical_shift_left(array, size, count); みたいな関数作っといて
とりあえずシステムテスト
後でアセンブラでその関数をチューニング

あ? 「楽に」だっけ
シラネーヨ
0756753NGNG
>>754
書いているものの特性上、ある程度処理効率を考える必要があるため
1bitコピーはなるべく避けたいと思っています。
言葉が足りなくて申し訳ありません。

>>755
シフトでやろうと考えたのですが、いい考えが浮かびませんでした。
おっしゃっている関数が具体的にどういう感じのコードを記述すればいいか、
教えていただけませんか?
「楽に」というのは言葉のあやです。かれこれ2時間ぐらい悩んでいるので・・・
0757デフォルトの名無しさんNGNG
> b[0],b[1],b[2]の0ビット目から30ビット目に
なんで31ビット目だけ使わないの?
0758753NGNG
>>757
例では、要求が95ビットだけのため、
31ビット目はどのような値でも変わらないからです。

自分の書き方がマズかったでしょうか?
b[0],b[1]は32ビット全部使うんです。
でb[2]は31ビット目は上記の理由で必要ないということです、
0759デフォルトの名無しさんNGNG
>>756
どういう感じって、ごくオーソドックスに
a[i]=a[i]>>n|a[i+1]<<(31-n);
とか書いときゃええやん、どーせ C だし

C で書いている以上は実行時のサイクル数は保証外
サイクル数を保証させたければアセンブラかハード
0760753NGNG
>>759
なるほど、そのコードなら確かにできますね。
普通に思いつかなかった。。。疲れてるのかなw

処理効率については、サイクル数を厳格に保証しなくてはならない
ほどハードなシステムではないので、そこまで気にはしてないのですが、
ハードとの絡みがあり、ある程度は高速に処理させたいという要求がありまして。
かといってハード側でアライン関係の処理をするとセレクタが増大するため
おいしくないとのことでソフト側でやってたりするんですが・・・

0761デフォルトの名無しさんNGNG
#include    <stdio.h>

int main( void )
{
    typedef struct {
        int  data1 ;
        struct hoge {
            int data2 ;
        }a[30];
    }HOGE ;

    HOGE test[2] ;

    printf( "%d\n", sizeof(test[0].a[0].data2) ) ;

}

こんなことしようとしてるんですが、見辛いですかね?
実際現場でこんな感じのやり方してる人いますか?
0762デフォルトの名無しさんNGNG
少し寝ようと思いますので、即レスはできませんが、
なにかアドバイスがあればよろしくお願いします。
0763デフォルトの名無しさんNGNG
> 規格では[a-zA-Z_]だけだった気がするんだが

「気がする」とかいってるあたりがだめすぎ
0764デフォルトの名無しさんNGNG
> Cだけでは不可能

なわけねーだろ。十分可能だ。
0765デフォルトの名無しさんNGNG
実行ファイルのpathを特定したいのですが何かいい方法あれば教えてください。
同じディレクトリの設定ファイルを読みたいのですが。

環境依存だったらDOSでお願いします。
コンパイラはLSIC試食版で。
0766デフォルトの名無しさんNGNG
argv[0]
0767デフォルトの名無しさんNGNG
argv[0]
0768765NGNG
ちょっと試してみます。
0769765NGNG
できました。
環境依存しないのは難しいですか?
0770デフォルトの名無しさんNGNG
>>1のリンク先は読んだかね?
http://www.kouno.jp/home/c_faq/c19.html#31
0771デフォルトの名無しさんNGNG
>>748>>751#include <stdio.h>
int main(void)
{
int ch;
char ss[10];
puts("入力");
printf("->");scanf("%c", ss);
/*[enter]のみ入力*/
printf("d=%d, x=%x\n", ss[0], ss[0]);
return 0;
}
0772デフォルトの名無しさんNGNG
> 環境依存しないのは難しいですか?

sprintf(buf, "which %s", argv[0]);
system(buf);
0773デフォルトの名無しさんNGNG
> printf("%d\n",sizeof(test[0].a[0].data2)) ;

なんのためにタグつけてんだ ぼけ
sizeof(hoge.data2) でいいだろ
0774デフォルトの名無しさんNGNG
>>772
依存し捲くった挙句に完全じゃない。
0775762NGNG
はい、そうします。
0776デフォルトの名無しさんNGNG
#include<stdio.h>
int hoge(int *);
int main(void){
int i;
int *pi;
pi = &i;
i = 5;
printf("%d %d\n", i, hoge(pi));
return 0;
}
int hoge(int *pi){
return *pi * 2;
}

結果として 10 10 が欲しいのですが、5 10 と表示されます。
ご教示ください。
0777デフォルトの名無しさんNGNG
i=hoge(pi) か hoge(*i)
0778デフォルトの名無しさんNGNG
>>776
何をしたいのかが解らん…
hoge() の中で i を書き換えたいなら
  return *pi *= 2;
だが、そうしたからって
>printf("%d %d\n", i, hoge(pi));
ここの評価順によっては 5 10 だ。
0779デフォルトの名無しさんNGNG
#include<stdio.h>
int hoge(int *);
int main(void){
int i = 5
int *pi = &i
printf("%d %d\n", hoge(pi), i);
return 0;
}
int hoge(int *pi){
*pi *= 2;
return *pi;
}

>>777
どうもです。
ちょっと変更してみました。
int *papa;
int mama;
papa = &mama;
*papa = 5;
でmamaの内容も変わるようにiの内容も変わると思ったのですが…
0780デフォルトの名無しさんNGNG
>>778
おっしゃるとおりです。>>779で評価順を変えました。
それでもiは期待値10にならないです。
0781デフォルトの名無しさんNGNG
>>779
関数の引数の評価順は決まっていないので、それに依存するプログラムを
書くと結果は不定のふるまいとなる。
0782デフォルトの名無しさんNGNG
>>779
↓のを試してみ

int main(void){
int i;
int *pi;
pi = &i;
i = 5;
hoge(pi);
printf("%d\n", i);
return 0;
}
void hoge(int *pi){
*pi *=2;
}
0783デフォルトの名無しさんNGNG
>>782
おお、ありがとうございます。10になりました。どうしてだーー!!!!??
0784デフォルトの名無しさんNGNG

お世話になっております

VC++でMFCのプロジェクトを作っているんですが、
CSVファイルを読み込んで、1カラムずつ
取得してファイルの最後まで読み込むというロジックをつくりたいんです

�@ Readfile で、 file のEOF 検出ってできますでしょうか?
�A 1カラムずつの取得ってどうやるんでしょうか?
   readfile だと、バイト取得しかできないのでしょうか?

2点お願いします
0785デフォルトの名無しさんNGNG
>783
>781 の言う通り。
そのコンパイラでは、引数の評価順は
「左から」でも「右から」でもなかった、という事。

>784
激しくスレ違い。
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/l50
0786デフォルトの名無しさんNGNG
ごめんなさい スレ違いでした
0787デフォルトの名無しさんNGNG
>>783
もうちょっと調べるなり考えるなりしような

      *pi *=2   これはpiの中身の"値を2倍している"
return *pi *=2    これはpiの中身の" 値を2倍にした「数値を返している」 "
0788デフォルトの名無しさんNGNG
>>787
これで期待値を得ることができました。
調べたところ引数の評価順は右からのようです。
もうちょっと調べるなり考えるなりしような

#include<stdio.h>
int hoge(int *);
int main(void){
int i = 5
int *pi = &i
printf("%d %d\n", i, hoge(pi));
return 0;
}
int hoge(int *pi){
return *pi *= 2;
}

0789デフォルトの名無しさんNGNG
>>787
なんかおかしいぞ。日本語がおかしいだけだと思いたいけど……
      *pi *=2   piの中身の"値を2倍している
return *pi *=2    上に加えて、その値を返している

>>788
知らんけどその評価順は、printfの仕様なの?仕様でない場合、そういうのを実装依存といって
ほかの環境でエラーを起こす危険が高いから、書いてはいけないものとされてる。
まあ学校の宿題とかだったらわざわざ細かいこと気にしないでいいよ
0790デフォルトの名無しさんNGNG
ファイル名を、元のファイル名+拡張子のように変えるにはどうすればいいんでしょうか?
例えば、temp.exeをtemp.exe.bakのように変えるような場合です。
ファイル名は引数から取得させているので、rename関数ではできませんでした。
rename(argv[1],argv[1]".bak")でできると思ったのですが…
0791デフォルトの名無しさんNGNG
>>789
>仕様でない場合、そういうのを実装依存といって
ほかの環境でエラーを起こす危険が高いから、書いてはいけないものとされてる。

家の環境での評価順です。ひとつ勉強になりました。
ちなみに、これは会社の宿題なんですorz
0792デフォルトの名無しさんNGNG
>>790
そういう連結の仕方はできない。
C++ではrename(argv[1], (std::string(argv[1]) + ".bak").c_str());とすればいいのだがここはCスレ、
Cならこうすればいい。
char *buf = malloc(strlen(argv[1]) + 1 + 4); //1は'\0'、4は".bak"の文字数
if (buf)
{
    strcat(strcpy(buf, argv[1]), ".bak");
    rename(argv[1], buf);
    free(buf);
}
0793790NGNG
>>792
おおおー鮮やか
�dクスです
0794デフォルトの名無しさんNGNG
>>791
会社の宿題なら、なおさらの事、実行結果が実装依存になるようなプログラムは
書かない方がいい。減点の対象になるはず。

i = i++; のようなのは、実装依存では済まず、「未定義」とされている。unspecifiedより
なお一層厳しいundefinedだ。
0795デフォルトの名無しさんNGNG
enumの中の名前が激しくグローバルなのはKの責任ですか?Rの責任ですか?
0796デフォルトの名無しさんNGNG
どっかのコンパイラメーカー
0797デフォルトの名無しさんNGNG
>>794
俺の入った会社にはCの仕様をまともに理解してるやつが一人もいないんですが・・・。
0798デフォルトの名無しさんNGNG
>>797
・さっさと見切りつける
・それこそが自分の存在価値と心得る

究極の選択
0799デフォルトの名無しさんNGNG
>>797
おまいも?
0800デフォルトの名無しさんNGNG
>>799
言うまでもなく。
0801デフォルトの名無しさんNGNG
ここはそんな会社にしか使ってもらえないクズどもの巣窟ですか?
0802デフォルトの名無しさんNGNG
クレタ族はうそつきだ
0803デフォルトの名無しさんNGNG
ゲーデルの不完全性定理
0804デフォルトの名無しさんNGNG
>>802
違う。
クレタ族が言った。「クレタ族はうそつきだ。」
0805デフォルトの名無しさんNGNG
クレタ族にはうそつきも正直者もいる
0806デフォルトの名無しさんNGNG
クレタ人は嘘つきだとクレタ人が言った。
0807デフォルトの名無しさんNGNG
おれおれ、クレタ人なんだけどさ、ちょっと嘘ついてくんない?
0808デフォルトの名無しさんNGNG
やっぱり、向こうが本スレなのか
0809765NGNG
>770 >772 >774

遅くなりました。レス有難うございます。
依存するらしい,という話はFAQで見たようです。すっかり忘れていました。
whichを自分で書くぐらいの労力を払うしかないようですね。。。
0810デフォルトの名無しさんNGNG
エクセルとかワードってC言語で作られているの?
それとも、ちがう言語?
0811デフォルトの名無しさんNGNG
enumはある意味defineよりまし、ぐらいにしか使えないのよねえ。
0812デフォルトの名無しさんNGNG
> = i++; のようなのは、実装依存では済まず、「未定義」とされている。unspecifiedより
> なお一層厳しいundefinedだ。

ほほう。そういうしったかぶりくんは「unspecified」はどう訳すの? ;-)
0813デフォルトの名無しさんNGNG
ミニ三田はいらんから
0814デフォルトの名無しさんNGNG
テキストファイルを1行ずつ読み込むときは
fopen、fgets を使えば簡単ですが、一番後ろの
行からさかのぼって1行ずつ読み込むにはどのように
すればよいでしょうか。

ちなみにテキストの行数は50000行程度、サイズにして8MB程度
のもので、使えるメモリはそう多くはない(2〜3MB程度)という
条件があります。
0815デフォルトの名無しさんNGNG
>>810
MFCとは別のMSのクラスライブラリを使っているらしいからC++だろう。
0816デフォルトの名無しさんNGNG
fin = fopen("text.txt", "r");

for(i=0;fgets(ss, 256, fin) != NULL;i++){
}
fclose(fin);

for(k=i;k>=0;k--){
fin = fopen("text.txt", "r");
for(j=i;j>=0;j--){
fgets(ss, 256, fin);
}
puts(ss);
}
0817デフォルトの名無しさんNGNG
fcloseが抜けてた
付け足しといて
0818デフォルトの名無しさんNGNG
816は見ない方が良い
0819デフォルトの名無しさんNGNG
cに限らず、現行のファイルシステムは「一文字読んだらポジションが一つ進む」仕組みだから
「最後から読む」「最後の行から読む」のは難しい。

まあ、メモリも多くないみたいだし、
fgetsで行頭を記録しながら空読みして
seekしながらfgetsで一行読み込んで表示するってのが無難かな。
0820デフォルトの名無しさんNGNG
>>814
ランダムアクセスっぽいことが必要になるなら
適さないファイル編成を何とかすることから始める
テキスト→バイナリ変換したりインデックスファイル作ったり
0821814NGNG
みなさんのおっしゃっておられる事がよく理解できませんが、
816のを利用したら目的とするものが一応できましたので、
今回はそれで満足します。

スレ汚し失礼しました。
0822デフォルトの名無しさんNGNG
スゲー
0823デフォルトの名無しさんNGNG
813は答えられなくて、ごまかしたつもり ;-)
0824デフォルトの名無しさんNGNG
fgetsしたのをputsしてるので行がつながる
0825デフォルトの名無しさんNGNG
後ろの行から読むときは、常識的にpopen("rev")だろ!
0826デフォルトの名無しさんNGNG
mmapして逆から改行検索すりゃいいだけ
0827デフォルトの名無しさんNGNG
> mmapして

メモリー足りないので無理です。
0828デフォルトの名無しさんNGNG
SEEK_ENDから
ftell()しながらgetchar()して
いっこ(ふたつ?)ずつさかのぼっていって
\nがきたら
そのポジションのつぎから
fgets()

?だめかな?
0829デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[])
{
char buf[BUFSIZ];
FILE *fp;
long ofs, curpos;
if (argc != 2) {
printf("usage %s [file to open]\n", argv[0]);
exit(0);
}
if ((fp = fopen(argv[1], "r")) == NULL) {
perror("fopen()");
exit(0);
}
fseek(fp, -2, SEEK_END);
for (ofs = ftell(fp); ofs > 0; fseek(fp, ofs, SEEK_SET)) {
int c;
if ((c = fgetc(fp) == '\n')) {
curpos = ftell(fp);
fgets(buf, BUFSIZ, fp);
fputs(buf, stdout);
ofs = curpos -1;
}
ofs -= 2;
}
fgets(buf, BUFSIZ, fp);
fputs(buf, stdout);
fclose(fp);
}
0830デフォルトの名無しさんNGNG
#include <stdio.h>

int main(int argc, char **argv)
{
  FILE *fp;
  char buf[256];
  char cmd[256];

  sprintf(cmd, "rev %s", argv[1]);
  if ((fp = popen(cmd, "r")) == NULL) {
    fprintf(stderr, "error\n");
    exit(1);
  }
  while (fgets(buf, 256, fp) != NULL)
    fputs(buf, stderr);
  pclose(fp);
}
0831デフォルトの名無しさんNGNG
> そのポジションのつぎから
> fgets()
> ?だめかな?

おい、ぼけ。fgetsしたらまたその末尾の改行までいってしまうだろ
0832デフォルトの名無しさんNGNG
え?誰に聞けって?おい誰?うわぁ〜〜
0833デフォルトの名無しさんNGNG
quoted-printableエンコード&デコードしたいのですが
アレってテキストファイル用なんですか?

つうか、今のとこんな感じです
char[] moji="=80=CC=82=3D";
~s/=(..)/sprintf("%08b",$1)/eg

0834デフォルトの名無しさんNGNG
> quoted-printableエンコード&デコードしたいのですが

しちゃだめ
0835デフォルトの名無しさんNGNG
ふつうuuencodeかxxencodeのどちらか。base64も禁止
0836デフォルトの名無しさんNGNG
>815
なんでそうなるの?
>816
死んだ方がいいですよ。
>819
死んだ方がいいですよ。
>820
死んだ方がいいですよ。
>821
814は私です。偽者はやめてください。
0837デフォルトの名無しさんNGNG
>836
>814は私です。偽者はやめてください。
そういうことか。てことは、821=816なわけね。
0838デフォルトの名無しさんNGNG
>>837
違います。私が本当に本物です。
0839デフォルトの名無しさんNGNG
>826
それでいいや。さんきゅー
0840デフォルトの名無しさんNGNG
まぁ、マジレスするとtailのソースでも見とけと。
0841デフォルトの名無しさんNGNG
>840
アホ
0842デフォルトの名無しさんNGNG
>840
どこで見れるの?
0843デフォルトの名無しさんNGNG
>842
アホ
0844デフォルトの名無しさんNGNG
>843
えー、だってC言語なら俺に聞けって言うからさー
0845デフォルトの名無しさんNGNG
なぁ、お前らちょっとテストしていい?
0846デフォルトの名無しさんNGNG
いいよ
0847デフォルトの名無しさんNGNG
strcpyとmemcpyってどう違うの?
0848デフォルトの名無しさんNGNG
>846
popenとnotepad.exeの関係は?
0849デフォルトの名無しさんNGNG
>846
ファイルとメモリマッピングという用語を使って小論文を書け。
0850デフォルトの名無しさんNGNG
俺の名前を言ってみろ
0851デフォルトの名無しさんNGNG
>>847
引数がちがう
0852デフォルトの名無しさんNGNG
>851
他には?
0853デフォルトの名無しさんNGNG
メモリに'\0'があった際に停止するか否か
0854デフォルトの名無しさんNGNG
memcpyにはNULLチェックがない
0855デフォルトの名無しさんNGNG
>>853
バイナリモードだったら同じだけどな。
0856デフォルトの名無しさんNGNG
>855
ウソつきはっけーん!!
0857デフォルトの名無しさんNGNG
>853-854
他には?
0858デフォルトの名無しさんNGNG
関数名が違う( ´,_ゝ`)
0859デフォルトの名無しさんNGNG
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0860デフォルトの名無しさんNGNG
>840
そんなクソ遅いコマンドのソースを参照しろというのは
一体どういった意図によるものなのでしょうか。
0861デフォルトの名無しさんNGNG
>859
誰に言ってるの?答えられないのなら素直にそう書けばいいのに。
0862デフォルトの名無しさんNGNG
>861
アホ。頭悪すぎてそれすら気付かない奴なんだから相手するなって。
0863デフォルトの名無しさんNGNG
>>861
答えてる馬鹿たちに向かってですが、気に障りました?
0864デフォルトの名無しさんNGNG
で模範解答は?
0865デフォルトの名無しさんNGNG
つか、雑談も煽りも他所でやれや餓鬼共
0866デフォルトの名無しさんNGNG
>864
バーカ。簡単にあきらめてんじゃねーよ。
0867デフォルトの名無しさんNGNG
なんかさー、俺が書き込むといつも荒れるよなー、このスレ。
0868デフォルトの名無しさんNGNG
うわ、自意識過剰な馬鹿がいる
0869デフォルトの名無しさんNGNG
>868
え?俺のせいじゃなかったってこと?ならよかった。
0870デフォルトの名無しさんNGNG
>>868
いいや、俺が全部悪いんだ。
みんな!スレが荒れたのは俺のせいだ!
責めるなら、この俺を責めてくれ!
0871デフォルトの名無しさんNGNG
>>870
死ねよ
0872デフォルトの名無しさんNGNG
読み込んだファイルのバイト数を知りたいんですが

while(!feof(fp)){
file_length++;
}
のようにfeof関数を使うと正しくバイト数が
分かりません。
どのように書けばいいですか?
0873デフォルトの名無しさんNGNG
>>872
そりゃ読まなきゃいつまで経っても EOF にゃならんわ。
0874デフォルトの名無しさんNGNG
>>873
省略しましたが、ファイルの内容は読んでます。
バイトが0x1Aの地点でfeofによりwhile文を抜ける
んですけど、どう書けば正しいですか?
宜しくお願いします。
0875デフォルトの名無しさんNGNG
>>874
ftell
0876デフォルトの名無しさんNGNG
feof()は最後を読み終わった直後にもう一度読もうとするとオ�hルが返る

fseek()とftel()使え
0877デフォルトの名無しさんNGNG
お前らマルチに親切ですね。
0878デフォルトの名無しさんNGNG
>>877
オマエモナー
0879デフォルトの名無しさんNGNG
ありがとうございます。
0880デフォルトの名無しさんNGNG
>>874
>バイトが0x1Aの地点でfeofによりwhile文を抜ける 
根本的に町ガッ取る。
つか、この20年以上前の仕様が
なんで未だに引き継がれているのか…
0881デフォルトの名無しさんNGNG
ファイルの終わりにそんなもんはついてません。
0882デフォルトの名無しさんNGNG
ぼけ ファイルの終わりにそんなものはついてない。
0883デフォルトの名無しさんNGNG
> > メモリに'\0'があった際に停止するか否か
> バイナリモードだったら同じだけどな。

こいつおおぼけ。 strcpyやmemcpyにバイナリーモードなどない ぼけ
0884デフォルトの名無しさんNGNG
>>881-882
何も言い直さなくとも…

今やファイルサイズはバイト単位で持ってる環境が殆どだけど
CP/M 時代は、ファイルサイズはセクタ単位でしか持ってなくて
テキストファイルの最後に 0x1A を付加する習慣があったのよ。
で、当時を知らないハズの連中が今でも「0x1A が付いてくる」と
思ってるってーのは、何処かで嘘をばら撒いてる莫迦がいるんじゃ
ないかと思ってな。
0885デフォルトの名無しさんNGNG
デジャヴを感じる…
つい1スレ前に似たような事なかったか?<EOFについて
0886デフォルトの名無しさんNGNG
>877
マルチの何が悪いのかも分かっていないくせによく言うよなー、お前も
0887デフォルトの名無しさんNGNG
http://f29.aaa.livedoor.jp/~retoroup/gazoubbs/src/1104009880336.gif
上の画像に長方形の黒く塗りつぶしたような文字ありますよね?
これを1文字読み込んだときに判別するにはどの関数使えばいいのか教えてください。
あとこれをコピペしても「」←こんな感じでしか表示できませんよね?
どうやって出力すればいいか教えてください。お願いします
0888デフォルトの名無しさんNGNG
WinXP上でプログラミングしているんですが
実行すると必ず表示されるコマンドプロンプト画面を非表示にする事って出来るのでしょうか?
要するに実行しても何も表示されない様にしたいんです。
0889デフォルトの名無しさんNGNG
>>887
それはフォントがそのコードの字体を持っていない文字で、
四角になるか・になるかはフォントが決められる。
(フォント自体が通常の文字と同じように字体を用意しているので
バツや星印でもいいはず、見たことないけど)

つまり正確にやりたいんだったら今使っているフォントが
そのコードの文字をもっているか調べることになるんだが、
普通はisprint() || is漢字の1バイト目かを調べれば大体いいんじゃないか?
0890デフォルトの名無しさんNGNG
>>889
ありがとうございます。フォント変えたら表示できました
0891デフォルトの名無しさんNGNG
>888
me だけど prompt $で消えたよ。カーソルは残ってるけど。
てかCで?
0892デフォルトの名無しさんNGNG
え?
0893デフォルトの名無しさんNGNG
>>886
へぇ(嘲笑)
0894デフォルトの名無しさんNGNG
>>891
プロンプトを消したいとは誰も書いてないよ。

>>888
スレ違い。Win32APIスレかVCスレへ。
0895デフォルトの名無しさんNGNG
昨日初めて彼女とCしました
0896デフォルトの名無しさんNGNG
私語だよオサーン。
0897超級初心者NGNG
基本情報処理に向けてCを勉強しています。
やさしいCで最低レベルの基礎を一応覚えたので次に進みたいのですが、
応用編と書いてある書籍はいきなり難しくなっていてなんともしがたい状況です。
通常はどういった勉強をしていくのでしょうか?
0898デフォルトの名無しさんNGNG
>>897
あなた本当にやさしいC全部読んだの?載っている問題は全部解いた?
0899超級初心者NGNG
はい、載っている問題は全部解けました。
0900デフォルトの名無しさんNGNG
>>899
具体的にどこが分からないの?
0901超級初心者NGNG
C言語によるプログラミング(応用編)を読んでいくのですが、
しだいに何を目的としている用法なのか、というか何をしているのか
わからなくなってしまうのです。
現在はポインタ完全制覇でポインタに絞って勉強していはいますが、
これでいいのかどうか・・。
リファレンス本も持っているのですが、引いても書いてある使い方が理解で
きないのです。例えば、
void *memcpy(void *to, const void *from, size_t n);
char strncat(char *str1, const char *str2, size_t n);
とか書いてあっても、
*to?const?size_t?それって何を書くの??
という感じです。
0902デフォルトの名無しさんNGNG
>>901
to は仮引数名だろうが、そんくらい「やさしいC」には書いてなかったのか
それから、const や size_t についての説明がない本なら見限ることも考えろ
0903デフォルトの名無しさんNGNG
今更で悪いが標準Cってなんだ?>>1よ。
0904デフォルトの名無しさんNGNG
to, from, n はmemcpy関数内で使われる変数名であり気にしなくていい

注視するところは
1. ()内の変数の型 void *, const void *, size_t
2. memcpy の手前にある void *

つまりmemcpyに void *, const *void, size_t を順に3つとも放り込めば(1.)
void * 型の変数が得られる(2.)

strncatも同様
1. ()内の char *, const char *, size_t
2. char * ←これ抜けてる
0905デフォルトの名無しさんNGNG
読んで勉強した気分になってる病
0906デフォルトの名無しさんNGNG
>何を目的としている用法

例えば str〜 は文字配列を扱う、って事だけだが?
0907超級初心者NGNG
>>902
*toではなくvoid *と書くべきでした、すみません。
目的とするプログラムがないので、どこから手をつければいいのか・・
という感じなんです。しかも用例には知らない関数がバカバカでてきますし。
それを調べて覚えても、結局どういった場合に使うのかわかっていないので
それを使ったプログラムを書く練習ができないような状態です。
0908デフォルトの名無しさんNGNG
気分だけならいいけど
理解したと豪語するのは止めてほしいな

さらにいうと、そんなので開発に参加し(ry
0909デフォルトの名無しさんNGNG
>>903
ISOが定めたC言語の標準規格
0910デフォルトの名無しさんNGNG
>>903
ISO/IEC 9899:1999
0911デフォルトの名無しさんNGNG
かぶった_| ̄|○
0912デフォルトの名無しさんNGNG
>>907
向いてないよ
0913超級初心者NGNG
>>904
>つまりmemcpyに void *, const *void, size_t を順に3つとも放り込めば(1.)
>void * 型の変数が得られる(2.)

この文を理解できない時点でまずいですよね・・orz
でもご丁寧にありがとうございます。
0914デフォルトの名無しさんNGNG
void*ってことはどんな型のポインタでも渡せるってこった

char a, b;
memcpy(&a, &b, 1);

int a, b;
memcpy(&a, &b, sizeof(int));
0915デフォルトの名無しさんNGNG
>908
>さらにいうと、そんなので開発に参加し
どう見てもまだ学生か何かだろうに、そんな発言をするお前の方が異常。
0916超級初心者NGNG
>>914
なるほど!すごくわかりやすいです。ありがとうございます。
0917デフォルトの名無しさんNGNG
もし学生じゃなかったら首吊ってやるよ。
0918デフォルトの名無しさんNGNG
いったい何を読んでたんだ?
0919デフォルトの名無しさんNGNG
>914
intの場合はsizeofしているのにcharではしないのはどうしてですか?
0920デフォルトの名無しさんNGNG
>>919
打つのがダルかったから
0921デフォルトの名無しさんNGNG
>918
何だったとしても、はなから質問に答える気のないお前には
全く関係ない。失せろ。
0922デフォルトの名無しさんNGNG
>>915
>>897のこと限定で言っているわけではないのが理解できないのか…
0923デフォルトの名無しさんNGNG
>920
そんな奴が人に教えようとするなよ。
つか、そういう理由じゃねーだろうが。
それもわからんで人に教えようとするな。
0924デフォルトの名無しさんNGNG
>922
は?
0925デフォルトの名無しさんNGNG
>922
いるよなー、こういう奴。自分の言葉が全く足りてないくせに
理解してもらえないとかいっちょまえにほざいちゃってな。
協力会社でそういう人間は片っ端からはずしてるよ。
社員でもたくさんいるけどこっちは簡単にはずせねーんだよなー
0926デフォルトの名無しさんNGNG
>>919
sizeof(char)は1だから
0927デフォルトの名無しさんNGNG
>926
あなたは誰ですか?
0928デフォルトの名無しさんNGNG
>865-926は俺の自演って気付いてる奴いる?
0929デフォルトの名無しさんNGNG
偉そうに質問に答える奴は社名と所属部署を晒してから
ってルールな、今から。
0930デフォルトの名無しさんNGNG
>>925
妄想乙
0931デフォルトの名無しさんNGNG
>>928
キヅイテルヨ コノヤロー( ´∀`)σ)Д´)
0932超級初心者NGNG
>>926
ではその部分は例えば
sizeof()でも、実際のその数値でも良いということでしょうか?
0933デフォルトの名無しさんNGNG
会社でまともに組める奴が育たないのが良くわかるスレだ
0934デフォルトの名無しさんNGNG
>>925
いるよなー、こういう奴。
煽りが失敗しても引っ込みがつかなくて
どうしても相手を陥れようとがんばる椰子w
0935超級初心者NGNG
自分としてはどんな言い方であれ、答えていただけるだけで御の字です・・。
0936デフォルトの名無しさんNGNG
>925>934は自演。なんでそう言い切れるか分かる奴いるか?
0937デフォルトの名無しさんNGNG
>>936
おまえが知障だからか?
0938デフォルトの名無しさんNGNG
>937
惜しい!俺の自演だからだよ。
0939デフォルトの名無しさんNGNG
>>935
まずsizeof()をリファレンスで引け
それが返す変数の型はどんなものなのかも
0940デフォルトの名無しさんNGNG
やべー。このスレの書き込みで俺が書いたのカウントしてみたら
725個もあるよ。
0941939NGNG
すいません。わたしとちくるってました。訂正します。

まずsizeof()をリファレンスで引いて頂けますか?
それが返す変数の型はどんなものなのかも調べるといいと思います。
あ、分かりにくい日本語ですいません。
0942デフォルトの名無しさんNGNG
俺は216個目…(´・ω・`)
0943デフォルトの名無しさんNGNG
あれ?
漏れの書き込み、268個あるけど...
0944デフォルトの名無しさんNGNG
次スレなしってことでいい?
0945デフォルトの名無しさんNGNG
>943
それはあなたが数えることすらできないからですよ。
0946デフォルトの名無しさんNGNG
>943
キモ
0947超級初心者NGNG
>>941
はい、えっと自分のリファレンスには
sizeof(式) 式の結果のオブジェクトが占有するバイト数
sizeof(型) 型名で示される型が占有するバイト数
とありました。
0948デフォルトの名無しさんNGNG
>>944
スレタイかえて続けろよ
0949デフォルトの名無しさんNGNG
>>1に書いてあるコンパイラって全部フリーなんですか?
0950デフォルトの名無しさんNGNG
>>947
sizeof(char)は無条件で1だと書いてないのか?
0951デフォルトの名無しさんNGNG
>>949
>>1にコンパイラは1つも書いてないです :-)
0952超級初心者NGNG
>>950
そーですね・・・書いてないようです。
というか>>947も何度か引いて見つけたもので、
sizeof演算子というところには、
オブジェクトの寸法を取得する
としか書いてありません。
「C言語によるプログラミング-スーパーリファレンス-」
という本なのですが、いまいちなのでしょうか??
0953949NGNG
>>2でした。
フリーなんですかね?
0954デフォルトの名無しさんNGNG
>>952
間違いではないんだけど…
型のサイズは環境によって違うことがあるから、
>>950の例外を除いては、即値を書かない方がいい
0955デフォルトの名無しさんNGNG
>>953
リンク先のページを読めよ
0956超級初心者NGNG
>>954
char以外の型の場合は値で書かない方が良い、ということですね。
intやdoubleの領域の確保が環境に依存するとは知りませんでした。
ありがとうございます。
0957デフォルトの名無しさんNGNG
>>952
ある処理系でたまたまそうなのか、規格で決まっていることなのかを確認するなら、見る本を間違っている
0958デフォルトの名無しさんNGNG
少し長いですが、ソースを張ります。質問次に書きます。お願いします。
int main(void){
FILE *fpR,*fpG,*fpB,*fpOUT;
unsigned char tmpR,tmpG,tmpB;

fpR = fopen("R.raw","rb");
fpG = fopen("G.raw","rb");
fpB = fopen("B.raw","rb");
if(fpR == NULL || fpG == NULL || fpB == NULL){
printf("ERROR: inputfile not found \n");
exit(1);
}
fpOUT = fopen("OUT.raw","wb");
if(fpOUT == NULL){
printf("ERROR: outputfile could not make\n");
exit(1);
}
while(tmpR = fgetc(fpR) != EOF){
tmpG = fgetc(fpG);
tmpB = fgetc(fpB);
fputc(tmpR,fpOUT);
fputc(tmpG,fpOUT);
fputc(tmpB,fpOUT);
/*testprint*/printf("%d %d %d\n",tmpR,tmpG,tmpB);
}
fclose(fpR);
fclose(fpG);
fclose(fpB);
fclose(fpOUT);
return 1;
}
0959958NGNG
このプログラムは、R,G,Bの単色のRAWを三枚あわせて、カラーのRAW画像を作ろうと思い書いたものです。
が、出来上がる画像は
「Rの値ががすべて1」の画像になってしまいます。
元の画像に問題があるのかと思い、R,G,B三枚とも同じ画像でテストしてみましたが、
やはりRの値がすべて1の画像になってしまいます。
printfのテストでも、R=1で出力されてしまいます。
どこがおかしいのでしょうか教えていただけないでしょうか。
よろしくお願いします。
0960超級初心者NGNG
>>956と書きましたが、使い終えたと思っていた「やさしいC」に
型のサイズは環境による
と記載されていました、すみません。
char型は1になることはK&Rに載っていました。


0961デフォルトの名無しさんNGNG
while(tmpR = fgetc(fpR) != EOF){
あやすい
0962デフォルトの名無しさんNGNG
return 1;
0963958NGNG
>>961
ありがとうございます!!
そこでした。
while(1){
tmpR=fgetc(fpR);
if(tmpR==EOR)break;
.
.
.
}
に直したらちゃんと動きました。
0964958NGNG
>>961
と思ったら、これではループを抜けなくなってしまいました。
ループを抜けるにはどうしたらよいのでしょうか。
0965デフォルトの名無しさんNGNG
EORってなんだよ
0966デフォルトの名無しさんNGNG
int
0967958NGNG
>>965
EOFの間違えでした。
0968デフォルトの名無しさんNGNG
while(./**/(tmpR = fgetc(fpR))/**/ != EOF){
括弧できちんとくくれ
変な感じがしてもこっちの方が間違いが少ない。
0969デフォルトの名無しさんNGNG
fgetcやgetcharを受けるのはint型の値にしろ
EOFを返してきた時にEOFはint型の値と決まっている。
0970958NGNG
>>968
>>969
ありがとうございます。教えていただいたとおりに

int tmpR,tmpG,tmpB;
while((tmpR = fgetc(fpR))!=EOF){
..
..
fputc((unsigend char)tmpR,fpR);
..
..
}
としたら、Rにちゃんと値も入り、ループも抜けられるようになりました。

いろいろと教えていただきありがとうございました。
0971デフォルトの名無しさんNGNG
> に直したらちゃんと動きました。

ぼけ なおしかたがちがうだろ

> while(tmpR = fgetc(fpR) != EOF){
これを
> while ((tmpR = fgetc(fpR)) != EOF) {

こうなおすんだよ。空白もきちんとあけろ! ぼけ


0972デフォルトの名無しさんNGNG
しかもこの場合の「tmp」って名前は不適切だなあ
0973デフォルトの名無しさんNGNG
fgetcの戻り値を受ける変数をcharやunsigned charにするなよ ! ぼけ
0974デフォルトの名無しさんNGNG
正常終了のときに1をかえるなよ ぼけ!
0975デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlub.h>

void cant(char *);

int main(void)
{
  FILE *rfp, *gfp, *bfp;
  FILE *outfp;
  int r, g, b;

  if ((rfp = fopen("R.raw", "rb")) == NULL)
    cant("R.raw");
  if ((gfp = fopen("G.raw", "rb")) == NULL)
    cant("G.raw");
  if ((bfp = fopen("B.raw", "rb")) == NULL)
    cant("B.raw");
  if ((outfp = fopen("OUT.raw", "wb")) == NULL)
    cant("OUT.raw");
0976デフォルトの名無しさんNGNG

  while ((r = fgetc(rfp)) != EOF) {
    g = fgetc(gfp);
    b = fgetc(bfp);
    fputc(r, outfp);
    fputc(g, outfp);
    fputc(b, outfp);
  }
  fclose(rfp);
  fclose(gfp);
  fclose(bfp);
  fclose(outf);
  return EXIT_SUCCESS;
}
0977デフォルトの名無しさんNGNG


void cant(char *name)
{
  fprintf(stderr, "ERROR: can't open %s.\n", name);
  exit(EXIT_FAILURE);
}
0978デフォルトの名無しさんNGNG
エラーを標準出力に書くな! ぼけ

カンマの後ろは空白あけろ! ぼけ

) { の間もだ! ぼけ
0979デフォルトの名無しさんNGNG
ぼけぼけうるさいぞぼけ
0980デフォルトの名無しさんNGNG
これ、r以外のgとbはrと同じサイズなので、途中でエラーでないっていう前提のロジックになってる
けど、どうせそういう前提なら
    g = fgetc(gfp);
    b = fgetc(bfp);
    fputc(r, outfp);
    fputc(g, outfp);
    fputc(b, outfp);
この部分は
    fputc(r, outfp);
    fputc(fgetc(gfp), outfp);
    fputc(fgetc(bfp), outfp);
こう書けよな。で余分な変数の宣言2つも消す
0981デフォルトの名無しさんNGNG
通常の関数ではprintf()みたいにつなげて書くのに
if文とかの場合はif () {みたいに空白を入れるのはなぜですか?
あと
if () {
;
}
と
if ()
{
;
}
はどちらが適してますか?
0982デフォルトの名無しさんNGNG
>>980
たった数バイトケチってまで可読性落とすのよくない
0983デフォルトの名無しさんNGNG
>>981
そんなのどっちでもいい
0984デフォルトの名無しさんNGNG
バカばっかり。

>981
プロジェクトや客先のコーディング規約があればそれに従う。
あとは好み。
0985デフォルトの名無しさんNGNG
>>983
空白は必要ない && {前の改行は必要ない
ってことですか?
0986デフォルトの名無しさんNGNG
>980
間違ったことを教えるなよ。
どうせそういう前提なら、じゃなくて、エラーチェックをするように
勧めるべきだろうが。



一言。アホ。
0987デフォルトの名無しさんNGNG
>>980
自分の頭がそこまで悪い理由を考えたりしてる?
0988デフォルトの名無しさんNGNG
>>984
ははぁ、そういうことなんですね。
0989デフォルトの名無しさんNGNG
> 間違ったことを教えるなよ。
> どうせそういう前提なら、じゃなくて、エラーチェックをするように

いいや、正しい。
0990デフォルトの名無しさんNGNG
> 通常の関数ではprintf()みたいにつなげて書くのに
> if文とかの場合はif () {みたいに空白

このぼけ if分は「通常じゃない関数」だとでも思ってるのだろうか?
0991デフォルトの名無しさんNGNG
> はどちらが適してますか?

前者はカーネルスタイル(k&rスタイル)
後者はオールマンスタイル(bsdスタイル)
まあ、どっちにもまだ慣れていないで
これからなんだったら前者をすすめておく。

まちがってもgnuスタイルやWhiteSmithスタイルにそまらないように!
0992デフォルトの名無しさんNGNG
cのプログラムは

int main(void){}
こう書いても

int main(void){
}
こう書いても結果はおなじ
0993デフォルトの名無しさんNGNG
> あとは好み。

ほんきでこう思い込んでいるんだとしたら、かなりのあほ
0994デフォルトの名無しさんNGNG
> こう書いても結果はおなじ

-gついてるとちがう
0995デフォルトの名無しさんNGNG
>>990
えーと、すいません。
空白を入れない関数が多いのでそれらを空白を入れる関数と比較して
「通常の」というふうに言っただけです。
と、いうことでなぜif, for, whileなどの後には空白を入れるんですかね?
0996デフォルトの名無しさんNGNG
> 空白を入れない関数が多いので

こいつぼけ、入れる関数もあるのかよ!

> 空白を入れる関数と比較して

そんなものはねーよ!
0997デフォルトの名無しさんNGNG
本気でifやwhileを「関数」だと思っているらしいぞ! このおおぼけ
0998デフォルトの名無しさんNGNG
自分が使ってるコーディングスタイルを初心者に押し付けるスレはここですか
0999デフォルトの名無しさんNGNG
1000
1000デフォルトの名無しさんNGNG
根本的におもいちがいしてるなあ > なぜあけるのとあけない関数があるのか
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。