stdio相关内容
给定一个标准输入输出 FILE * 指针,有没有通过,我可以发现名称的方法(打开)文件? 解决方案 看起来(从的这里),关于POSIX系统,你可以使用的fileno()来从一个FILE *的文件描述符,然后用FSTAT摆脱文件描述符的统计信息。 stat结构包含设备号和inode号。您可以检查文件系统的匹配索引节点哪些文件。这显然需要一定的时间进行全面的东西的文件系统。 究其原因,这
..
有没有libc的函数,会做同样的事情函数getline,而是将与所连接的插座,而不是一个FILE *流工作? 一个解决方法是调用fdopen套接字。什么是应该这样做时,应考虑的,关心的事情。是什么原因做/不这样做。 一个显而易见的理由这样做是调用函数getline和合作,但也许这是一个更好的主意来重写一些自定义的函数getline? 解决方案 当您调用读取插座上,那么它可以pmatur
..
我使用下面的C code,直到EOF时所采取的从用户的输入,但问题是这样的code未工作时,先取后输入终止。谁能告诉我什么是错这个code。先谢谢了。 浮动输入;的printf(“输入号码:”); scanf函数(“%F”,&安培;输入);而(!EOF) { 的printf(“输出:%F”,输入); 的printf(“输入号码:”); scanf函数(“%F”,&安培;输
..
我用 fmemopen 来创建一个变量 FILE * FID 将它传递给一个函数读取数据从打开的文件。 某处在该函数它使用以下code键找出文件的大小 fseek的(FID,0,SEEK_END); FILE_SIZE = FTELL(FID); 这工作得很好普通文件的情况下,但在按 fmemopen 创建的文件ID的情况下,我总是得到 FILE_SIZE = 8192 任何想法,为
..
的netcat 的一个很酷的功能是如何可以将任何命令行程序到服务器。例如,在Unix系统中,我们可以通过将日期做一个简单的日期服务器二进制的netcat ,以便它的标准输出通过套接字发送: 的netcat -l -p 2020年-e日期 然后我们就可以通过简单地发出命令来调用从另一台机器该服务:的netcat< IP-地址> 2020年 即使是一个外壳可以连接( / bin
..
我在读比较大的线路使用文本(最多128K)与fgets 。我看到过多的上下文切换的服务器上,使用 strace的我看到以下内容: 阅读(3,“9005 10218 00840023102015 201008”......,4096)= 4096 即。 与fgets 一次读取的4096字节块。有什么办法来控制大块与fgets 采用调用时,阅读()? 解决方案 setvbuf用来将是明显
..
升级到Ubuntu 13.10“莽撞”之后,现在锵给我的错误信息: 铛-Wall -std -Werror C99 = -ggdb -O0 5.1.c -o 5.1 1:在文件从5.1.c包括: /usr/include/stdio.h:33:11:致命错误:未找到'STDDEF.H'文件 #包括LT&;&STDDEF.H GT; ^ 产生1个错误。 使:*** [5.1]错
..
这是我的code的微小片段。 的#include<&stdio.h中GT; #包括LT&;&unistd.h中GT; #包括LT&;&stdlib.h中GT; #包括LT&;&time.h中GT; #包括LT&; SYS / stat.h> #包括LT&; SYS / wait.h> #包括LT&; SYS / types.h中>
..
我试图写一个猫克隆锻炼C,我有这样的code: 的#include<&stdio.h中GT; #定义BLOCK_SIZE 512 INT主(INT ARGC,为const char * argv的[]) { 如果(ARGC == 1){//拷贝标准输入到标准输出 字符缓冲区[BLOCK_SIZE] 而(!的feof(标准输入)){
..
用C我的温度转换程序保持输出0,当我试图把华氏转换为摄氏温度。摄氏度到华氏度转换似乎工作就好了。我也做了同样的事情为功能和部分,但我一直在第二次转换得到0。是否有人可以帮助我,或告诉我什么,我做错了什么? 的#include<&stdio.h中GT;//函数声明浮get_Celsius(浮点*摄氏度); //获取要转换的摄氏温度值。 无效to_Fahrenheit(浮点CEL); //摄氏
..
文件对象通常是由创建 打电话要么FOPEN或TMPFILE,这 既是一个参考返回之一 这些对象。 什么是结构体命名文件的属性,或者是与平台相关的? 解决方案 答案是它依赖于平台。至少在Linux上使用的glibc,文件其实从 _IO_FILE 的typedef这是在 libio.h : 结构_IO_FILE { INT _flags; / *高位字是_IO_MAGIC;剩
..
如果我尝试在Windows 7上运行在Cygwin下下面的简单code, 的#include<&stdio.h中GT; 诠释主(){ INT I1,I2,款项;的printf(“请输入第一个整数\\ n”); scanf函数(“%d个”,&安培; I1);的printf(“请输入第二个整数\\ n”); scanf函数(“%d个”,&安培; I2);总和= I1 + I2; 的prin
..
我想处理一个配置文件的内容。该配置文件可以是任何大小。我得到一个总线错误,程序挂起后,当我运行下面的code: FILE * FP; struct stat中ST; 字符*缓冲区;FP = FOPEN(CONFIG_FILE,“R”); 如果(FP == NULL){ //错误处理和清理不再赘述 }FSTAT(的fileno(FP),放大器; ST); FREAD(缓冲区的sizeof
..
在32位系统中,什么是 FTELL 回报,如果以二进制模式打开一个文件的当前位置指示器是过去2GB的意义呢?在 C99 标准,是这种的未定义行为的,因为 FTELL 必须返回一个长整型(最大值为 2 ** 31-1 )? 解决方案上长整型 长整型应该是至少有32位,但C99标准没有限制到32位。 C99标准确实提供了便利类型,如 int16_t &安培; int32_t 等映射到正确
..
我想读一回分隔的文件。全短语。 我试图把每个短语转换成字符串。 问题是,当我尝试读取文件 的fscanf(文件,“50年代%的\\ n”,字符串); 该字符串只包含一个字。当它用空格颠簸它停止读取字符串 解决方案 的fscanf可以修改为过去的空间。细节是有点复杂。下面是手册页说,关于什么样%[...] 匹配的非空子序列 从指定的一组字符 接受的字符;接下来的指针
..
与ungetc只保证采取推回的一个字节。在另一方面,我测试过它在Windows和Linux,它似乎有两个字节来工作。 是否有关于它实际上只占用一个字节的平台(例如任何当前的Unix系统)? 解决方案 C99标准(而在这之前的C89标准)毫不含糊地说: 推回一个字符的保证。如果与ungetc 函数被调用太多 在同流次无上插入读取或文件定位操作 流,该操作可能会失败。 所以,
..
这好像下面的调用做你所期望(关闭流,不允许任何进一步的输入 - 任何等待的流将返回错误输入),但是它保证在所有的编译器/平台正确? 关闭(的fileno(标准输入)); FCLOSE(标准输入); 解决方案 没有什么是保证跨每一个可能的操作系统是正确的。但是,调用FCLOSE(标准输入)将任何POSIX兼容的操作系统上工作,以及Windows操作系统,所以你应该打在目前普遍使用prett
..
在Perl中,我可以输入: $ | ++; 和任何打印到stdout会自动fflush()的。 有没有用C等效?换句话说,有没有一些方法,我可以告诉标准输入输出,自动fflush每次的printf(标准输出后),它的方式自动冲洗标准错误? 解决方案 尝试 setvbuf用来(标准输出,NULL,_IONBF,0)。它改变了标准输出来缓冲( _IONBF )模式。
..
我在C编程一个新的学生,我是编码一些简单的程序“Hello World”的风格。 在所有这些节目我把#包括LT&;&stdio.h中GT; 在顶部,但我不知道这是什么意思完全一样。我GOOGLE了它,我发现stdio.h中是具有命令为preprocessor一个文件,但什么是preprocessor?我想,当我写code,我编译它和我的code转变为一种形式,“电脑”可以读,然后我可以运行它。有
..
我工作的一些code,产生了大量的 忽略'为size_t fwrite的(常量无效*,为size_t,为size_t,FILE *)“,和属性warn_unused_result声明的返回值 警告当G ++编译,我想了解一下最好的编程模式实际记录和处理大量的独立顺序的 FWRITE S的返回值(也就是不一样的 FWRITE 在一个循环中) 让我们说,code看起来像这样的时刻: FWRIT
..