こんにちは。
昨日衛星はどこに落ちたのかしら?北米とか言ってるみたいだけど真相は?
衛星の軌跡を見たけど、2時間くらいで地球一周してるんだから
墜落したときの衝撃ってすごいんじゃないの?とか思っていました。
まぁ、僕の頭には落ちてこなかったのでよかったです。
さて、2回目のプログラミングのお勉強です。
***********************************************************************************************************
[Lesson4] ファイルを読み込んで出力してみよう
------------------ stady_file_read.c --------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
FILE *fp;
int birthday;
char name[256];
if ( argc < 2 ){
printf("(usage) : stady_file_read.exe [filename]\n");
exit(1);
}
if((fp = fopen(argv[1],"r")) == NULL){
printf("file read error!!!\n");
exit(0);
}
while((fscanf(fp,"%s %d",name,&birthday)) != EOF ) {
printf("name:%s birthday:%d\n",name,birthday);
}
fclose(fp);
return 0;
}
--------------------------------------------------------------------------------------------------------
【実行】
./stady_file_read.exe data
name:hiroyuki birthday:19840124
name:izumi birthday:19840628
name:ui birthday:20081028
----------------------------------------------------------------------------------------------------------
ファイルの読み込みにはファイルポインタを使います。
ファイルポインタは下記のように定義します。
(fpとしていますが任意の変数でOKです)
FILE *fp;
ファイルを開くにはfopen関数を使います。
fp = fopen(”ファイル名”,"r")
今回はファイル名をargv[1]としてコマンドの引数をファイル名としました。
もちろん、fopen(”data”,"r")と指定してもOKです。
fopenの2つ目のオプションは下記のように覚えておきましょうか。
読み込むファイルは"r"
書き込むファイルは"w"
次にfscanf関数でファイルを1行読み込みます。
fscanf(fp,"%s %d",name,&birthday)
fpで指定したファイルの1カラム目の”hiroyuki”をchar型の変数(name)、2カラム目の”19840124”をint型の変数(birthday)に代入します。
そして、printfでこれらの変数を出力します。
printf("name:%s birthday:%d\n",name,birthday);
whileを使ってファイルの終わり(EOF)がくるまで処理を繰り返します。
fopenしたら最後には必ずfcloseするように心がけましょう。
これだけでは何も面白くもないですが、
僕はデータの処理/解析などでこれらを活用してまーす。
こんばんは。
プログラミングほぼ初心者君です。
サクサクプログラムを作れる人に憧れています。
大学で勉強したけど、ちんぷんかんぷんで理解不能でした。
そして、今になって勉強を始めようかと思いまして。
今でも基礎が理解できないけど。
ということで、早速基礎からお勉強です。
参考書とか見ると難しい説明が長くて良くわからないので
まずは深く考えずに実践しながら覚えて行こうとか思います。
ちなみに、MACBookにはDefaultではコンパイラが入っていないから
”Xcode”っていう開発ツールをインストールしてます。
また、あえてブログに書いたのは学んだことを忘れないようにと
個人用に記録したかったからです。
ブログを見ている人にレクチャーする目的ではありませんので悪しからず。。。
どう考えてもgoogleで調べた方が正しい事が書いていますのでw
***********************************************************************************************************
[Lesson1] とりあえず何かをを表示してみよう
------------------ stady_printf.c ------------------------------------------------------------------
#include<stdio.h>
int main(){
int x;
x=123;
printf("Hello! My name is Hiroyuki.\n");
printf("%d\n",x);
return 0;
}
--------------------------------------------------------------------------------------------------------
【実行】
./stady_printf.exe
Hello! My name is Hiroyuki. ←出力結果
123 ←出力結果
----------------------------------------------------------------------------------------------------------
でたぁ!
これは、簡単ですね。
単純に文字を出力したのと、
xという変数をint型で定義して、123という数字をxに代入、変数xを出力する。
変数xはint型で定義しているので、出力形式は整数型の”%d”にする。
最後は戻り値を0を返す。
int型は主に整数だけど、小数を扱う場合にはdouble型ってのを使います。
他にも色々あるけど、ググッてね。
**********************************************************************************************************
[Lesson2] 値を読み込んでみましょう
------------------ stady_scanf.c ------------------------------------------------------------------
#include<stdio.h>
int main(){
int x;
printf("input=");
scanf("%d",&x);
printf("\n");
printf("output=%d\n",x);
return 0;
}
-----------------------------------------------------------------------------------------------------------
【実行】
./stady_scanf.exe
input= ←キーボードで適当な整数を入力する。
ここでは”999”と入れてみました。
output=999
-----------------------------------------------------------------------------------------------------------
おk!
ちなみに、”1.9”という小数値を入力すると”1”が返ってきました。
また、”ABC”と入力すると”0”が返ってきました。
入出力の型によって、変数の定義を変えなくてはいけませんね。
***********************************************************************************************************
[Lesson3] 足し算/引き算/掛け算/割り算
------------------ stady_calc_1.c -----------------------------------------------------------------
#include<stdio.h>
int main(){
double x,y;
printf("x=");
scanf("%lf",&x);
printf("y=");
scanf("%lf",&y);
printf("\n");
printf("addition=%.2lf\n",x + y);
printf("subtraction=%.3lf\n",x - y);
printf("multiplication=%.4lf\n",x * y);
printf("division=%lf\n",x / y);
return 0;
}
----------------------------------------------------------------------------------------------------------
【実行】
./stady_calc_1.exe
x= ←入力。
y= ←入力。
ここではxに”1”、yに”10”と入れてみました。
addition=11.00
subtraction=-9.000
multiplication=10.0000
division=0.100000
----------------------------------------------------------------------------------------------------------
計算の基本はこれだけです!
複雑な計算も「足し算/引き算/掛け算/割り算」の集まりですね。
割り算の余りを計算する”%”というのもあるそうですが
私は今のところ使うことはなさそうです。
今回は割り算も使ったので変数はdouble型で定義しました。
printfでの出力データの変換形式は”%lf”とすることで浮動小数点型で出力されます。
小数点第2位までの表示にするには、"%.2lf" or ”%0.2lf”とすればよいと思います。
**********************************************************************************************************
今日はここまで。
今回使用した関数のおさらい。
1.printf
2.scanf
まだ基礎のほんの一部ですね。
はぁ、基礎を身につけるまでが大変ですね。
まぁのんびりとお勉強していきますかー。