首页 > 代码库 > 泊松表面重建源码分析
泊松表面重建源码分析
在泊松表面重建的源码中有如下一段代码:
1 #include <stdio.h> 2 #include <stdarg.h> 3 #include <string.h> 4 5 //将结果写入的目标文件 6 char* outputFile = "DumpOutPutTest.txt"; 7 //echoStdout控制是否通过控制台显示出来 8 int echoStdout = 1; 9 10 void DumpOutput(const char* format, ...)11 {12 if (outputFile)13 {14 FILE* fp = fopen(outputFile, "a");15 va_list args;16 va_start(args, format);17 vfprintf(fp, format, args);18 fclose(fp);19 va_end(args);20 }21 if (echoStdout)22 {23 va_list args;24 va_start(args, format);25 vprintf(format, args);26 va_end(args);27 }28 }29 void DumpOutput2(char* str, const char* format, ...)30 {31 if (outputFile)32 {33 FILE* fp = fopen(outputFile, "a");34 va_list args;35 va_start(args, format);36 vfprintf(fp, format, args);37 fclose(fp);38 va_end(args);39 }40 if (echoStdout)41 {42 va_list args;43 va_start(args, format);44 vprintf(format, args);45 va_end(args);46 }47 va_list args;48 va_start(args, format);49 vsprintf(str, format, args);50 va_end(args);51 if (str[strlen(str) - 1] == ‘\n‘) str[strlen(str) - 1] = 0;52 }53 int main()54 {55 int i;56 char **comments;57 int commentNum = 0;58 59 comments = new char*[10];60 61 for (i = 0; i< 5; i++) comments[i] = new char[1024];62 63 DumpOutput("DumpOutput: %9.1f\n", 12.345);64 DumpOutput2(comments[commentNum++], "#DumpOutput2: %6.1f (s), %5.1f (MB)\n", 2.344, 3.454);65 DumpOutput2(comments[commentNum++], "#DumpOutput2: %6.1f (s), %5.1f (MB)\n", 3.344, 4.454);66 DumpOutput2(comments[commentNum++], "#DumpOutput2: %6.1f (s), %5.1f (MB)\n", 4.344, 5.454);67 DumpOutput("DumpOutput: %9.1f\n", 23.565);68 69 }
其实通过这里我们就可以知道
char* outputFile = "DumpOutPutTest.txt";
是控制结果输出文件的。生成的文件和源码文件在同一路径下。如下图所示:
int echoStdout = 1;
是控制是否将结果输出到控制台。
if (str[strlen(str) - 1] == ‘\n‘) str[strlen(str) - 1] = 0;
这一句也很明显,只在DumpOutput2中出现了,根据意思就是判断最后一字符是否为换行如果是就用0来代替。但是在此之前已经将结果输入到文件并打印到屏幕了。到底为什么这个么写,再议?!
其实有人想知道代码中具体语句的含义,比如:
va_list args;va_start(args, format);vprintf(format, args);va_end(args);
其实我也看过,不过我现在觉得对于如此庞大的程序来说知道这部分的含义就可以了,具体什么意思,有兴趣的也可以进一步问问Google大神。
泊松表面重建源码分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。