最近想不借用超級寶典第五版的封裝類自己完整寫一個著色器,但是一直讀取shader文件失敗,原因在於相對路徑的寫法錯誤。
codeblock 下如下寫即可讀取
#include#include char *ReadText(char *fn); int main() { char *ff; ff=ReadText("first.vert"); printf("%s\n",ff); return 0; } char *ReadText(char *fn) { FILE *fp; char *content = NULL; int count=0; if (fn != NULL) { fp = fopen(fn,"rt"); if (fp != NULL) { fseek(fp, 0, SEEK_END); // 重定位流(數據流/文件)上的文件內部位置指針 // int fseek(FILE *stream, long offset, int fromwhere); count = ftell(fp); // long ftell(FILE *stream); 返回當前文件指針,是int類型 rewind(fp); // void rewind(FILE *stream); 將文件內部的位置指針重新指向一個流(數據流/文件)的開頭 if (count > 0) { content = (char *)malloc(sizeof(char) * (count+1)); // extern void *malloc(unsigned int num_bytes); count = fread(content,sizeof(char),count,fp); // 從一個流中讀數據 //函數原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); // buffer // Storage location for data. // // size // Item size in bytes. // // count // Maximum number of items to be read. // // stream // Pointer to FILE structure. content[count] = '\0'; } fclose(fp); } } return content; }
ff=ReadText("first.vert");
當前目錄的寫法為
ff=ReadText("../first.vert");
#include#include char *ReadText(char *fn); int main() { char *ff; ff=ReadText("../first.vert"); printf("%s\n",ff); getchar(); return 0; } char *ReadText(char *fn) { FILE *fp; char *content = NULL; int count=0; if (fn != NULL) { fp = fopen(fn,"rt"); if (fp != NULL) { fseek(fp, 0, SEEK_END); // 重定位流(數據流/文件)上的文件內部位置指針 // int fseek(FILE *stream, long offset, int fromwhere); count = ftell(fp); // long ftell(FILE *stream); 返回當前文件指針,是int類型 rewind(fp); // void rewind(FILE *stream); 將文件內部的位置指針重新指向一個流(數據流/文件)的開頭 if (count > 0) { content = (char *)malloc(sizeof(char) * (count+1)); // extern void *malloc(unsigned int num_bytes); count = fread(content,sizeof(char),count,fp); // 從一個流中讀數據 //函數原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); // buffer // Storage location for data. // // size // Item size in bytes. // // count // Maximum number of items to be read. // // stream // Pointer to FILE structure. content[count] = '\0'; } fclose(fp); } } return content; }
../name1/*.txt
http://blog.csdn.net/sszgg2006/article/details/8447176 http://bbs.csdn.net/topics/80326375