相关疑难解决方法(0)

如何在C中获取文件大小?

可能重复:
如何确定C中文件的大小?

如何找出用C语言编写的应用程序打开的文件大小?我想知道大小,因为我想把加载文件的内容放入一个我分配的字符串中malloc().只是写作malloc(10000*sizeof(char));是恕我直言,一个坏主意.

c size file

364
推荐指数
7
解决办法
75万
查看次数

fopen弃用警告

Visual Studio 2005 C++编译器上,当我的代码使用fopen和此类调用时,我收到以下警告.

1>foo.cpp(5) : warning C4996: 'fopen' was declared deprecated
1>        c:\program files\microsoft visual studio 8\vc\include\stdio.h(234) : see declaration of 'fopen'
1>        Message: 'This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
Run Code Online (Sandbox Code Playgroud)

我该如何防止这种情况?

fopen deprecated visual-c++

66
推荐指数
5
解决办法
16万
查看次数

如何使用fopen()锁定文件?

我想知道在使用fopen(不是open)打开文件时是否有办法在Linux中锁定和解锁文件?

基于Stack Overflow问题C fopen vs open,fopen优先于open.

如何通过创建和删除锁定文件来实现我自己的文件锁(如果可能)?

c linux

18
推荐指数
3
解决办法
5万
查看次数

C++'strcpy'给出警告(C4996)

我收到此警告,但所有功能都正常工作.

这究竟意味着什么?

'strcpy': This function or variable may be unsafe. 
Consider using strcpy_s instead. To disable deprecation, 
use _CRT_SECURE_NO_WARNINGS. See online help for details.
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

15
推荐指数
5
解决办法
5万
查看次数

开放和开放功能

可能重复:
C fopen vs open

C语言中open()和fopen()有什么区别?

c

14
推荐指数
1
解决办法
2万
查看次数

PyPy文件附加模式

我有这样的代码:

f1 = open('file1', 'a')
f2 = open('file1', 'a')

f1.write('Test line 1\n')
f2.write('Test line 2\n')
f1.write('Test line 3\n')
f2.write('Test line 4\n')
Run Code Online (Sandbox Code Playgroud)

当使用标准Python 2.7解释器运行此代码时,该文件包含预期的四行.但是,当我在PyPy下运行此代码时,该文件只包含两行.

有人可以解释Python和PyPy在附加模式下处理文件时的区别吗?

更新:PyPy 2.3中不存在该问题.

python pypy

7
推荐指数
1
解决办法
303
查看次数

fopen和open之间有什么关系?

我正在为一个类的项目工作,我们得到一个包含以下代码的.c文件:

int fd = -1;
if (fd < 0)
{
  fd = open ("my_dev", O_RDWR);
  if (fd < 0)
  {
    perror ("open");
    return -1;
  }
...
Run Code Online (Sandbox Code Playgroud)

所以我理解它正在尝试打开一个具有读/写权限的文件"my_dev",然后在成功时返回文件描述符或者在失败时返回负值,但我不明白为什么它给了我"权限被拒绝"始终如一.我试着使用这段代码:

int des = open("my_dev", O_CREAT | O_RDWR, 0777);
...
close(des)
Run Code Online (Sandbox Code Playgroud)

打开/创建文件(这是在另一个块之前调用),但这不起作用,但如果我只是使用它:

FILE* file = fopen("my_dev","w+");
fprintf(file,str);
fclose(file);
Run Code Online (Sandbox Code Playgroud)

我可以写入文件,这意味着我有写权限.现在通常情况下,我只会使用fopen和fprintf来处理所有事情,但对于这个项目,我们必须使用教师的.c文件,它将尝试使用

 open()
Run Code Online (Sandbox Code Playgroud)

这将导致"权限被拒绝"错误,这反过来会搞砸我的代码.

我想我的问题是fopen和open是如何相互关联的?每个人似乎都能够背诵open是一个系统调用,而fopen是一个标准的lib函数,但我似乎无法找到一个明确的答案,我可以用fopen()创建一个可以通过open()打开的文件一个"权限被拒绝"的错误,或者我如何创建一个open()文件然后我可以写入,关闭并再次打开open().

简而言之,如何在C中创建一个我可以写入的文件,稍后用open(O_RDWR)打开?

对不起,如果这是一个小小的,我非常累.

PS:应该注意的是我正在大学计算机上编译和运行,因此权限可能是"怪异的"但是应该注意的是,如果我使用终端命令"dd"创建文件,open()将起作用,此外,我显然有一些写权限,因为我确实可以使用fopen和fprintf写入该文件

c permissions fopen file-descriptor read-write

5
推荐指数
1
解决办法
835
查看次数

便携式支持大文件

我在看

我仍然不知道如何以便携方式了解大于4 GB的文件大小.

值得注意的是,将一些答案纳入Cygwin的编译失败,而其他人则因Linux而失败.

c c++ large-files

4
推荐指数
1
解决办法
1091
查看次数

读写 C 系统调用是否使用缓冲区?

我正在与一位老师交谈,他告诉我读写系统调用正在使用缓冲区,因为系统规范中有一个变量控制您可以访问要读取/写入的设备的次数,并且当他等待在设备上写入时,系统使用缓冲区来存储数据。

我在另一篇 Stack Overflow 帖子(C fopen vs openfopen )上看到和函数的优点之一fwrite是这些函数使用缓冲区(这应该更快)。read我已经阅读了和sys call的手册页write,并且手册页没有讨论任何缓冲区。

我是不是误会了什么?read/ writeC 系统调用缓冲区如何工作?

c io system-calls read-write

3
推荐指数
1
解决办法
2205
查看次数

使用fgets读取C中的文件

我试图读取给定的文件然后标记它.我唯一的问题是fgets.文件打开收到没有错误.我在网站的其他地方已经看到了这个,但无论我如何设置它包括将fileLine设置为设定量(如char fileline [200])我得到分段错误.在此先感谢您的帮助.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

 int main(int argc, char *argv[]){
    char *fileName = "0";
    char *tokenize, *savePtr;
    struct Record *database= malloc(sizeof(database[0]));
    int recordNum =0;
    char *fileLine = malloc(sizeof(char *));//have replaced with fileline[200] still didnt work
    FILE *fd = open(fileName,O_RDWR);
    if(fd< 0){
        perror("ERROR OPENING FILE");
    }

    while(fgets(fileLine,200,fd) !=NULL){
        printf("%s\n", fileLine);
        tokenize = strtok_r(fileLine,",",&savePtr);
        while(tokenize != NULL){
         //TOKENIZING into a struct
        }
}
Run Code Online (Sandbox Code Playgroud)

c fgets

2
推荐指数
1
解决办法
1828
查看次数

POSIX 中的 fopen 与 open(C 语言)

这个问题问完之后,一个疑问就来了:

一旦fopen()比open()更快(至少对于顺序写入/就绪操作),前者是一个库,后者是一个系统调用,那么fopen()在 POSIX 兼容操作系统中执行什么系统调用?

c io fopen posix

2
推荐指数
1
解决办法
927
查看次数

如何检索CreateFile结果的FILE*?

见标题.

如何实现与此问题相反的方法:如何从fopen FILE结构中获取文件HANDLE?

我创建了句柄

      HANDLE h = CreateFile(name,
                            GENERIC_WRITE,
                            0,
                            NULL,
                            OPEN_ALWAYS,
                            FILE_ATTRIBUTE_NORMAL,
                            NULL);
Run Code Online (Sandbox Code Playgroud)

然后尝试使用它写一些数据fputs.

fputs线路上的呼叫失败

_VALIDATE_STREAM_ANSI_RETURN(stream, EINVAL, EOF);
Run Code Online (Sandbox Code Playgroud)

stream我从哪里获得的手柄CreateFile.


我这样做的原因是我使用了一个使用FILE*句柄的外部库,我没有打开普通文件(直到现在),而是试图写入管道.并且不能更改外部库.

c winapi visual-studio

1
推荐指数
1
解决办法
1139
查看次数