[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/19 06:51 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇)



1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ]
入門者向けの俺に聞けスレです。
なんでもきいてよね

856 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 03:59:06 ]
ここは回答者の入門スレなのか?
堂々と間違った回答をされても困るんだが。

857 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 04:09:32 ]
>>851さんごめんなさい。。。
while文とごっちゃになってましたOrz
真ならループではなくただ実行されるだけでした
偽ならスルーします。
>>856さんこれであってますでしょうか?

858 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:15:37 ]
1と2しか判定しないなら素直に
for(; GetRandom(1, 2) != 2; b++)
;

859 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:49:25 ]
そして結局
while(GetRandom(1, 2)!=2)b++;

860 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 07:58:25 ]
>854
>0以外なら偽と見なし(略)


861 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 09:00:28 ]
>>850
エラーメッセージを書け。
あと、CのコンパイルにVBは関係ないだろ。

862 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:04:57 ]
あの〜
2進数表記する型ってないんですかね。
ライブラリさがしてるんですけど・・・

863 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:30:54 ]
>>862
#include <stdio.h>

/* 静的アサーション */
void SASSERT_(int(*p)[1]) { }
#define SASSERT(b) SASSERT_((int(*)[(b) ? 1 : -1])0)

/* 2進1バイトリテラル */
#define BYTE2(x) \
 (SASSERT(1 < sizeof (#x) && sizeof (#x) <= 9), /* 1〜8 文字に制限 */ \
  SASSERT((0x##x & ~0x11111111) == 0), /* 余計なビットがあるとエラー */ \
  (0x##x >> 0) & 0x01 | \
  (0x##x >> 3) & 0x02 | \
  (0x##x >> 6) & 0x04 | \
  (0x##x >> 9) & 0x08 | \
  (0x##x >> 12) & 0x10 | \
  (0x##x >> 15) & 0x20 | \
  (0x##x >> 18) & 0x40 | \
  (0x##x >> 21) & 0x80)

/* 2進2バイトリテラル */
#define WORD2(x1, x0) ((BYTE2(x1) << 8) | BYTE2(x0))

/* 2進4バイトリテラル */
#define DWORD2(x3, x2, x1, x0) ((WORD2(x3, x2) << 16) | WORD2(x1, x0))

int main() {
 printf("%X\n", BYTE2(01011011));
 printf("%X\n", WORD2(11001011, 10000011));
 printf("%X\n", DWORD2(01011011, 11001011, 10000011, 00000000));
}

864 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:31:52 ]
型…?

もしかしてBASICの&Bみたいに2進でリテラル書きたいってこと??



865 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 13:56:36 ]
>>863 ちゃいまんねん
>>864 そうそう。型指定文字のこと。

866 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:42:03 ]
ない

867 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:43:17 ]
ないからこその代案が>863なわけだな。

868 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:44:15 ]
2進でリテラル書きたいだけなら、
>>863 で何か不都合でもあるんだろうか。
文法的な事を知りたかっただけなの?

869 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:46:04 ]
>>863の(0x##x >> 0) & 0x01ってどういういみですか?
すいませんが説明していただけるとたすかります

870 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:48:24 ]
やっぱいちいち計算しなきゃ駄目なのか・・・

871 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:50:36 ]
256通りのテーブル作って、テーブル引きしたほうが早くないか?

872 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:52:09 ]
0x##x は、0x と x(マクロの引数)をくっつけるもの。
例えば、BYTE2(01011011) なら 0x##x は 0x01011011 になる。
この時、結局 (0x##x >> 0) & 0x01 は
(0x01011011 >> 0) & 0x01 になる。
つまり、0 ビット目を抜き出す操作に相当する。
(0x##x >> 3) & 0x02 は 4 ビット目を 1 ビット目に持ってきて、
それ以外のビットを消す。
(0x##x >> 6) & 0x04 は 8 ビット目を 2 ビット目に持ってきて(ry
こうやって、0x01011011 を2進数 01011011 にしている。

これらの計算は静的に行われるので、
コンパイル時に全部計算が行われて、
単なる定数に置き換わる。
速度は気にする必要ない。

873 名前:862 mailto:sage [2006/07/16(日) 14:52:11 ]
あ!そういうことか!
どうもトンクス>>863-868

874 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:57:22 ]
>>872
へー、それ知らんかった。勉強になった。



875 名前:850 mailto:sage [2006/07/16(日) 19:52:59 ]
>>861
訂正。
×自分はVB8アカデミック(=SE)を使っているのですが。
○自分はVS8アカデミック(=SE)を使っているのですが。
エラーメッセージは850で書いたコードをコンパイルした場合、
(9) : error C2664: 'MessageBox' : 2 番目の引数を 'const char [18]' から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
というメッセージがでます。

876 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 20:05:10 ]
>>875
_T("Kitty on your lap")
_T("メッセージです。")
とするか
プロジェクトのプロパティ→構成プロパティ→全般→文字セット→マルチバイト文字セットを使用する
に設定。

LPCTSTRはUnicodeを使うかマルチバイト文字を使うかでLPCWSTRかLPCSTRになる。
MessageBoxもMessageBoxWとMessageBoxAで切り替わる。
単にダブルクォーテーションで囲んだだけだとcharの配列 → LPCSTRに変換→引数の型不一致。
文字列リテラルを_T()で囲むとUnicodeの時には頭にLを付けてくれるからLPCWSTRにできる。

877 名前:デフォルトの名無しさん [2006/07/16(日) 20:37:58 ]
質問です。
これの間違いを教えて頂きたいッス!
文字列を入力させる。その中に”ABC”という部分文字列(連続)が含まれていれば「OK」、そうでなければ「NO!」と出力される。
#include<stdio.h>
main()
{
char moji[256];
int n=0,flag=0;
scanf("%s", &moji[n]);
while(moji[n]!='\0'){
if(moji[n]=='O' && moji[n+1]=='U' && moji[n+2]=='P')flag=1;n++;}
if(flag=1){printf("OK\n");}
else printf("NO!\n");
}

878 名前:875 mailto:sage [2006/07/16(日) 20:48:57 ]
>>876
詳しい説明ありがとうございますっ
しかし知識がなさすぎて理解できませんでしたOrzすみませんホント
林○比古の本でも買って勉強してきます。
ありがとうございました。

879 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 20:50:04 ]
scanf("%255s", moji);
printf("%s\n", strstr(moji, "ABC") ? "OK" : "NO!");

880 名前:デフォルトの名無しさん [2006/07/16(日) 20:56:51 ]
DirectXで全画面で動いてるゲームとかの画面上に自分のアプリのウィンドウ出したいんだけど
できるの?
できるなら何かヒントちょうだい

881 名前:デフォルトの名無しさん [2006/07/16(日) 20:56:56 ]
>>879
いただきましたーーーー!!
ありがとうございました☆

882 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 21:04:59 ]
>>880
全画面ゲームの場合排他モードで動作してるかもしれないので無理かも

883 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 21:11:11 ]
なんかネトゲのボットを作りたいらしき質問をあちこちでみるな

884 名前:デフォルトの名無しさん [2006/07/16(日) 23:49:46 ]
>>882
そうなんだ。排他モードなんてものがあるのか。どうも。



885 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 04:07:28 ]
>>880
そういう場合はd3dx9のラッパーを書いて
Presentメソッドに細工して自分が描画したいものを割り込ませる

886 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 04:40:50 ]
必死にチートしようとしてるとか?
鯖側でプログラムやってる香具師はちゃんとチェック機能付けて排除する対策してると思うよ。

887 名前:デフォルトの名無しさん [2006/07/17(月) 05:50:48 ]
>>885
へー、なんか凄いヒントもらっちゃった。ありがと
>>886
ボットも面白いかもね。でも後ろで動かしとけばいいんじゃないの?分かんないけど

いいヒント貰ったのであとはDXスレ見てくる

888 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:07:25 ]
ポインタがわからない・・・

main(){
char *c;
*str='c';
int *i;
*i=1;
printf("*c=%c\n",*c);
printf("*i=%d\n",*i);
}
これの何がわるいんだか教えてちょんだい・・・

889 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:09:25 ]
あ、間違えた
*str='c';->*c='c';

890 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:10:51 ]
ポインタは虚構

891 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:12:54 ]
>>888
cもiも、まだどこも実体を指していないうちに*で間接参照しているから。

892 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:19:11 ]
>>888
>これの何がわるいんだか教えてちょんだい・・・
あんたの頭。

・エラーがでた。
→エラーメッセージを張れ。
・想定したとおりの動作をしない。
→想定した動作と実際の動作を書け。
・間違いを指摘された。
→指摘した人間に聞くか、どう指摘されたか書け。

893 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:26:12 ]
>>890-891これならいい?
main(){
char *c;
char ch;
ch='c';
c=&ch;
int *i;
int in;
in=1;
i=∈
printf("*c=%c\n",*c);
printf("*i=%d\n",*i);
}
でもこんな書き方してるソースなんて見たことないぜ。

894 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:32:40 ]
>>893
そんな書き方する意味がないからな



895 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:33:36 ]
>>893
お前入門者以下だからよそ池

896 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:44:42 ]
(´・ω・`)ショボン

897 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:46:06 ]
>>893
まず、なにをしたいのか日本語で説明してもらえまいか?

898 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:01:11 ]
fish...

899 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:09:10 ]
(´・ω・`)エサだったのか

900 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:10:07 ]
>>897
俺が持ってる林晴比古著新C言語入門シニア編のポインタの初期化てところに
ex1
int d;
int *p=&d;
ex2
char s[80];
char *p=s;
ex3
char s[80];
char *p=&s[3];
ex4
char *p = "ABCDE";
ex5
char *p=(char *)malloc(100);
って書いてあったけど、あれ*pって配列ABCDEなら文字A(p[0])が入るよな〜と思って、
char *c;
*c='c';
ってやってみたら*cの値に'c'が入るのかなと思ってやってみたらできなかったので
なぜだか聞いてみた。
でも
int *i;
*i=1;
はちゃんと1って出てきたよ?char型とint型って違う動きするの?


901 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:14:56 ]
>>900
> int *i;
> *i=1;
> はちゃんと1って出てきたよ?char型とint型って違う動きするの?

たまたま動いてるだけ。実際はメモリを破壊してる。

あと
char *c = (char *)malloc(100);

char *c;
c = (char *)malloc(100);
と同義で、*c = とは別

902 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:28:03 ]
他の参考書を見てみたら?

903 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:41:06 ]
親父の本はこれとこれのビギナー編しかない
発行見てみたら1992年だった
古すぎ?

904 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 12:11:37 ]
>>903
古いか新しいかじゃなくて、肝心な事がちゃんと書いてあるかどうか。
>>900の疑問に答えてくれる本、っていう基準で探すのもテだぞ。




905 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 12:30:42 ]
本屋いってくるか・・・雨だけど・・・

906 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 15:49:17 ]
void make_fare_table(int num, double *dist_list,
COSTUNIT *cost_list, int **fare_table) {

ていう関数を書いたとき、
引数のint **fare_tableはmainでどーやって指定すればいいんですか?
ちなみにfare_tableは2次元配列です。fare_table[30][30]って感じ。

907 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:06:42 ]
void foo(int t[30][30]){
}
main(){
 int f[30][30] ;
 foo(f) ;
}
でいいんじゃない?

908 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:37:58 ]
>>907
引数の型が指定されてるんですわ
これ基本情報技術者試験の過去問なんだけど

909 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:52:32 ]
>>908
int **fare_tableが二次元配列なんてありえない。
移し間違えじゃないのか。

910 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:00:03 ]
全部写すよ
#include

typedef struct { int max_dist; /* 上限距離(km) */
int unit_dist; /* 単位距離(km) */
int unit_cost; /* 単位距離ごとの運賃(円) */
} COSTUNIT;

void make_fare_table(int, double *, COSTUNIT *, int **);
int calc_fare(double, COSTUNIT *);

void make_fare_table(int num, double *dist_list,
COSTUNIT *cost_list, int **fare_table) {
int idx0, idx1;
double dist;

for (idx0 = 0; idx0 < num; idx0++) {
fare_table[idx0][idx0] = 0;
dist = 0.0;
for (idx1 = idx0 + 1; idx1 < num; idx1++) {
dist += dist_list[idx1-1];
fare_table[idx0][idx1]=fare_table[idx1][idx0]
=calc_fare(dist, cost_list);
}
}
}


911 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:01:17 ]
int calc_fare(double dist, COSTUNIT *cost_list) {
int fare = 0, idx = 0;
int lower_limit; /* 区間の下限(直前の区間の上限距離) */
int upper_limit; /* 区間の上限(現在の区間の上限距離) */
lower_limit = 0;
upper_limit = cost_list[0].max_dist;
while (upper_limit!=0 && dist > (double)upper_limit) {
fare += ceil((double)(upper_limit-lower_limit)
/ (double)cost_list[idx].unit_dist)
* cost_list[idx].unit_cost;
lower_limit = upper_limit;
upper_limit = cost_list[++idx].max_dist;
}
fare += ceil((dist - (double)lower_limit)
/ (double)cost_list[idx].unit_dist)
* cost_list[idx].unit_cost;
return fare;
}


912 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:09:20 ]
試しに入れたメインはこれ

main(){
COSTUNIT cost_list[4];
cost_list[0].max_dist=20;
cost_list[0].unit_dist=5;
cost_list[0].unit_cost=100;
cost_list[1].max_dist=100;
cost_list[1].unit_dist=10;
cost_list[1].unit_cost=180;
cost_list[2].max_dist=500;
cost_list[2].unit_dist=50;
cost_list[2].unit_cost=850;
cost_list[3].max_dist=0;
cost_list[3].unit_dist=100;
cost_list[3].unit_cost=1650;
double dist_list[10]={3.0,5.5,10.0,3.8,8.2,7.6};
int **fare_table[30][30];
make_fare_table(4,dist_list,cost_list,fare_table);
}


913 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:14:32 ]
>>910
写し間違いじゃないのなら、問題が間違ってる。

914 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:17:41 ]
つか、俺試験受けたこと無いけど、まさか「誤りを探せ」という問題じゃ
ないだろうな。



915 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:21:02 ]
うそーん。マジ?

916 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:23:22 ]
>>914
ちがうよ。ここみてよ
ttp://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H17a2/pm10.html

917 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:29 ]
>>916
問題が間違ってる。特にfare_table[m][n]のm != nだとありえない度うp。

918 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:33:34 ]
for(i=0;i<30;i++)fare_table[i]=(int*)malloc(30*sizeof(int));
なヨカン

919 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:37:40 ]
どうも・・・
でも普通間違ってる問題出すか!?仮にも国家試験だろう!
他の問題からベンキョします

920 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 17:49:23 ]
>>918
fare_table[m][n]で、m != nダヨ。

921 名前:920 mailto:sage [2006/07/17(月) 17:51:32 ]
いや、問題を読み違えてた。スマソ。
>>918で正解な予感。
int *fare_table[30]で、実引数はfare_table。
動かしてないけど。

922 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:10:02 ]
>>918,921
それで出てきました。アリガトン

923 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:32:06 ]
乗数演算子って無いの?

924 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:44:38 ]
>>923
ない。
www.kouno.jp/home/c_faq/c14.html#7



925 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 18:45:01 ]
fscanfで文字を読み込んだ場合、ファイル位置表示子は移動しますか?

926 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 19:50:26 ]
>>925
「位置表示子」とはなんぞ?
読み出しオフセットが気になるならftell()でもして味噌。

927 名前:デフォルトの名無しさん [2006/07/17(月) 22:05:12 ]
問題1.キーボードから63以下の2つの整数を変数a,bに入力して、a+bの結果がアスキーコードの対応する文字・記号となって出力されるプログラムを作れ。

問題2キーボードから英字1つを入力し、その英字より2つ前の英字(または数字、記号)を出力するプログラムを作れ

すみませんまったくの初心者です
宿題でまったくわかりません

928 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 22:05:56 ]
>>927
C/C++の宿題を片付けます 66代目
pc8.2ch.net/test/read.cgi/tech/1151477344/l50

929 名前:デフォルトの名無しさん [2006/07/17(月) 23:17:58 ]
すれ違いでしたか
ありがとうございます。


930 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:26:53 ]
typedef struct letter {
char c;
struct letter *follow;
struct letter *other;
char *trans;
} LETTER;

LETTER *p_root;

void main(){
LETTER *p = p_root;

って書いたら、
p
には何が入ってるんですか?

931 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:30:31 ]
>>930
*p_rootに入っていた内容。初期化してないから何が入ってるかわからない。

932 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 11:44:43 ]
p_root->c='m';
p_root->follow->c='a';
p_root->other->c='n';
p_root->trans=NULL;
だったら?

933 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 12:56:13 ]
プログラムから別のプログラムを立ち上げる方法を教えてください。
ブラウザで例えるとmp3などのURLをクリックすると再生プレイヤーが立ち上がるような感じで、
そのmp3のURLを渡して起動させたいのですが
よろしくお願いします。

934 名前:デフォルトの名無しさん [2006/07/18(火) 13:36:38 ]
野球チームがnチームあり,1日にm試合ずつ消化して,総当たり戦を行うものとする.
各チーム名はA, B, C,...Zのようにアルファベットの頭文字で表されるものとする.
nは26以下,mは4以下とするとき,以下のような試合の日程表をつくりなさい.
全試合が終了するのに必要な日数と全試合数も表示すること.

Number of Teams -> 4
Number of Games per Day -> 4

-------- Schedule ----------
Day 1
Game 1 : A vs B
Game 2 : A vs C
Game 3 : A vs D
Game 4 : B vs C

Day 2
Game 1 : B vs D
Game 2 : C vs D
---------------------------
Total Number of Days : 2 days
Total Number of Games : 6 games
---------------------------
誰か作ってくれ・・・
わからん・・・



935 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 14:43:07 ]
>>934
留年しろ。

936 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:01:43 ]
>>932
pはポインタ。p_rootもポインタ。
その値は代入によって同じになっているはず。
つまり、p->c == p_root->c && p->follow->c == p_root->follow->c && p->other->c == p_root->other->c && p->trans == p_root->transということ。

>>933
環境依存でよければ、例えばWindowsならShellExecute()辺りが向いているかもしれない。
しかし、その程度のことも調べられないようなら手を出さない方が無難だとも思う。

>>934
宿題スレにでも逝ってみたら?

937 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:11 ]
>>933
ありがとうございます。
これを足がかりにもう少し調べて見ます。

938 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:20:42 ]
>>937>>936あてです。すみません。

939 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 15:58:56 ]
>>936
次にね
while( p!=NULL ){
p=p->other;
}
って書いてあるんですよ。
このpって何を示してるの?
pのメンバ全部のこと示してる?

ちなみにこれも基本情報の過去問だけど…
www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H18a2/pm10.html
↑ここ

940 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:26 ]
>>939
LETTER型のオブジェクト

941 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 17:17:33 ]
pは構造体先頭を指している。

942 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 18:03:43 ]
p->cのことでええんかな?
どうも〜

943 名前:デフォルトの名無しさん [2006/07/18(火) 18:17:53 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2392.txt
Cでシェルを実装し、パイプラインをpipeシステムコールを使ってできる
ようにしたいのですが、3つ以上のコマンドを繋ぐことができません。
どのようにすればよろしいでしょうか?

944 名前:936 mailto:sage [2006/07/18(火) 19:00:14 ]
>>939
だからpはポインタなんだってばさ。ポイントしている先があるかないかのチェックをしているわけだね。
だから>942は間違い。>941もおかしいな、先頭のみを指しているわけではないのだから。
つーか、ポインタの勉強してきなさいよ。

>>943
コメントもろくにないソースをいきなり読まされる身になってくれ。
つーか、どこが入門レベルなんだか。



945 名前:943 mailto:sage [2006/07/18(火) 19:30:15 ]
>>944
すいません、実行後に標準入力からコマンドを入力し、そのコマンドをgetcl関数で
スペース毎にでargmv[0],argmv[1]...に格納し、exec_one_command関数で実行。
その中にパイプがあればパイプの処理をするという仕様です。
自分でやったところはexec_one_command内でgetclでできたコマンドからパイプを
見つけてそれをNULLに置き換え、パイプの数に応じてexecvpで実行していくという
ところです。

なんとかして完成させたいのですが、ここじゃ不味いですか('A`)
どこいけばいいでしょうか・・・


946 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:07:28 ]
>>944
すいません
どこでベンキョしてくればいいでしょう
お勧めの本とかページとかあります?

947 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:08:56 ]
void funcB()
{
return;
}

void funcA()
{
funcB();
printf();
}

こういう場合ってprintf()って作動しますか?

948 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:11:12 ]
するよ

949 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 23:20:14 ]
>>947
funcA()を呼べばね。

>>946
書籍スレにでもどうぞ。

>>945
ここでもいいけど、みての通りここだとレスつかないねぇ。
pipeなんて非標準だし、環境依存OKスレかUnixプログラミングスレ辺りかね。

950 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:36:41 ]
>>944
先頭指してなかったら、キャストもせずに、->演算子使えるわけないじゃん。

951 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:51:03 ]
>>950
アホ?

952 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 01:02:50 ]
p->otherはstruct letter* だから>>941を間違いってのはアレだよな

953 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 07:50:03 ]
for(;;)とwhile(1)はどっちがはやいんですかね?

954 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 08:03:07 ]
>>953
大丈夫、お前よりもよっぽど賢いコンパイラにとって、それらはどちらも同じと解釈されるから気にするな。
#まぁ、前者を推奨するがな。



955 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:10:13 ]
大昔の頭の悪いコンパイラだと for(;;) の方が早いとか聞いた気もするが、
今のコンパイラならどっちでもいいな。

956 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:12:34 ]
(;;)

957 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 09:52:47 ]
(;o;)

958 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:03:37 ]
(;A;)

959 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:14:25 ]
('A')

960 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:46:03 ]
("ω")

961 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 11:29:39 ]
( ; _ ; )

962 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:27:56 ]
(T-T)

963 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:36:00 ]
(:-D)

964 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:42:05 ]
:-D~~



965 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:24:10 ]
>>863
void SASSERT_(int(*p)[1]) { }
#define SASSERT(b) SASSERT_((int(*)[(b) ? 1 : -1])0)

は、単に

#define SASSERT(b) ((void)(int(*)[(b) ? 1 : -1])0)

でいいことに今頃気づいた。

966 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:37:15 ]
K&R本の1.5.2 文字のカウント
のプログラムをちゃんと打って、シグウィンでコンパイルしても
実行したら全くカウントしてくれないのですが、
どうしてでしょうか?誰か教えて下さい。

967 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 02:24:54 ]
>>966
そのプログラムを貼れ。

968 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 07:27:35 ]
#include <stdio.h>

/* 入力される文字をカウント;第1版 */
main()
{
long nc;

nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}

969 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 08:29:16 ]
入力を終了しないからいつまで経っても表示されないだけに一票。

970 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 09:21:38 ]
でもこっちはちゃんとできるんですよ。

#include <stdio.h>

/* 入力された文字を複写;第2版 */
main()
{
int c;

while((c = getchar()) != EOF)
putchar(c);
}

971 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 10:54:10 ]
いやだから・・・。

972 名前:デフォルトの名無しさん [2006/07/21(金) 11:50:37 ]
ST.c: 関数 `function2' 内:
FLIST.c:75: 警告: 引数 2 個の `strcat' を渡しますにより、キャストなしで整数からポインタを作りました
:wq!

上記の警告がでました。問題の75行目 strcatは以下です。
strcat(strLine,ctime( &buf.st_mtime ));/*警告箇所*/
st_mtimeはファイル情報を取得する処理【stat関数】のメンバでbufの変数定義は
struct stat buf;、strLine変数はchar strLine[255];としております。
警告を回避するキャストの方法を教えてください。環境はLinux redhatです。

973 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 12:24:15 ]
>>972
#include <time.h>
してないってことはない?

974 名前:デフォルトの名無しさん [2006/07/21(金) 12:40:43 ]
レスありがとうございました。インクルード記述はあります。
プラットホームをUnixからlinuxに移した際に
リコンパイルで警告がでました。



975 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:04:56 ]
>>974
その周辺ロジックだけのプログラム作っても再現する?
こちらでは問題ないのだが。
以下、テストコード。
--
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>

int main(int argc, char ** argv)
{
char strLine[255];
sprintf(strLine, "%s:", argv[1]);
struct stat buf;
stat(argv[1], & buf);
strcat(strLine,ctime(&buf.st_mtime));
puts(strLine);
return 0;
}


976 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 13:32:38 ]
>>968
それは何か入力後に EOF を渡す必要がある。
これは Cygwin だとどうなっているのか分からないが、
UNIX 系 OS だとデフォルトでは Ctrl+D でできるのが
普通だ。Windows のコマンドプロンプトや MS-DOS
プロンプトでは Ctrl+Z だ。どちらかを入力してみれば
できるんじゃないだろうか。


977 名前:968 mailto:sage [2006/07/21(金) 15:13:46 ]
>>976
ありがとうございます。Ctrl+Zで出来ました。

978 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 15:18:18 ]
結局>969じゃん。

979 名前:968 mailto:sage [2006/07/21(金) 16:38:45 ]
間違えました。Ctrl+Dでした。

>>978
入力を終了しなくても出来そうだな、とか
馬鹿な考えを起こしていたもので...m(_ _)m

980 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 14:43:42 ]
> 賢いコンパイラにとって、それらはどちらも同じと解釈されるから
while(1) だと警告がでる
for(;;) だとでない

981 名前:デフォルトの名無しさん [2006/07/23(日) 12:03:52 ]
プロトタイプ宣言のない関数’printf'の呼び出し(関数main)
という警告文が出るけどなに?

982 名前:デフォルトの名無しさん [2006/07/23(日) 12:07:13 ]
>>981
#include <stdio.h>がないとか
printfがpirntfになってたりとかじゃないかな?

983 名前:981 [2006/07/23(日) 12:10:28 ]
>>982
その辺は確認しているのだけど
 そのへんが問題なのかな?

984 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:33:16 ]
こういう場合、ソースを貼り付けたら一発で分かったりすることも多い。



985 名前:981 [2006/07/23(日) 12:46:51 ]
#include <sudio.h>

int main( )
{
int n=500+ 150;
printf("%d", n);
return 0;
}
こんな感じなんだけど諸兄の
意見はいかがですかね?

986 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:02 ]
int a;
char s[3] = "FF"

a == 255
みたいなイメージで、文字データとして16進の形でcharの配列に入ってるものをint形の変数に代入する方法ってない?


987 名前:デフォルトの名無しさん [2006/07/23(日) 12:48:41 ]
1はツンデレ

988 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:52:46 ]
>>985
1行目で既に破綻が

989 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 12:59:38 ]
>>986
strtol

990 名前:981 [2006/07/23(日) 13:00:32 ]
>>988
ありがと。いまきずいた(汗

991 名前:986 mailto:sage [2006/07/23(日) 13:04:15 ]
>>989
さんくす、助かった

992 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 18:01:34 ]
よくコンパイルまで行ったな。

993 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:40:46 ]
おまいら日本語よりC言語のほうが意思疎通出来るんだな(w

994 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 10:55:00 ]
次スレは>>995が立てるそうです。



995 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 18:38:56 ]
次スレはいらない。

996 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 09:49:42 ]
入らなかったら拡張しろ

997 名前:デフォルトの名無しさん [2006/07/25(火) 16:42:16 ]
1000

998 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:11:33 ]
スマン…まさか携帯から立つとは思わなかったんだ…
次スレ
C言語なら俺に聞け(入門篇) ぱぁと2〜
pc8.2ch.net/test/read.cgi/tech/1153818463/

スレタイについては反省していない

999 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:21:20 ]
>>998


1000 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 18:29:03 ]
>>998
おまえというやつは・・・乙

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef