第一個程式(開檔案)
開一個空白檔案 / file / new / empty file
///week12-1_printf_fprintf.cpp
///要能寫檔案
#include <stdio.h>
int main()
{ /// 檔案指標 fout = 開檔案("檔名,"用什麼模式")
FILE * fout = fopen("file.txt","w");///w:write
printf("Hello World\n");
fprintf(fout,"Hello World在檔案裡\n");
}
第二個程式(讀入檔案)
開一個空白檔案 / file / new / empty file
#include <stdio.h>
int main()
{
FILE * fin =fopen("file.txt","r");///讀前一個範例
char line[100];
fscanf(fin,"%s",line);
printf("從file.txt讀到了:%s\n",line);
fscanf(fin,"%s",line);
printf("從file.txt讀到了:%s\n",line);
}
#include <stdio.h>
int main()
{
int a[10]={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int b[10]={};
FILE * fout = fopen("file3.txt","w");
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
fprintf(fout,"%d ",a[i]);
}
printf("\n");
fprintf(fout, "\n");
fclose(fout);
FILE * fin = fopen("file3.txt","r");
for(int i=0;i<10;i++)
{
fscanf(fin,"%d",&b[i]);
printf("b%d:%d ",i,b[i]);
}
fclose(fin);
}
開一個glut專案 / file / new / project / glut file
下載葉老師上課用軟體freeglut壓縮檔
將裡面的freeglut檔案複製到桌面
再將裡頭lib的libfreeglut.a複製並貼上
將複製的改檔名為libglut32.a
///要用keyboard mouse來控制茶壺,可存檔,可自己動
#include <stdio.h>
#include <GL/glut.h>
float teapotX=0,teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN)
{
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
}
display();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
第四個程式版本2(用滑鼠移動茶壺,留下檔案和移動座標,按keyboard會重複 執行滑鼠路徑)
///要用keyboard mouse來控制茶壺,可存檔,可自己動
#include <stdio.h>
#include <GL/glut.h>
FILE * fout = NULL;///一開始,檔案沒有開 NULL
FILE * fin = NULL;///要讀檔用的指標,一開始也是NULL
float teapotX=0,teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN)
{
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
if(fout==NULL) fout=fopen("file4.txt","w");///沒開檔就開檔
fprintf(fout,"%f %f\n",teapotX, teapotY);///要再存座標
}
display();
}
void keyboard(unsigned char key, int x, int y)
{
if(fin==NULL)///如果檔案還沒fopen(),就開它
{
fclose(fout);///要關掉前面mouse開的fout指標
fin = fopen("file4.txt","r");///沒開檔就開檔
}
fscanf(fin, "%f %f",&teapotX, &teapotY);///讀檔
display();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);///keyboard要開檔,讀檔
glutMainLoop();
}
(debug)共三步驟!
將bin裡頭的dull檔按複製到week12-4專案裡頭
最後要save everything才會該改檔案的改變!!!
freeglut / bin 的那路徑才會消失
第五個程式(尚未完成)
///要用keyboard mouse來控制茶壺,可存檔,可自己動
#include <stdio.h>
#include <GL/glut.h>
FILE * fout = NULL;///一開始,檔案沒有開 NULL
FILE * fin = NULL;///要讀檔用的指標,一開始也是NULL
float teapotX=0,teapotY=0;
float angle=0, angle2=0, angle3=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(teapotX,teapotY,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
if(state==GLUT_DOWN)
{
teapotX = (x-150)/150.0;
teapotY = (150-y)/150.0;
if(fout==NULL) fout=fopen("file4.txt","w");///沒開檔就開檔
fprintf(fout,"%f %f\n",teapotX, teapotY);///要再存座標
}
display();
}
void keyboard(unsigned char key, int x, int y)
{
if(fin==NULL)///如果檔案還沒fopen(),就開它
{
fclose(fout);///要關掉前面mouse開的fout指標
fin = fopen("file4.txt","r");///沒開檔就開檔
}
fscanf(fin, "%f %f",&teapotX, &teapotY);///讀檔
display();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week12");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);///keyboard要開檔,讀檔
glutMainLoop();
}
上面的步驟也要重複 改debug release 都要改
最後要save everything才會該改檔案的改變!!!
檔案名稱可以這樣改↓














沒有留言:
張貼留言