Tag: file io

fopen / fopen_s并写入文件

我在C中使用fopen将输出写入文本文件。 函数声明是( ARRAY_SIZE已经定义了ARRAY_SIZE ): void create_out_file(char file_name[],long double *z1){ FILE *out; int i; if((out = fopen(file_name, “w+”)) == NULL){ fprintf(stderr, “***> Open error on output file %s”, file_name); exit(-1); } for(i = 0; i < ARRAY_SIZE; i++) fprintf(out, "%.16Le\n", z1[i]); fclose(out); } 我的问题: 在使用MVS2008进行编译时,我收到警告:警告C4996:’fopen’:此函数或变量可能不安全。 考虑使用fopen_s代替。 我没有看到关于fopen_s更多信息,以便我可以更改我的代码。 有什么建议? 可以指示fprintf以所需的数字精度将数字写入文件吗? 如果我使用long double那么我认为我的答案是好的,直到小数点后15位。 我对吗?

读取/将结构写入二进制文件

我正在运行一个有3个结构的程序,我在二进制文件中读/写的操作如下: struct Medico { int Id_Doctor; int Estado; char Nombre[60]; char Clave_Acceso[20]; char Especialidad[40]; struct Medico *next; }; typedef struct Medico *Medicazos; typedef struct Medico Meds; Medicazos Nuevo; FILE *Archivaldo; char especialida[40], password[20]; char nombre_doc[60]; int estado_doc, id_doc; Archivaldo=fopen(“md.dat”, “rb”); fclose(Archivaldo); if((Archivaldo=fopen(“md.dat”, “rb”))==NULL) { printf(“No se pudo abrir el archivo de Medicos\n”); //couldnt open file […]

使用fgetc()逐行读取c文件

我就是这样做的,但我不确定这是首选的习语: FILE *fp = fopen(argv[0], “r”); // handle fopen() returning NULL while (!feof(fp)) { char buffer[80]; // statically allocated, may replace this later with some more sophisticated approach int num_chars = 0; for (int ch = fgetc(fp); ch != EOF && ch != ‘\n’; ch = fgetc()) { buffer[num_chars++] = ch; } // null-terminate the […]

从C中的文本文件中读取int值

我有一个包含以下三行的文本文件: 12 5 6 4 2 7 9 我可以使用fscanf函数读取前3个值并将它们存储在3个变量中。 但我无法阅读其余的内容。 我尝试使用fseek函数,但它只适用于二进制文件。 请帮我将所有值存储在整数变量中。

如何在iPhone上fopen()?

iPhone SDK文档声称fopen()是一种受支持的文件访问方法,但我无法让它返回FILE句柄。 我正在访问我的项目中包含的目录。 我试过fopen“filename”,“dir / filename”,“。/ filename”,“。/ dir / filename”,“/ dir / filename”都返回空指针。 有些人报告使用它没有任何问题,所以我相信它很简单!

fscanf()可以读取空格吗?

我已经有了一些使用fscanf()读取文本文件的代码,现在我需要对其进行修改,以便之前没有空格的字段需要允许空白。 文本文件基本上是以下forms: 标题:数据 标题:数据 等等… 这基本上是用fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data);解析的fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data); fgets(inputLine, 512, inputFile); sscanf(inputLine, “%*s %s”, &data); ,读取DATA字段并忽略标题,但现在一些数据字段需要允许空格。 我仍然需要在它之后立即忽略标题和空格,但是然后读取包括空格在内的其余行。 无论如何使用sscanf()函数执行此操作? 如果没有,我可以对代码进行哪些最小的改变来正确处理空白? 更新:我编辑了用fgets()+ sscanf()替换fscanf()的问题,这是我的代码实际使用的。 当我第一次写这个问题时,我并不认为它是相关的,这就是我将它简化为fscanf()的原因。

为什么这个C代码有问题?

在另一个问题上 , Jerry Coffin指出了以下内容: 它(可能)与你的问题并不真正相关,但是while (!feof(fileptr)){几乎是一个有保障的bug。 我想我会开始一个单独的问题,因为这个评论有些偏离主题。 有人可以向我解释一下吗? 这是我以前用C编写的第一个程序。

使用fseek回溯

使用fseek来回溯字符fscanf操作是否可靠? 例如,如果我只有fscanf-ed 10个字符,但我想回溯10个字符,我可以只是fseek(infile,-10,SEEK_CUR)? 对于大多数情况它可以工作,但我似乎有字符^ M的问题。 显然fseek将其注册为char但fscanf不会注册它,因此在我之前的示例中,包含^ M的10个char块将需要fseek(infile,-11,SEEK_CUR)。 fseek(infile,-10,SEEK_CUR)会使它缩短1个字符。 为什么会这样? 编辑:我在文本模式下使用fopen

比较两个文本文件 – C中的拼写检查程序

我正在编写一个拼写检查程序,它将用户的文本文件与字典进行比较,以查看他们输入的单词是否在字典中。 如果不是,则打印错误消息以告知用户特定单词是错误的。 我已尝试过以下代码的多种变体,但未获得所需的结果。 它是嵌套while循环中的东西,它将它抛出。 这段代码处于草案阶段我必须使其更具内存效率等并整理它。 我只是想让它先工作。 谢谢! 编辑:根据下面的提示稍微修改了代码。 它现在读取第一个单词并说它在字典中。 然后显示第二个单词,但字典扫描循环不运行,程序挂起。 我知道它嵌套的while循环导致问题我无法理解它! /*Spellcheck program*/ /*Author: */ #include #include #include int main(void) { /*Open files and test that they open*/ FILE *fp1; FILE *fp2; char fname[20]; char wordcheck[45];/*The longest word in the English Language is 45 letters long*/ char worddict[45]; char dummy; int i; int dictcount = […]

多个线程从同一个文件读取

我的平台是windows vista 32,带有visual c ++ express 2008。 例如: 如果我有一个包含4000个字节的文件,我可以同时从文件中读取4个线程吗? 并且每个线程访问文件的不同部分。 线程1读取0-999,线程2读取1000 – 2999等。 请用C语言举个例子。