C言語なら俺に聞け(入門篇) Part 14
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/06/13(水) 20:48:18C言語なら俺に聞け(入門篇) Part 13
http://pc11.2ch.net/test/read.cgi/tech/1179301993/
0153デフォルトの名無しさん
2007/06/17(日) 06:58:42> fscanf(file,"%d",&i);
これで test100 を %d の書式指定でint型のiに代入しても
適切に代入されへんよ。一度文字列として受け付けてから
atoiでiに代入してみては?
0154デフォルトの名無しさん
2007/06/17(日) 07:20:43そんなページで勉強しちゃダメだってば。
>馴染みのscanf関数に似たfscanf関数があります。
こんなこと書いている時点でお察し。
0155デフォルトの名無しさん
2007/06/17(日) 09:12:34#include <stdio.h>
#include <conio.h>
#include <string.h>
#define INPUT_MAX 15
#define STR_MAX 127
int main(void)
{
char m_number[] = "concatenation"; /* マジックナンバー */
char str[STR_MAX] = {0};
char c;
int i,j,b;
/* 文字列の数だけハイフンを表示 */
b = strlen(m_number);
for(i = 0; i < b; i++) str[i] = '-';
printf(" 入力できる回数:%d\n %s\n",INPUT_MAX,str);
/* 入力した文字列とマジックナンバーを比較 */
for(i = 0; i < INPUT_MAX; i++){
c = getche();
for(j = 0; j < b; j++){
if(m_number[j] == c)
str[j] = c;
}
printf(" %s %2d\n",str,i+1);
if(!strcmp(m_number,str)) break;
}
if(i == INPUT_MAX) printf(" 〜GAME OVER〜 (..、)ヾ(^^ )ヨシヨシ\n");
else printf(" YOU WIN!! (*^-゚)vィェィ♪\n");
return 0;
}
0156デフォルトの名無しさん
2007/06/17(日) 09:16:48いいんじゃないでしょうか
0157デフォルトの名無しさん
2007/06/17(日) 09:23:450158デフォルトの名無しさん
2007/06/17(日) 09:26:260159デフォルトの名無しさん
2007/06/17(日) 09:27:08double x;
double y;
};
/*----------------------------------------------------------
(二次元)ベクトルの大きさを求める
----------------------------------------------------------*/
double ScalarVector2D( POINT2D vec ){
return sqrt( vec.x * vec.x + vec.y * vec.y );
}
/*----------------------------------------------------------
(二次元)任意のベクトルを単位ベクトル化
----------------------------------------------------------*/
void Normalize2D( POINT2D *vec ){
double scalar;
/* ベクトルのスカラーを求める */
scalar = ScalarVector2D( *vec );
/* ベクトルに大きさがない */
if( scalar == 0.0 )
return;
/* 各成分をスカラーで割る */
vec->x /= scalar;
vec->y /= scalar;
}
これで単位ベクトル求めようとして 下みたいにしたらエラーが出るんですが… ボスケテ
POINT2D *pointA;
cout << "input x1 > "; cin >> pointA->x; cout << "input y1 > "; cin >> pointA->y;
cout << Normalize2D(pointA) << endl;
0160デフォルトの名無しさん
2007/06/17(日) 09:29:08スクエ二に就職できんじゃね?
0161デフォルトの名無しさん
2007/06/17(日) 09:31:350162デフォルトの名無しさん
2007/06/17(日) 09:33:49こんなんじゃマイメロみたいにスッキリできない
0163デフォルトの名無しさん
2007/06/17(日) 09:36:55> cout << Normalize2D(pointA) << endl;
なんでこんなことができると思ってんだ。心で濃いよ
0164デフォルトの名無しさん
2007/06/17(日) 09:40:030165デフォルトの名無しさん
2007/06/17(日) 09:41:03読み込むファイルの中の文章の母音(a,b,c,d,e)を「−」に変えるプログラム
(例えばテキストファイルの中身が「abcde」なら「-bcd-」になるテキストをつくる)
をつくったんですけど最後に「-bcd-$жL!жD」みたいにバグ文字が入力
されてしまいます。バグを表示しないようにするアドバイスもしよければお願いします。
#include<stdio.h>
int main(void){
FILE *fin,*fout;
char stn[FILENAME_MAX],str[80],c;
int i=0;
printf("filename: \n");
scanf("%s",stn);
fout=fopen("bou.txt","w");
if((fin=fopen(stn,"r"))==NULL)return (-1);
while((c=getc(fin))!=EOF){
if(c=='a'||c=='o'||c=='e'||c=='i'||c=='u')
str[i]='-';
else
str[i]=c;
i++;}
fprintf(fout,"%s",str);
fclose(fin);
fclose(fout);
return 0;}
0166デフォルトの名無しさん
2007/06/17(日) 10:01:34#include<stdio.h>
int main(void){
FILE *fin,*fout;
char stn[FILENAME_MAX],c;
printf("filename: ");
scanf("%s",stn);
if((fin=fopen(stn,"r"))==NULL)return (-1);
fout=fopen("bou.txt","w");
while((c=getc(fin))!=EOF) {
if(c=='a'||c=='o'||c=='e'||c=='i'||c=='u')
fputc('-',fout);
else
fputc(c,fout);
}
fclose(fin);
fclose(fout);
return 0;}
0167165
2007/06/17(日) 11:08:19ありがとうございます。166さんのはなぜかバグ文字が出ないですね、すごいw
なんで165のだとバグ文字がでるんだろう…。
もしよければ165でバグ文字でる原因のほうも教えてくれるとうれしいです。
あと165の2行目「母音(a,i,u,e,o)」でした…オレバカだorz
0168デフォルトの名無しさん
2007/06/17(日) 11:12:45> fprintf(fout,"%s",str);
strの一番最後に文字列の終端を示す \0 を入れていないと
文字列の最後がおかしくなるよ。 str[i]='\0' (iはそれまで入れてきた文字列の最後の位置)
を入れてみては?
0169165
2007/06/17(日) 11:23:51作ってると細かい知識が飛び飛びになってしまうなぁ…。気をつけないと。
>>166さん>>168さん、本当にありがとうございます!
0170デフォルトの名無しさん
2007/06/17(日) 11:37:070171ひろみつ
2007/06/17(日) 12:33:420172デフォルトの名無しさん
2007/06/17(日) 12:37:28今から学ぶメリットはかなり小さいといわざるを得ない。
0173ひろみつ
2007/06/17(日) 12:39:07高速に処理するライブラリはつくるかもしれないので、
一応やっときます。
0174デフォルトの名無しさん
2007/06/17(日) 14:03:480175デフォルトの名無しさん
2007/06/17(日) 17:11:360176デフォルトの名無しさん
2007/06/17(日) 17:12:470177デフォルトの名無しさん
2007/06/17(日) 17:15:470178デフォルトの名無しさん
2007/06/17(日) 17:21:08なんていうか、設定が簡単。
C99非対応とか、規格からみて怪しいとかあるので、
基本以上のことするにはあまりオススメ出来ない
0179デフォルトの名無しさん
2007/06/17(日) 18:05:390180デフォルトの名無しさん
2007/06/17(日) 18:08:440181デフォルトの名無しさん
2007/06/17(日) 18:09:340182デフォルトの名無しさん
2007/06/17(日) 18:11:050183デフォルトの名無しさん
2007/06/17(日) 18:14:250184デフォルトの名無しさん
2007/06/17(日) 18:15:580185デフォルトの名無しさん
2007/06/17(日) 18:18:340186デフォルトの名無しさん
2007/06/17(日) 18:30:44Windows Vista で動かなかったりするんじゃないかな。
ビスタ持ってないから分からんが。
0187デフォルトの名無しさん
2007/06/17(日) 18:31:53そういう問題じゃないんだよw
0188デフォルトの名無しさん
2007/06/17(日) 18:37:33http://72.14.235.104/search?q=cache:paSHmCoCDSwJ:www.borland.com/jp/products/cbuilder/freecompiler.html+Borland+C%2B%2B&hl=ja&ct=clnk&cd=2&gl=jp&lr=lang_ja&client=firefox
> Borland C++Compiler 5.5のダウンロードは、こちら(8.46MB)をクリックして下さい。
CPad for Borland C++Compiler
ttp://www.vector.co.jp/soft/dl/win95/prog/se141451.html
0189デフォルトの名無しさん
2007/06/17(日) 18:39:00どういう問題?
intが16bitだとか?
0190デフォルトの名無しさん
2007/06/17(日) 18:45:22http://www.codegear.com/jp/downloads/free/cppbuilder
0191デフォルトの名無しさん
2007/06/17(日) 18:46:10変化が大きすぎるよな。
0192デフォルトの名無しさん
2007/06/17(日) 18:47:330193デフォルトの名無しさん
2007/06/17(日) 18:49:21今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
今なら初心者向けと言うと VC++ 2005 Express Edition 以外考えられないな。
0194デフォルトの名無しさん
2007/06/17(日) 18:51:320195デフォルトの名無しさん
2007/06/17(日) 18:58:020196デフォルトの名無しさん
2007/06/17(日) 18:59:53学生なら MS Visual Studio 2005 Academic Edition でも買っておきな。
ttp://www.7dream.com/product/n/a01b00/p/0446437
0197デフォルトの名無しさん
2007/06/17(日) 19:18:350198デフォルトの名無しさん
2007/06/17(日) 19:25:35デフォルトでC++のプロジェクトになってしまうから、空のプロジェクトを作ってmain.cを追加する。
そのまま実行すると一瞬で消えてしまうから、Ctrl+F5で実行する。
これだけ知ってればとりあえず無問題。
ただstdbool, stdintあたりがないのは確かに辛い。
が、C99前提にしてるなら他をあたるべきだな。
0199デフォルトの名無しさん
2007/06/17(日) 19:33:23VC で使えないからあまり意味がない。
0200デフォルトの名無しさん
2007/06/17(日) 19:50:140201デフォルトの名無しさん
2007/06/17(日) 19:54:000202デフォルトの名無しさん
2007/06/17(日) 20:04:27__FUNCTION__って使えたら便利だなぁとか時々思うんだけどなぁ
0203デフォルトの名無しさん
2007/06/17(日) 20:06:160204デフォルトの名無しさん
2007/06/17(日) 20:08:540205ひろみつ
2007/06/17(日) 20:11:560206デフォルトの名無しさん
2007/06/17(日) 20:14:16なにが?
とマジレス
0207デフォルトの名無しさん
2007/06/17(日) 20:23:210208デフォルトの名無しさん
2007/06/17(日) 20:27:38C99 は __func__ だし。
0209デフォルトの名無しさん
2007/06/17(日) 20:30:09拡張子cでも、IDEで作ったプロジェクトではデフォルトで/TP指定されていないか?
0210デフォルトの名無しさん
2007/06/17(日) 20:33:510211デフォルトの名無しさん
2007/06/17(日) 20:46:59BCC developerだ
0212デフォルトの名無しさん
2007/06/17(日) 20:48:030213デフォルトの名無しさん
2007/06/17(日) 21:03:53BCC は仕様古いからなあ。
0214デフォルトの名無しさん
2007/06/17(日) 21:04:53BCC ってこんな事が起こるコンパイラだろ?
0215デフォルトの名無しさん
2007/06/17(日) 21:07:30はい
>>42
こういうことになるコンパイラです
0216デフォルトの名無しさん
2007/06/17(日) 21:09:160217デフォルトの名無しさん
2007/06/17(日) 21:13:300218デフォルトの名無しさん
2007/06/17(日) 21:15:230219デフォルトの名無しさん
2007/06/17(日) 21:20:23?
0220デフォルトの名無しさん
2007/06/17(日) 21:23:15仕様って
「実行されないコード」と警告吐きながら実際は実行されていることを「仕様です」で片付けるのか?
0221デフォルトの名無しさん
2007/06/17(日) 21:27:120222デフォルトの名無しさん
2007/06/17(日) 21:30:05だれかBCB6以上持ってない?
0223デフォルトの名無しさん
2007/06/17(日) 21:31:31./main.c:7: 警告: incompatible implicit declaration of built-in function ‘strcpy’
0224デフォルトの名無しさん
2007/06/17(日) 21:37:57コンパイラ分からんけど、ちゃんとstring.hをincludeしてるか?
0225デフォルトの名無しさん
2007/06/17(日) 21:38:140226デフォルトの名無しさん
2007/06/17(日) 21:39:24さんくすこ
理由もお願い
0227デフォルトの名無しさん
2007/06/17(日) 21:40:080228デフォルトの名無しさん
2007/06/17(日) 21:41:23的な警告なの?
0229デフォルトの名無しさん
2007/06/17(日) 21:42:36gcc でコンパイルなの
で〜、string.h インクルードしなくても動いたよ
でも警告が出てたの
0230デフォルトの名無しさん
2007/06/17(日) 22:02:31char[0] = 'あ';
のようにやってもできなくて・・・
0231デフォルトの名無しさん
2007/06/17(日) 22:04:12strcpy(s, "あ");
0232デフォルトの名無しさん
2007/06/17(日) 22:05:460233デフォルトの名無しさん
2007/06/17(日) 22:06:44strcpyという関数のプロトタイプ宣言はstring.hで記述されている。
それをincludeしなかった場合、int strcpy()と解釈される。
これが組み込み関数のstrcpyと互換の無い型だ、と判断されている警告。
(だったと思うが嘘だったらすまん)
gccは賢いので、勝手にライブラリからstrcpy探してきたり
組み込み関数のstrcpy使ったりして動作するように実行ファイルを作ってくれる。
0234デフォルトの名無しさん
2007/06/17(日) 22:29:260235デフォルトの名無しさん
2007/06/17(日) 22:29:450236デフォルトの名無しさん
2007/06/17(日) 22:36:090237sage
2007/06/17(日) 23:09:09次のようにすると整数値のスタックが実用できる。試してみよ。(mainに
適当にpush();pop();を書いて、スタックに積んだ順番と出来てきた
順数を比べよ。
実際には使うには足らないところがある。それはどこか?
int srk0[100];
int stkp=0;
void push(Iint i);{
stk0[stskp++]=+;
}
int pop(){
return sstko[--stkp];
main(){
/***具体的な実行本体***/
/***ここまでがプログラム***/
}
0238デフォルトの名無しさん
2007/06/17(日) 23:12:320239デフォルトの名無しさん
2007/06/17(日) 23:13:55sageはメル欄に。
>実用
実装じゃないか?
色々とドコから突っ込んで良いのか分からないが、書き間違いか?
急ぐのも分かるが、ちょっと落ち着け。
>実際には使うには足らないところがある。それはどこか?
書き間違いを全てスルーして、↑が質問だとすると、
多分スタックに保存されてる数値が100超えた時のエラー処理が無い、ということじゃないか?
0240デフォルトの名無しさん
2007/06/17(日) 23:17:52くれるなら、よろしく。タイプミスはよくするので
0241デフォルトの名無しさん
2007/06/17(日) 23:20:12あとはpushされていない(スタックにデータがない)ときにpopしたときの処理も
0242デフォルトの名無しさん
2007/06/17(日) 23:25:59/***ここまでがプログラム***/
に入れるみたい
0243デフォルトの名無しさん
2007/06/17(日) 23:26:17じゃ、まぁヌクモリでもって一応突っ込んでおく。
今度からは先にコンパイル通して来いな。
void push(Iint i);{ /* ← セミコロン要らない。Iintは多分intの間違い*/
stk0[stskp++]=+; /* +は多分iの間違い */
}
int pop(){
return sstko[--stkp]; /* sstkoは多分srk0 */
/* ここに括弧の閉じ} が足りない */
main(){
/***具体的な実行本体***/
/***ここまでがプログラム***/
}
0244デフォルトの名無しさん
2007/06/17(日) 23:35:49/***具体的な実行本体***/
←
/***ここまでがプログラム***/
←には何がはいるかわかりますか
0245デフォルトの名無しさん
2007/06/17(日) 23:38:50値を表示して、pushする
popして、その値を表示する
>>242のあれだとここでstskpの範囲チェックもする
0246デフォルトの名無しさん
2007/06/17(日) 23:48:39値を表示してpushしてpopするのはわかるんですが
そのプログラムを作れないのです
0247デフォルトの名無しさん
2007/06/17(日) 23:51:46出ました
0248デフォルトの名無しさん
2007/06/17(日) 23:53:310249デフォルトの名無しさん
2007/06/17(日) 23:56:20かなりの初心者なので
0250デフォルトの名無しさん
2007/06/18(月) 00:06:59自分で調べるには限界です
0251デフォルトの名無しさん
2007/06/18(月) 00:07:27pushする数値はどうやって取得させたいんだ?
とりあえず乱数で
#include <stdio.h>
#include<stdlib.h> // srand() rand() のヘッダ
#include<time.h> // time()のヘッダ
int stk0[100];
int stkp=0;
void push(int i){
stk0[stkp++]=i;
}
int pop(void){
return stk0[--stkp];
}
int main(){
int a,i=0;
srand(time(NULL)); // 乱数初期化
printf("push\n");
for(;i<10;i++){
a=rand(); // 乱数生成
printf("%d\n",a);
push(a);
}
printf("\npop\n");
for(i=0;i<10;i++){
a=pop();
printf("%d\n",a);
}
return 0;
}
0252デフォルトの名無しさん
2007/06/18(月) 00:11:39わかりません
■ このスレッドは過去ログ倉庫に格納されています