正文
c语言中read函数的题 c语言read函数读取文件
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
c语言socket编程read()函数问题
write/read,是关于写特定的文件描述符使用的比较底层的系统调用,
sendto/recvfrom适用于用udp(数据包)方式的套接字中使用的,
其他的没见过,我是学linux编程的
Windows下的socket和Linux下的socket是不一样的,我没有查到sendmsg/recvmsg这个方法,上面的链接是一个类似的函数,它和send/recv 的区别是,这个函数可以发送socket控制信息,看API就知道。
另外我也没有看到有write/read函数。 sendto/recvfrom用于UDP链接,send/recv用于TCP链接。
你列举的其余函数,我都没找到。下面的API地址供楼主查询验证。
C中read()的用法?
read()函数的原型是int read(int fd,void *buf,int count);。它的功能是“从文件说明符fd相关联的文件中读取count个字符,并把这些字符存储到buf所指的缓冲区中。返回值是操作成功时所读到的字节数,在文件结束时可能少于count个字节;若返回值为-1则说明出错了,返回0则表示到达文件尾端。例:从文件ABC.txt中读取前100个字节存入数组buffer中——
#include "stdin.h"
#include "io.h"
#include "fcnt1.h"
int main(void){
int fd;
char buffer[100];
if((fd=open("ABC.txt",O_RDONLY))==-1){
printf("Can't open file.\n");
exit(-1);
}
if(read(fd,buffer,100)!=100)
printf("Possible read error!\n");
}
arm6410,linux,c语言,read函数返回-1,错误:bad address
1、可以事先检查一下传递给 read() 函数的 fd 是否合法,即在 'if ((nread = read(fd,myBuff2,strlen(myBuff2)))0)' 之前判断 if ( fd == NULL ) printf("出错啦!\n");
2、read()函数是文件操作函数,在c语言中很重要。
函数的返回值如下:
(1)如果成功,返回读取的字节数;
(2)如果出错,返回-1并设置errno;
(3)如果在调read函数之前已是文件末尾,则返回0
linux下c语言编程read()函数的问题
返回-1的时候,要根据错误码来判断原因,请看下面的函数说明:
表头文件 #includeunistd.h
定义函数 ssize_t read(int fd,void * buf ,size_t count);
函数说明 read()会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。
附加说明 如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count 作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文件读写位置则无法预期。
错误代码 EINTR 此调用被信号所中断。 EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。 EBADF 参数fd 非有效的文件描述词,或该文件已关闭。
C语言read函数
read内部是调_read, _read的返回值在msdn中有这样的描述
_read returns the number of bytes read, which might be less than count if there are fewer than count bytes left in the file or if the file was opened in text mode, in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character. Only the single linefeed character is counted in the return value. The replacement does not affect the file pointer.
注意这一段: in which case each carriage return–line feed (CR-LF) pair is replaced with a single linefeed character
就是说如果用text模式打开的话, 文件换行时可能在文本中有2个字符----换行和缩进(CR-LF), 而在return的时候系统是把它作为1个回车符号('\n')所返回的. 所以会导致这个情况
c语言考试填空题 求高手解答 【急】 100分!
1:当调用函数read从磁盘文件中读数据时,若函数的返回值为10,则表明读入了10个字符;若函数的返回值为0,则是();若函数的返回值为-1,则意味着(函数调用失败)。
2:设x是一个整数(16bit),若要通过x|y使x低8位置1,高8位不变,则y的八进制数是 ( c ).
3:在C语言中,文件的存取是以( 字节 )为单位的,这种文件被称作( 流 )文件。
4:
若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt ((double)n)*1.2/g+m后k的值是( 14 ).
5:下面程序运行结果是( abcdABCD )。
char s[20]=”abcd”;
char *ssp=s;
sp++;
puts(strcat(sp,”ABCD”));
6:
以下程序的运行结果是( 1 2 1 3 ).
struct n{
int x;
char c;
};
main()
struct n a={10,‘x’};
func(a);
printf(%d,%c,a.x,a.c);
}
func(struct n b)
{b.x=20;
b.c=’y’;
}
7:下面程序段的运行结果是( def\0ghi)。
har str[]=”abc\0def\0ghi”,*p=str;
printf(“%s”,p+5);
8:当运行以下程序时,从键盘输入 bookCR
book CR
(CR表示回车, 表示空格),则下面程序段运行的结果是( book )。
char a1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2)) printf(“*”):
else printf(“#”);
printf(“%d”,strlen(strcat(s1,s2)));
9:若有以下定义,则计算表达式y+=y-=m*=y后y值是(my)
10:请读程序片段:
int m=20,n=025;
else printf(“nnn\n”)
以上程序片段的输出结果是( ).
关于c语言中read函数的题和c语言read函数读取文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。