文件创建通过的fopen正常工作在Linux,但无法在Windows(MS VS 2010)

你好我试图通过执行在Microsoft Visual Studio旗舰版2010下面的代码生成.exe文件,我没有看到所创建的文件。

编译和在Linux中与海湾合作委员会执行时,此代码工作绝对没问题。

要重复我能够使用在Linux中创建的文件! 但在Windows中的.exe程序无法创建在命令提示符下输入的用户名的文件。

是否有人可以让我知道到哪里我就编译器的问题呢?

衷心感谢

// filename.cpp : Defines the entry point for the console application. #include "stdafx.h" //Please comment if code is to be executed in GCC #include <stdio.h> #include <stdlib.h> #include <memory.h> int main() { FILE *pFile; char cNotes_buffer[100]; memset(cNotes_buffer,0,100); printf("Please enter name of the LOG file - with tag MAX 100 characters!! \n"); if( fgets (cNotes_buffer , 100 , stdin) != NULL ) { fclose (stdin); } printf("name of file %s \n", cNotes_buffer); if ( ( pFile = fopen(cNotes_buffer,"a+") ) == NULL ) { printf("ERROR OPENING FILE FOR LOGGING \n"); exit(0); } return 0; }

--------------解决方案-------------

在所有的可能性,你会按您的输入文件名后回车。 所以, \n也进入cNotes_buffer 。 现在,您尝试创建一个文件,这个缓冲区作为文件名。 而且我不认为你可以创建文件名\n在里面。

做这样的事情,如果你按下回车键

cNotes_buffer[strlen(cNotes_buffer)-1]=0;

编辑 :换行可以存在于Linux的文件名 ​​,但没有那么在Windows这就解释了为什么你的文件在Linux,但无法在Windows创建得到。

尝试fclose(pFile) 未能关闭文件会导致奇怪的行为。

分类:C# 时间:2015-03-14 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.674 (s). 10 q(s)