step01-1
寫檔
```c
#include <stdio.h> int main() { FILE * fout = fopen("file.txt", "w+"); printf("Hello World\n"); fprintf(fout, "Hello World\n"); fclose(fout); }
```cstep01-2
讀檔
```c#include <stdio.h> int main() { FILE * fout = fopen("file2.txt", "w+"); fprintf(fout, "angle1 %d\n", 999); fclose(fout); char line[200]; int a; FILE * fin = fopen("file2.txt", "r"); fscanf(fin, "%s %d", line, &a); printf("讀到了字串:%s 及整數%d\n", line, a); fclose(fin); }
```cstep01-3
結合前面的寫檔、讀檔, 還有上週的 many TRT 範例```c#include <GL/glut.h> #include <stdio.h> ///為了 printf, fprintf, fopen, fclose .. float angle[20], oldX=0; int angleID=0;///0:第0個關節, 1:第1個關節, 2:第2個關節 FILE * fout = NULL; void myWrite(){ if(fout==NULL) fout = fopen("file.txt", "w+"); for(int i=0; i<20; i++){ fprintf(fout, "%.2f ", angle[i] ); } } void keyboard( unsigned char key, int x, int y){ if( key=='0' ) angleID=0;///預設是這一個 if( key=='1' ) angleID=1; if( key=='2' ) angleID=2; if( key=='3' ) angleID=3; }///用keyboard的按鍵,來決定等一下 motion()裡要改的 angle[i] 是哪一個 void mouse(int button, int state, int x, int y){///mouse按下去 oldX = x; } void motion(int x, int y){ angle[angleID] += (x-oldX); myWrite(); oldX = x; glutPostRedisplay(); }```cstep02-1
開新專案把寫檔的結果重新讀進來,按r鍵可以重播```cFILE * fout = NULL, * fin = NULL; void myWrite(){ if(fout==NULL) fout = fopen("file.txt", "w+"); for(int i=0; i<20; i++){ printf( "%.2f ", angle[i] ); fprintf(fout, "%.2f ", angle[i] ); } printf("\n"); fprintf(fout, "\n");///少了fclose,因為不想要才印一行,就結束。想寫多行一些 } void myRead(){ if(fout!=NULL) { fclose(fout); fout=NULL; }///還在讀的檔案要關掉 if(fin==NULL) fin = fopen("file.txt", "r"); for(int i=0; i<20; i++){ fscanf(fin, "%f", &angle[i] ); } glutPostRedisplay();///重畫畫面!! } void keyboard( unsigned char key, int x, int y){ if( key=='r' ){ myRead(); } if( key=='0' ) angleID=0;///預設是這一個 if( key=='1' ) angleID=1; if( key=='2' ) angleID=2; if( key=='3' ) angleID=3; }```cstep03-1
timer```c#include <GL/glut.h> #include <stdio.h> void timer(int t){///t的單位是ms ///1000代表1秒, 1500代表1.5秒 printf("鬧鐘%d, 我起床了\n", t);///起床做事情 printf("設定下一個鬧鐘\n"); glutTimerFunc( 2000, timer, t+1);///2秒後 //printf("設好鬧鐘,再回去睡\n"); } void display() { } int main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH); glutCreateWindow("week14 timer"); glutTimerFunc(3000, timer, 0);///3秒後,叫timer() glutDisplayFunc(display); glutMainLoop(); }```c
沒有留言:
張貼留言