C言語なら俺に聞け(入門篇) Part 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/09(木) 00:31:01・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
前スレ
C言語なら俺に聞け(入門篇) Part 3
http://pc8.2ch.net/test/read.cgi/tech/1160682950/
過去スレ
Part 1 http://pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 http://pc8.2ch.net/test/read.cgi/tech/1153818463/
関連スレ
くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
0286デフォルトの名無しさん
2006/11/15(水) 04:18:00質問に愚直に答えるなら、
p_positionから-1にしている。
日本語が不自由な君に軽くエスパーを駆使すると
配列の添え字が0から始まるのに対し、
p_positionは1から始まっているから。
0287デフォルトの名無しさん
2006/11/15(水) 05:09:17謎がとけました、サンクスです
0288デフォルトの名無しさん
2006/11/15(水) 06:14:44ありがとうございます
0289259
2006/11/15(水) 07:16:45あ、(string)aというのは本当にそのままキャストするってことではなくて
領域についてこういう風な考え方もできるから知っておくといいという意味でしたか
現場ならではって感じですね、ありがとうございました
0290デフォルトの名無しさん
2006/11/15(水) 11:20:55printfの%sに対して数値の0を渡したら、
文字化けやエラーではなく「(null)」という文字列が表示されました。
0292デフォルトの名無しさん
2006/11/15(水) 11:43:05%s
0293デフォルトの名無しさん
2006/11/15(水) 11:58:590294デフォルトの名無しさん
2006/11/15(水) 12:05:590 == "\0" は真だろ。
無知はお前の方だろww
0295デフォルトの名無しさん
2006/11/15(水) 12:33:00環境依存。
未定義の動作だから処理系によって動作は違がう。
その例は単なるフェイルプルーフだからその動作を期待してはいけない。
0296デフォルトの名無しさん
2006/11/15(水) 12:56:190298デフォルトの名無しさん
2006/11/15(水) 13:48:45を作りたいんですけど、どうすればいいですか?
自分は
char str[6];
int i;
for (i=0;i<6;i++)
{
str[i]="文字列"[i];
}
printf("%s\n",str);
return 0;
}
こういう奴をいじっていくつもりなんですけど。
0299デフォルトの名無しさん
2006/11/15(水) 13:53:350300デフォルトの名無しさん
2006/11/15(水) 14:02:54#include <string.h>
#include <stdlib.h>
char* reverse(char str[]) /* return NULL if error */
{ int i, len=strlen(str); char* buf;
if ((buf=(char*)calloc(sizeof(*buf), len)) == NULL) return NULL;
for (i=0; i<len; i++) buf[i]=str[i]; for (i=0; i<len; i++) str[i]=buf[len-1-i];
free(buf); return str; }
0301デフォルトの名無しさん
2006/11/15(水) 14:07:18unkoだったらoknuって出るようにします
>>300
すいません、まだポインタ習ってないです。
0302デフォルトの名無しさん
2006/11/15(水) 14:08:01予習になったね
0303デフォルトの名無しさん
2006/11/15(水) 14:14:30printf("oknu");
0304298
2006/11/15(水) 14:16:45ポインタ無しで>>298を(逆順の定義は>>301)解決したいです
どなたかお願いします。
文字列の連結やらコピーをするくらいまではなんとかできます。
0305デフォルトの名無しさん
2006/11/15(水) 14:23:38てことは、>>298の "文字列" ってのが
"列字文" ってならなくてもいいんだな?
0306298
2006/11/15(水) 14:26:38それは困ります><
できたらできたほうがいいです
0307298
2006/11/15(水) 14:32:49>>301は だったら って書いたので例えのことです。
これだったら>>1でいう詳しく書いたことにならないようなので、
言い直すと入力した文字の後から1つ1つ順番に出力したいです。
0308デフォルトの名無しさん
2006/11/15(水) 14:35:400309デフォルトの名無しさん
2006/11/15(水) 14:41:150310デフォルトの名無しさん
2006/11/15(水) 14:46:540311298
2006/11/15(水) 14:48:15すいません、それすら知りませんでした。
>>308
>>298は課題が出たからわからないので聞きにきたんですが、
問題の内容にすら書いていません。今までの課題の流れだと日本語を入力したことがないので
流れから判断して多バイト文字は無視でお願いします。
0312デフォルトの名無しさん
2006/11/15(水) 14:52:55しかし汚いコードでつね
0313デフォルトの名無しさん
2006/11/15(水) 15:38:390314デフォルトの名無しさん
2006/11/15(水) 15:44:12int i,k=6;
for (i=0;i<6;i++)
{
str[i]="文字列"[k--];
}
printf("%s\n",str);
return 0;
はいはい俺天才
0315デフォルトの名無しさん
2006/11/15(水) 15:45:40つ\0
0316デフォルトの名無しさん
2006/11/15(水) 15:48:26え、、えへへ
0317デフォルトの名無しさん
2006/11/15(水) 15:51:31いや、大きさが足りない
(男の人に言ったらまずかった?)
0318デフォルトの名無しさん
2006/11/15(水) 15:52:080319デフォルトの名無しさん
2006/11/15(水) 15:53:240320デフォルトの名無しさん
2006/11/15(水) 15:55:520321デフォルトの名無しさん
2006/11/15(水) 16:30:370322大学生
2006/11/15(水) 22:26:24「問題17」πの値を実数として計算し表示せよ。
「問題18」eの値を小数点以下60桁まで求めよ。
「問題19」πの値を小数点以下60桁まで求めよ。
この問題16.17.18、19のC言語プログラム(C++)でお願いします。
それと多倍長少数を利用して作ってください。
0323デフォルトの名無しさん
2006/11/15(水) 22:28:34C/C++の宿題を片付けます 76代目
http://pc8.2ch.net/test/read.cgi/tech/1162771475/
0324デフォルトの名無しさん
2006/11/15(水) 23:49:40いろんなところでとりあえずこれでやってみれと書いてある
Win32コンソールアプリケーションで作ると追加できるソースファイルが*.cppです
とりあえずHelloWorld!は出たんですが
*.cファイルが追加できるように設定しといた方がいいんでしょうか?
0325デフォルトの名無しさん
2006/11/15(水) 23:57:590326デフォルトの名無しさん
2006/11/16(木) 00:15:230327327
2006/11/16(木) 03:22:17その書き換えかたがわかりません。教えていただけませんでしょうか><;
以下のように記述していまして、c(文字型)の部分に整数を入れたいんです。
while((c = fgetc(fp)) != EOF)
{
if(c == '特定の文字')
{
//ここがわかりません
}
}
0328デフォルトの名無しさん
2006/11/16(木) 03:36:04f = ftell();
fseek(fp, 0, SEEK_CUR);
fputc(c, fp);
つまり"r+"で開いたファイルは、fseek()すればそのすぐ次には書いてもよい。
一度でも書いたらまたfseek()もしくはrewind()しないと読めない。
0329デフォルトの名無しさん
2006/11/16(木) 03:37:18{
if(c == '特定の文字')
{
c = 15; //任意の整数
}
}
0330デフォルトの名無しさん
2006/11/16(木) 03:38:590331デフォルトの名無しさん
2006/11/16(木) 03:45:48おまえ日本語読めないのか?
>>327はそんなこと望んでないぞ。
>>329が正解だろ。
0332デフォルトの名無しさん
2006/11/16(木) 03:54:540333327
2006/11/16(木) 05:13:55>>329さん
>>331さん
ありがとうございました。助かります。
すいません打ち間違ってしまったようで、
332の方のエスパー読みが実はこちらの言いたかったことなんです。
とすると、328の方のおっしゃったfseekを使えばいいんですか?
とりあえず使い方を調べて試してみます。
0334327
2006/11/16(木) 05:30:56試しに大文字と小文字を置き換えてみようと思って下のように
記述したのですが、これだと実行時にエラーになってしました。
恐らくfseekの使い方が誤っていると思うのですが、
どのように改善すればいいんですか? 質問ばかりで申し訳ないです。
while((c = fgetc(fp)) != EOF)
{
if(c=='S')
{
fseek(fp,0,SEEK_CUR) ;
fprintf(fp, "s") ;
fseek(fp,0,SEEK_CUR) ;
}
}
0335デフォルトの名無しさん
2006/11/16(木) 05:37:35多分ファイルのオープンモードが"r"になってるんだと思うよ。
"r+"にしてね。
0336327
2006/11/16(木) 05:43:09ありがとうございます。
モードは大丈夫みたいです。
他の文法や使い方は問題ないですか??
0337デフォルトの名無しさん
2006/11/16(木) 05:43:43fgetc(fp)で既にファイルポインタが一つ進んでいるので
fseek(fp, -1, SEEK_CUR);
fputc('s', fp);
fseek(fp, 0, SEEK_CUR);
だな
0338デフォルトの名無しさん
2006/11/16(木) 05:45:44EOFを表せないから
0339デフォルトの名無しさん
2006/11/16(木) 05:47:49後は他の人に任せた
0340327
2006/11/16(木) 05:53:27ありがとうございます。
確認したんですがモードは大丈夫なようです。
前後は以下のようになってますが、
関数の使い方や文法に間違いはありませんか??
もしかすると最初に見つけたSで
処理を繰り返してしまっているかもしれません。
fp = fopen("MMMMM.txt", "r+") ;
while((c = fgetc(fp)) != EOF)
{
if(c=='S')
{
fseek(fp,0,SEEK_CUR) ;
fprintf(fp, "s") ;
fseek(fp,0,SEEK_CUR) ;
}
}
fclose(fp) ;
0341327
2006/11/16(木) 06:00:43ありがとうございました。
337を参考に変えてみたんですが、それでも変わりませんでした・・・。
改行したくないのでfprintfを使ってるのが問題なのかもしれません。
cは整数以外も読み込むのでcharでないとエラーになってしまうと
思います・・・。
遅くまでありがとうございました。頑張ってみます。
0342デフォルトの名無しさん
2006/11/16(木) 09:09:46fgetc()の戻り値はcharで表せないEOFも返す必要から、intになっている。
従って、cはintであることが望ましい。
#つーか、charで受けるのは間違い。
それと、最初のfseek()は1バイト戻せと既に指摘されているのだがそっちは無視か?
0343デフォルトの名無しさん
2006/11/16(木) 13:18:350344デフォルトの名無しさん
2006/11/16(木) 13:32:420345327
2006/11/16(木) 13:49:39ありがとうございます。
fseekの-1は参考にさせてもらいました。
書き込みのタイミングがかぶってしまったようです。
おっしゃるとおりcharが落とし穴だったようで、
intにしたらうまくできました!
文字はcharというド素人の固定概念が間違ってました・・・><;
これを多少応用したものを作らなければならないので、
まだ安心はできませんが、なんとかなりそうです。
助かりました。ありがとうございましたm(__)m
0346デフォルトの名無しさん
2006/11/16(木) 14:25:08どのようにすればよいのでしょうか?
windowsのマシンでCを使い
linuxのサーバにデータを送るという感じです
0347デフォルトの名無しさん
2006/11/16(木) 14:35:59サーバとクライアント用の二つのプログラムを用意する
(来週につづく...)
0348デフォルトの名無しさん
2006/11/16(木) 14:38:13そのサーバって何?http? ftp? samba?
そのプロトコルに従って通信してください。
0349346
2006/11/16(木) 14:38:530350デフォルトの名無しさん
2006/11/16(木) 14:45:090351デフォルトの名無しさん
2006/11/16(木) 14:49:21PHPってことはHTTPだろ。Winsockでも使ってやれ。
0352346
2006/11/16(木) 14:54:09そうですねhttpです
クライアント用のほうは事情があって
Cで書かなきゃならないので・・・
Winesockですか調べてみます
これはCの中でできるんですよね?
0353デフォルトの名無しさん
2006/11/16(木) 14:57:33VC++, gcc, bccなどWin32APIが呼べる環境ならできる。
これ以上の話はCとは関係ないのでスレ違い。
0354デフォルトの名無しさん
2006/11/16(木) 16:22:030355デフォルトの名無しさん
2006/11/16(木) 18:33:090356デフォルトの名無しさん
2006/11/16(木) 19:14:08おまえのものはおれのもの
0357デフォルトの名無しさん
2006/11/16(木) 20:04:59よお、じゃいあん
0358デフォルトの名無しさん
2006/11/16(木) 20:51:49悪いけど、今日は歌いたい気分じゃない・・・
0359デフォルトの名無しさん
2006/11/16(木) 21:17:08構わないようなケースにはどのようなのがあるでしょうか。
0360デフォルトの名無しさん
2006/11/16(木) 21:22:400361わからないので教えてください
2006/11/16(木) 21:46:32ぜひ、よろしくお願いします・・・
問題
配列su(要素数:12)に任意の数値をランダムに初期値設定し、逐次決定法によって
整列(昇順)させ、結果を表示させるプログラムを作成してください。
0362デフォルトの名無しさん
2006/11/16(木) 21:54:260363デフォルトの名無しさん
2006/11/16(木) 22:03:070364デフォルトの名無しさん
2006/11/16(木) 22:05:560365デフォルトの名無しさん
2006/11/16(木) 23:08:41逐次決定法が何か知らんが昇順ソートでおk?
0366デフォルトの名無しさん
2006/11/16(木) 23:19:29宜しければ一度で良いので拝見して頂きたいです
当企画の成立には貴方の力が必要です
次世代コミュニティ製作 C++,mod_perl,P2Pが使えるコーダ、グラフィッカ募集中
http://pc8.2ch.net/test/read.cgi/tech/1163349367/
0367デフォルトの名無しさん
2006/11/16(木) 23:20:33おいいい加減にしろよ。あちこちのスレにコピペしやがって。
削除依頼出すぞ
0368STUDENT
2006/11/16(木) 23:29:36「問題19」πの値を小数点以下60桁まで求めよ。
のCプログラム(C++)を作ってください。
多倍長少数を利用してプログラムを作ってください。
0369デフォルトの名無しさん
2006/11/16(木) 23:44:45おいいい加減にしろよ。あちこちのスレにコピペしやがって。
削除依頼出すぞ
0370デフォルトの名無しさん
2006/11/17(金) 00:06:05作るのはかまわんが、お前にはやらん。
0371デフォルトの名無しさん
2006/11/17(金) 00:12:110372デフォルトの名無しさん
2006/11/17(金) 16:26:48printf("3.141592653589793238462643383279502884197169399375105820974944");
0373デフォルトの名無しさん
2006/11/17(金) 18:18:03{
char* pParam[20];
int i;
va_list args;
//可変個引数を取得
va_start(args, iParamCount);
for(i=0; i<20; i++){
pParam[i] = va_arg( args, char* );
}
return 0;
}
上記のように可変個引数を取得しようとしているのですが、
引数の型が複数あり、うまく引数が取得できません。
なにかいい方法ありませんか?
0374デフォルトの名無しさん
2006/11/17(金) 18:19:490375デフォルトの名無しさん
2006/11/17(金) 18:30:07蛇足だが、vprintf/vscanfのようにva_listを引数にとるものも作れ。
0376デフォルトの名無しさん
2006/11/17(金) 19:30:12int main(void)
{
int array[5];
int count;
for(count=0;count<5;count=count+1){
printf("Input No.%d",count);
scanf("%d",array[count]);
}
for(count=4;count>=0;count=count-1)
printf("No.%d:%d\n",count,array[count]);
return(0);
こいつで実行してもエラーで強制終了するんですけど何故ですか?}
0377デフォルトの名無しさん
2006/11/17(金) 19:33:07scanf("%d",array[count]);
引数はアドレスです
scanf("%d",&array[count]);
0378デフォルトの名無しさん
2006/11/17(金) 19:33:17}がなくね?
0379デフォルトの名無しさん
2006/11/17(金) 19:36:46>こいつで実行してもエラーで強制終了するんですけど何故ですか?}
この文の最後にあるw
0380デフォルトの名無しさん
2006/11/17(金) 19:37:39見えてなかったorz
0381デフォルトの名無しさん
2006/11/17(金) 19:47:13それでできましたどうもです
0382デフォルトの名無しさん
2006/11/17(金) 20:21:41ちょっとワロタ
0383デフォルトの名無しさん
2006/11/17(金) 22:30:56クッキー形式の日付をtime_t値に変換する関数とかあれば教えて下さい。
0384383
2006/11/17(金) 22:39:410385デフォルトの名無しさん
2006/11/17(金) 23:31:22自分で変換する関数作れ
■ このスレッドは過去ログ倉庫に格納されています