Tag: fopen

简单的fopen和fprintf无法正常工作

我有一个简单的程序,它打开一个文件并将文本写入文件。 但是,fopen总是返回BadPtr如Microsoft Visual c++, 2010中的调试模式所示。 以下是VS C++, 2010显示的警告: mysample\mysample\main.c(6): warning C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234) : see declaration of ‘fopen’ 我认为警告是一个问题,并使用fopen_s ,但这也无法解决问题。 以下是我的代码: #include int main() { FILE *fp; fp=fopen(“c:\\hello.txt”,”w+”); if(fp==NULL) […]

C – 使用fopen打开函数内的文件

我正在使用Visual Studio 2005(C \ C ++)。 我将一个字符串作为char数组传递给函数。 我想打开作为参数传入的文件并使用它。 我知道我的代码在某种程度上有效,因为如果我将文件名硬编码为第一个参数,它就可以完美地工作。 我注意到如果我将值看作手表,该值包括字符串文字旁边的地址。 我已经尝试将文件名作为指针传递,但它然后抱怨使用__w64进行类型转换。 正如我之前所说,它可以用“filename.txt”代替fileName。 我很难过。 void read(char fileName[50],int destArray[MAX_R][MAX_C],int demSize[2]) { int rows=0; int cols=0; int row=0; int col=0; FILE * f = fopen(fileName,”r”); … 调用函数代码是: char in_filename[50]; int dem[MAX_R][MAX_C]; int dem_size[2]; get_user_input( in_filename); read(in_filename, dem, dem_size ); 在我为文件名添加的手表中显示正确的文本,因此数据将被传入。

FILE结尾*指针不等于写入数据的大小

非常简单地说,我有以下代码片段: FILE* test = fopen(“C:\\core.u”, “w”); printf(“Filepointer at: %d\n”, ftell(test)); fwrite(data, size, 1, test); printf(“Written: %d bytes.\n”, size); fseek(test, 0, SEEK_END); printf(“Filepointer is now at %d.\n”, ftell(test)); fclose(test); 它输出: Filepointer at: 0 Written: 73105 bytes. Filepointer is now at 74160. 这是为什么? 为什么写入的字节数与文件指针不匹配?

在二进制文件中读取和写入缓冲区

这是我现在的代码: #include #include “readwrite.h” int main () { FILE* pFile; char buffer[] = {‘x’ ,’y’,’z’,0}; pFile = fopen(“C:\\Test\\myfile.bin”,”wb”); if (pFile ){ fwrite(buffer,1,sizeof(buffer),pFile); printf(“The buffer looks like: %s”,buffer); } else printf(“Can’t open file”); fclose(pFile); getchar(); return 0; } 我正在尝试写一些validation我写入文件,然后从文件中读取并validation我从文件中读取。 这样做有多好? 我还需要找到一种方法将相同的东西写入2个不同的文件。 这有可能吗?

在追加模式下打开文件时,如何重新定位文件指针?

我试图将一些数据插入文件的中间。 我已在附加模式下打开文件: file = fopen(msg->header.filename, “ab”); 然后,我尝试在文件中寻找所需的偏移量,如下所示: fseek(file, msg->header.offset, SEEK_SET); 但是,当我尝试fwrite时: int bytesWritten = fwrite(msg->message, 1, msg->header.length, file); 所有数据都写入文件末尾而不是文件中间。 这是因为我正在使用追加模式吗? 我会在写模式下打开,但我需要保留文件中的现有内容。

什么样的错误将“错误”设置为非零? 为什么fopen()设置“errno”而fputc()没有?

什么样的库函数影响errno并将其设置为非零值会遇到什么样的错误? 在我的下面的程序中,我打算使用if(errno!=0)作为检查我使用的库函数是否正常运行的条件,这就是我找到的(参见下面的代码): 首先,我使用if(errno!=0)来测试文件是否已使用fopen()成功fopen() 。 如果我尝试打开一个不存在的文件,则将errno设置为非零(在我的情况下为2),并通过在每个阶段打印出errno的值来validation它。 但是如果我打开一个现有文件,那么errno的值保持为零,因为fopen()正确地打开了文件。 在这个问题上, if(errno!=0)充当我已经注释掉的if(pFile==NULL)的完美替代品。 如果文件成功打开,并且errno仍为0 ,则控件将移至第一个else块。 这是我发现关于errno行为的混淆。 这里,由于我已经在r(读)模式下打开文件并尝试使用fputc()写入它,我期望得到的写错误将errno为非零,就像它由fopen()设置时一样无法成功打开文件。 但是即使在使用fputc()写入失败之后, errno的值仍然为零。 (这可以通过在错误写入后打印errno值来validation)。 为什么会这样? 为什么一个函数fopen()设置errno时遇到I / O错误,而其他函数fputc()面对的写错误不影响errno ? 如果是这样,我们怎样才能可靠地使用errno作为错误指标? 我是否使用errno来测试fopen()是否成功运行,而不是“if(pFile == NULL)”不明智? 我将非常感谢您对此的分析答案。 #include #include int main () { FILE * pFile; printf(“%d\n”,errno); pFile = fopen(“D:\\decrypt.txt”,”r”); printf(“%d\n”,errno); // Prints 0 if fopen() successful,else 2 //if(pFile==NULL) perror(“Error opening file”); if (errno!=0) perror (“Error opening […]

C – 将输出写入文件

EDIT: void print(const int *v, const int size) { FILE *fpIn; fpIn = fopen(“char-array.txt”, “a”); int i; if (v != 0) { for (i = 0; i < size; i++) { printf("%d", (int)v[i]); fprintf(fpIn, "%d\n", (int)v[i]); } perm_count++; printf("\n"); } fclose(fpIn); } 我想这是一个相对简单的问题:) 基本上该程序使用置换算法,并将输出打印到控制台中的标准输出。 我还想通过fprintf将内容写入文件。 虽然我似乎无法让它工作。 它只是将垃圾字符打印到文本文件的第一行,仅此而已! 我将粘贴下面的代码,非常感谢帮助! 在print函数中可以找到写入文件代码。 谢谢, T. #include #include #include #include […]

在C中的另一个目录中打开文件

这是如何实现的? 我想用 pFile = fopen( file, “rb” ); 其中file是char,string或long,包含包含二进制文件本地路径的文本文本 C:\Documents and Settings\Supernovah\Desktop\Supernovah.bin 但当然崩溃了。 我也对如何以便携方式重复当前目录感兴趣。 windows.h有点难看,但如果我不能以便携的方式做到这一点。 就这样吧。 谢谢 :)

有没有办法在GCC中使用fopen_s()或者至少创建一个#define?

MSVC编译器表示不推荐使用fopen() ,并建议使用fopen_s() 。 有没有办法使用fopen_s()并仍然可移植? #define任何想法?

在C中使用带有相同标志的fopen打开文件

我无法理解这段代码的输出? int main() { FILE* f, *f1; f = fopen(“mytext”, “w”); if ((f1 = fopen(“mytext”, “w”)) == 0) printf(“unable\n”); fprintf(f, “hello\n”); fprintf(f1, “hi\n”); return 0; } OUTPUT是mytext文件中的hello 。 为什么不写? “无法”不打印到标准输出 。