首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言实现读取文件的简单代码「建议收藏」

但此时该文件必须是存在的,否则将会出错。 (5)在打开一个文件,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。...fclose函数调用的一般形式是: fclose(文件指针); 例如: fclose(fp); 正常完成关闭文件操作,fclose函数返回值为0。如返回非零值则表示有错误发生。...int fscanf( FILE *stream, //文件指针 const char *format [,//字符数组 argument ]... ); fprintf() 失败返回...‘-1’ 参考资料: C语言中fscanf函数 其中fscanf函数的返回值为:参数列表中被成功赋值的参数个数;失败返回‘-1’ 示例: 示例代码: 有问题的代码?...size_t fwrite( const void *buffer, //指向要写入的数据的指针 size_t size, //要写入项目的大小,以字节为单位 size_t count

2.4K30

PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。...进入TELNET 命令输入模式后我们就可以直接编辑头文件来进行发送了 只需要注意:当编辑完请求头文件后要按两次回车键来发送。 ? 这是一次标准的HTTP请求与响应,是不是跟上节的HTTP文件关联了。...:主机名 $port:端口号 $errno:错误号(注意原型中的"&"一旦连接有错误,错误号将会被赋值给$errno) $errstr:错误字符串(一旦连接有错误,错误信息将会被赋值给$errstr)...我们可以分次用fwrite()方法写入头信息,也可以将头信息进行拼合一次写入。 fwrite($socket, "POST ".$path."...feof($socket)) { //当还有待读取内容 $info.= fgets($socket, 4096); //每次读取4096个字节内容,并用.连接符连接到$info

1.9K80
您找到你想要的搜索结果了吗?
是的
没有找到

【Socket】Socket相关概念及函数

但是,如果发送主机是小端字节序的,这16位被解释成0xe903,而不是1001。因此,发送主机把1001填写到发送缓冲区之前需要做字节的转换。...返回值: 成功:返回指向新创建的socket的文件描述符, 失败返回-1,错误号设置在errno中 补充: socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符...: 成功返回0 失败返回-1,错误号设置在errno中 服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接,因此服务器需要调用bind...listen()成功返回0,失败返回-1。...失败返回-1,设置errno 补充: 三次握手完成后,服务器调用accept()接受连接,如果服务器调用accept()还没有客户端的连接请求,就阻塞等待直到有客户端连接上来。

76610

socket rst_socket通信编程

= 130000 (lldb) 可以看到客户端发送第130001-135000个字节的时候程序在write方法处崩溃,是因为TCP套接字发送缓冲区的大小为131768字节,在发送前130000个字节的时候发送缓冲区还未满...当一个进程向某个已收到RST的套接字执行写操作,(此时写操作返回EPIPE错误)内核向该进程发送一个SIGPIPE信号,该信号的默认行为是终止进程,因此进程必须捕获它以免不情愿地被终止; 继续修改客户端程序如下...,此时read返回-1.而不再是0; 先运行服务端,再运行客户端,客户端打印信息如下: 发送成功 totalSize = 5000 读取失败 errno = 54 #defineECONNRESET...54/* Connection reset by peer */ 当一个进程向某个已收到RST的套接字执行读操作,(此时读操作返回ECONNRESET错误) 抓包信息如下: 上述情况会引发一个问题...如果对端TCP发送一个RST(对端主机崩溃并重新启动),那么该套接字变为可读,并且read返回-1,而errno中含有确切的错误码; 这个问题在select详解中讲述 情况三: 修改客户端程序如下,服务端不变

1.6K30

linux网络编程系列(三)--tcp和udp的基本函数调用过程及如何选择

:成功则返回0,失败返回-1,并设置errno,最常见的errno有以下两种: EACCES,被绑定的地址是受保护的地址,仅超级用户能够访问,比如如果绑定在1-1023端口的时候,就会报该错误。...入参:pBuf - 发送缓存 nCount - 需发送字节数 出参:实际发送字节数 ,如果发送失败返回负数 */ int CTcp::Send(int nFd, char* buf...nMicsec - socket超时值,单位:微妙,缺省:500000微妙 出参:实际发送字节数 ,如果发送失败返回负数 */ int CTcp::Send (const...sendto 函数也返回实际发送的数据字节长度或在出现发送错误时返回-1。...当recvfrom()返回,fromlen包含实际存入from中的数据字节数。Recvfrom()函数返回接收到的字节数或 当出现错误时返回-1,并置相应的errno

86120

Linux进程通信

返回值:成功返回0;失败返回-1;失败原因通常有三大原因:给定的信号无效(errno=EINVAL)、发送权限不够(errno=EPERM)、目标进程不存在(errno=ESRCH)。...返回值:成功返回Socket描述符;失败返回-1,可用errno查看出错的详细情况。...返回值:成功返回实际接受的字节数;失败返回-1,错误原因存于errno中;为0表示对端已经关闭。 recvfrom是阻塞函数,直到接收到信息或出错。...:仅本操作非阻塞 MSG_OOB:发送或接收带外数据 返回值:成功返回发送字节数;失败返回-1,相应地设定全局变量errno。...返回值:成功返回实际传送出去的字符数;失败返回-1,错误原因存于errno中。 sendto缺省是阻塞函数,直到发送完毕或出错

1.9K20

【C】C语言文件(包括:文件各种读写方式)「建议收藏」

文件的使用方式和含义如下表所示: 打开方式 含义 指定文件不存在 指定文件存在 r 只读方式打开文本文件 出错 正常打开 w 只写方式打开文本文件 建立新文件 文件原有内容丢失 a 追加方式打开文本文件...写数据块函数fwrite(),其调用的一般形式为: fwrite(buf,size,n,文件指针); fread()函数的功能是将buf中存放的size*n个字节的数据输出到文件指针所指向的文件中去。...函数的返回值为实际写入的数据项个数。 fread()和fwrite()函数一般适用于二进制文件,它们是按数据块的大小来处理输入/输出的。...读/写文件出错检测函数ferror() ferror()函数用于检查文件在使用各种读/写函数是否出错,其调用的一般格式为: ferror(文件指针); 该函数有返回值,如果没有错误,函数的返回值为0;...文件出错标志清除函数clearerr() clearerr()函数用于清除出错标志,其调用的一般格式为: clearerr(文件指针); 在ferror()函数值为非0,在调用此函数后,ferror(

1.2K20

recv函数说明返回

变成了CLOSE_WAIT之后,如果客户端再向服务端发送数据,然后recv服务端的反馈,就会造成recv返回0。...当应用程序调用recv函数, (1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据出现网络错误,那么recv函数返回SOCKET_ERROR, (2)如果s...如果recv在copy出错,那么它返回SOCKET_ERROR; 如果recv函数在等待协议接收数据网络中断了,那么它返回0。...默认 socket 是阻塞的 解阻塞与非阻塞recv返回值没有区分,都是 0 接收到数据大小, 特别: 返回值<0并且(errno == EINTR || errno...失败返回-1, errno被设为以下的某个值  EAGAIN:套接字已标记为非阻塞,而接收操作被阻塞或者接收超时  EBADF:sock不是有效的描述词  ECONNREFUSE:远程主机阻绝网络连接

4.8K10

【C语言】万字文件操作总结

,打开一个二进制文件 建立一个新的文件 “ab”(追加) 向一个二进制文件尾添加数据 出错 “r+”(读写) 为了读和写,打开一个文本文件 出错 “w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件...int 以适应特殊值 EOF,这表示失败.基于此,我们可以循环输出: #include #include int main() { FILE* pf = fopen...如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而 二进制形式输出,则在磁盘上只占4个字节 测试代码: #include int...而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束 **文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )**例如: fgetc...fgets 判断返回值是否为 NULL 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。例如: fread判断返回值是否小于实际要读的个数。

53120

【RL-TCPnet网络教程】第37章 RL-TCPnet之FTP客户端

第3个参数是要读取出来的数据大小,单位字节。   返回值,返回从文件中实际读出的字节数。 使用这个函数要注意以下问题: 设置读取函数,必须设置指定大小的字节数。...第3个参数是要写入的数据大小,单位字节返回值,返回实际写入文件的字节数。 使用这个函数要注意以下问题: 设置写函数,必须设置指定大小的字节数。...使用举例: U16 ftpc_fwrite (void *file, U8 *buf, U16 len) { /* 将buf中的len字节写入到文件中,如果返回数值(实际写入的字节数)不等于len...第3个参数是输出缓冲区大小,单位字节返回值,返回使用的输出缓冲区大小,单位字节。...返回值,返回__TRUE表示FTP客户端启动成功(注意,仅仅是客户端启动成功,并不是命令成功执行),返回__FALSE表示启动失败

1.5K20

从零开始的C++网络编程

失败的时候可以通过输出errno来详细查看具体错误类型。 关于errno 通常一个内核函数运行出错的时候,它会定义全局变量errno并赋值。 当我们引入errno.h头文件便可以使用这个变量。...若转换成功则返回指向返回结果的指针 若出错返回NULL 返回值 若成功则返回0,否则返回-1并置相应的errno。..., strerror(errno));     close(sockfd);        // 新增代码,当connect出错需要关闭套接字     return -1; } accept函数...返回值 当accept函数成功拿到一个已完成连接,其会返回该连接对应的客户端套接字描述符,用于后续的数据传输。 若发生错误则返回-1并置相应的errno。...返回值 在recv函数中: 若成功,则返回所读取到的字节数 否则返回-1,置errno 在send函数中: 若成功,则返回成功写入的字节数 事实上,当返回值与nbytes不等,也可以认为其出错

7.2K1812

对基于 TCP 的网络应用在 socket 非阻塞模式下 send 调用错误原因的深入分析

,经常出现调用send失败的情况,send函数在循环中被调用多次之后返回-1,设置errno为EAGAIN,导致程序进入错误处理分支,关闭socket以及记录日志(见图2)。...若socket被设置非阻塞属性,若缓冲区空间不足,则竟可能多的拷贝数据,send函数返回实际拷贝的字节数目,若空闲空间为0,则返回-1,并将errno设为EAGAIN。...,再次调用send发送数据,若socket为阻塞的,send会一直阻塞到发送缓冲区中有空闲空间;若socket为非阻塞,则会直接返回-1,并将errno设置为EAGAIN。...结论 当发送端流量远远大于接收端流量,虽然send函数在初期会返回,但是随着接收端缓冲区被填满,发送端的发送窗口会缩小为0,最终发送缓冲区也被填满,导致send函数返回-1,errno被设置为EAGAIN...为了不让此类情况发生,应当避免在对非阻塞socket调用send失败之后立即关闭socket;一般采用下列几种方法来处理数据发送: 1) 当socket为非阻塞模式下,send返回-1且errno

2.1K02

C语言基础系列: 预处理+文件操作

返回值 这不会失败,且不会设置外部变量 errno, 但是如果它检测到它的参数不是一个有效的流,则返回 -1,并设置 errno 为 EBADF。...返回值 当设置了与流关联的文件结束标识符,该函数返回一个非零值,否则返回零。 */ while (!...返回值: 如果设置了与流关联的错误标识符,该函数返回一个非零值,否则返回一个零值。 */ if (ferror(pfile)) { printf("文件读取失败!...返回值 这不会失败,且不会设置外部变量 errno, 但是如果它检测到它的参数不是一个有效的流,则返回 -1,并设置 errno 为 EBADF。...返回值 当设置了与流关联的文件结束标识符,该函数返回一个非零值,否则返回零。 */ while (!

1.5K50

如何实现异步执行

不支持多线程,使用异步调用的请求多个HTTP的方式达到了程序并行执行效果,但是注意的是请求的HTTP过多的话,会大大加大了系统的开销 因此对于耗时的操作适合异步执行,服务器接收到请求后,处理完客户端需要的数据就返回...fscokopen的问题和popen一样,并发非常多时会产生很多子进程,当达到apache的连接限制数,就会挂掉,我问题已经说了这种情况。...还有一种更简单的方式,可用于 Web 程序中,那就是用fsockopen()、fwrite() 来请求一个 URL 而无需等待返回,如果你在那个被请求的页面中做些事情就相当于异步了。...关键代码如下: $fp=fsockopen('localhost',80,$errno,$errstr,5); if(!...localhost',80,$errno,$errstr,5); if(!

1K30

socketpair原理_pair of shoes意思

如果函数成功,则返回0,创建好的套接字分别是sv[0]和sv[1];否则返回-1,错误码保存于errno中。 基本用法: 1. 这对套接字可以用于全双工通信,每一个套接字既可以读也可以写。...返回值:成功返回发送字节数,出错返回-1 recvmsg函数 定义函数 int recvmsg(int s, struct msghdr *msg, unsigned int flags); 函数说明...返回值:成功则返回接收到的字符数, 失败返回-1, 错误原因存于errno 中. send函数 定义函数:int send(int s, const void * msg, int len, unsigned...返回值:成功则返回实际传送出去的字符数, 失败返回-1....; //附属数据 size_t msg_controllen; //附属数据长度 int msg_flags; //接收消息的标志 }; 返回值:成功则返回实际传送出去的字符数, 失败返回

37410

1(UNIX基础)

C标准定义了两个函数,他们帮助打印出错信息 #include char *strerror(int errnum); //此函数将errnum(它通常就是errno值)映射为一个出错信息字符串...,并且返回此字符串的指针。...//perror函数基于errno当前值,在标准出错上产生一条出错信息,然后返回 #include void perror(const char* msg); //它首先输出由msg指向的字符串...,然后是一个冒号,一个空格,接着是对应于errno值的出错信息,最后是一个换行符 8 Print user ID and group ID #include "apue.h" Int main(void...在用户空间和内核空间,对文件操作都使用了缓冲区,例如用fwrite写文件,都是先将内容写到用户空间缓冲区,当用户空间缓冲区满或者写操作结束,才将用户缓冲区的内容写到内核缓冲区,同样的道理,当内核缓冲区满或写结束才将内核缓冲区内容写到文件对应的硬件媒介

83630

socketpair函数用法

如果函数成功,则返回0,创建好的套接字分别是sv[0]和sv[1];否则返回-1,错误码保存于errno中。 基本用法: 1. 这对套接字可以用于全双工通信,每一个套接字既可以读也可以写。...返回值:成功返回发送字节数,出错返回-1 recvmsg函数 定义函数 int recvmsg(int s, struct msghdr *msg, unsigned int flags); 函数说明...返回值:成功则返回接收到的字符数, 失败返回-1, 错误原因存于errno 中. send函数 定义函数:int send(int s, const void * msg, int len, unsigned...返回值:成功则返回实际传送出去的字符数, 失败返回-1. 错误原因存于errno....附属数据 size_t msg_controllen; //附属数据长度 int msg_flags; //接收消息的标志 }; 返回值:成功则返回实际传送出去的字符数, 失败返回

2K30
领券