2024年9月C语言中输入语句read(a,b,c)表示什么意思?C语言“read”错误

 更新时间:2024-10-12

  ⑴C语言中输入语句read(a,b,c)表示什么意思?C语言“read”错误

  ⑵C语言中输入语句read(a,b,c)表示什么意思

  ⑶ssize_tread(intfd,void*buf,size_tcount);read(a,b,c)就是从打开文件a中,读取c个字节,存到buf中返回实际读到的字节数。如果出错返回-

  ⑷C语言“read”错误

  ⑸for(j=;i《n;j++)这句话有问题外层循环,i的初始值是,从文件里读取的值比大的时候,这个循环会变成死循环,等到循环到j》=的时候,a数组就越界了,就会出错所以,这个循环,你可能是想写for(j=;j《n;j++)的,但是写成for(j=;i《n;j++)了

  ⑹C中read函数读取问题

  ⑺read函数里有这样一句话infile》》p-》gradeshuzu[i];,你的目的应该是要把文件中的数逐个存入到gradeshuzu数组中。但是实际上这句话并不能完成这个任务。你可以单步调试到这句话,程序就会出错。gradeshuzu是一个vector,因此不能直接像这样直接写入。应该采用类似这样的一段代码:vector《int》a;voidmain(){for(inti=;i《;i++)a.push_back(i);//a此时等同于一个int数组}因此你的程序应该这样修改一下:for(i=;i《size;i++){//infile》》p-》gradeshuzu[i];floattemp;infile》》temp;p-》gradeshuzu.push_back(temp);cout《《p-》gradeshuzu[i];}有关vector的使用可参见我的文章

  ⑻C中的read在什么情况下读到空文件会等待,什么时候读到空文件会直接返回错误

  ⑼如果是文件中的read(),那么,只要执行了这个函数,就会立即返回,不会等待的,不管文件是否为空,它都不会等待!如果是socket中的read(),那么,它会一直阻塞在那里,等待数据的接收,直到有数据来,或者超时才会返回!

  ⑽C中read(的用法

  ⑾read()函数的原型是intread(intfd,void*buf,intcount);。它的功能是“从文件说明符fd相关联的文件中读取count个字符,并把这些字符存储到buf所指的缓冲区中。返回值是操作成功时所读到的字节数,在文件结束时可能少于count个字节;若返回值为-则说明出错了,返回则表示到达文件尾端。例:从文件ABC.txt中读取前个字节存入数组buffer中——#include“stdin.h“#include“io.h“#include“ft.h“intmain(void){intfd;charbuffer;if((fd=open(“ABC.txt“,O_RDONLY))==-){printf(“Can’topenfile.

  ⑿“);exit(-);}if(read(fd,buffer,)!=)printf(“Possiblereaderror!

  ⒀C语言中的read和write怎么用

  ⒁纠正:read和write是UNIX或者一些类UNIX系统,比如LINUX系统中使用的,称为LINUX系统函数。这种函数只能在特定的操作系统下使用,可移植性差。fread和fwrite是C库函数。这种函数基本在任何操作系统都能使用,可移植性高。.基础知识介绍只介绍LINUX系统函数,常用的有creat,open,close,read,write,lseek,aess,一般用于文件编程.如何使用谈到如何使用就必须说到另一个知识,文件描述符(filedescription,是一个非负数。函数原型:intread(intfd,constvoid*buf,size_tlength)功能:从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓存区中,返回值为实际读取的字节数intwrite(intfd,constvoid*buf,size_tlength)功能:把length个字节从buf所指向的缓存区中写到件描述符fd所指向的文件中,返回值为实际写入的字节数例子:#defineLENGTH#defineBUFFES_SIZEintn,n;intfd,fd;intbuffer[BUFFES_SIZE];fd=open(“HEllo.txt“,O_RDWR|O_CREAT,O_IRUSE|O_IWUSR);fd=open(“HEllo.txt“,O_RDWR|O_CREAT,O_IRUSE|O_IWUSR);n=read(fd,buffer,LENGTH);n=write(fd,buffer,n);好了累死了,答案完全原创,希望对你有帮助

  ⒂C语言用read读取串口信息,按每字节读取和一次性读取一定长度效率上有区别吗

  ⒃肯定有区别的,而且相差还比较大。因为read是用户态程序,然后每read一次都对应一次系统调用(从用户态切换到内核态,再切回到用户态,其实耗时最多的就是状态切换。如果一次性读取个字节,那么就只有一次系统调用(两个状态切换,如果一次读一字节,需要读次,就有次系统调用(个状态切换。具体相差多大,跟实际的环境有关,测试的话要大量的数据才能看出来。

  ⒄read内部是调_read,_read的返回值在msdn中有这样的描述_readreturnsthenumberofbytesread,whichmightbelessthancountiftherearefewerthancountbytesleftinthefileorifthefilewasopenedintextmode,inwhichcaseeachcarriagereturn–linefeed(CR-LF)pairisreplacedwithasinglelinefeedcharacter.Onlythesinglelinefeedcharacteriscountedinthereturnvalue.Thereplacementdoesnotaffectthefilepointer.注意这一段:inwhichcaseeachcarriagereturn–linefeed(CR-LF)pairisreplacedwithasinglelinefeedcharacter就是说如果用text模式打开的话,文件换行时可能在文本中有个字符----换行和缩进(CR-LF),而在return的时候系统是把它作为个回车符号(’

  ⒅’)所返回的.所以会导致这个情况

  ⒆为什么C语言中read函数和write函数间要用lseek来调整读取顺序

  ⒇-由于程序在打开文件时文件操作指针位于文件起始位置,即偏移量-读取了个字符的内容给变量c,文件指针偏移量为-这时如果想将c值写到文件开始位置,则需要移动文件指针到文件开始-于是lseek就是移动文件当前指针的语句,它通知系统将文件指针移动到从文件开始位置(SEEK_SER)起的第字节-这个程序比较奇怪,明明打开文件时选用了_WRONLY参数,表明这个打开是只写的,但上来就读

  ⒈C语言write和read语句的基本用法

  ⒉表头文件:#include《unistd.h》

  ⒊定义函数:ssize_twrite(intfd,constvoid*buf,size_tcount);

  ⒋函数说明:write()会把指针buf所指的内存写入count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移动。

  ⒌返回值:如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-,错误代码存入errno中。

  ⒍EINTR此调用被信号所中断。

  ⒎EAGAIN当使用不可阻断I/O时(O_NONBLOCK,若无数据可读取则返回此值。

  ⒏EBADF参数fd非有效的文件描述词,或该文件已关闭。

  ⒐#include《stdlib.h》#include《unistd.h》#include《stdio.h》#include《string.h》#include《ftl.h》#include《errno.h》intmain(void){inthandle;charstring;intlength,res;/*Createafilenamed“TEST.$$$“inthecurrentdirectoryandwriteastringtoit.If“TEST.$$$“alreadyexists,itwillbeoverwritten.*/if((handle=open(“TEST.$$$“,O_WRONLY|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE))==-){printf(“Erroropeningfile.

  ⒑“);exit();}?strcpy(string,“Hello,world!

  ⒒“);length=strlen(string);?if((res=write(handle,string,length))!=length){printf(“Errorwritingtothefile.

  ⒓“);exit();}?printf(“Wrote%dbytestothefile.

  ⒔“,res);close(handle);return;}?structxfcb{charxfcb_flag;/*Containsxfftoindicatexfcb*/charxfcb_resv;/*ReservedforDOS*/charxfcb_attr;/*Searchattribute*/structfcbxfcb_fcb;/*Thestandardfcb*/};

  ⒕表头文件:#include《unistd.h》

  ⒖定义函数:ssize_tread(intfd,void*buf,size_tcount);

  ⒗函数说明:read()会把参数fd所指的文件传送count个字节到buf指针所指的内存中。若参数count为,则read为实际读取到的字节数,如果返回,表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动。

  ⒘附加说明:如果顺利read()会返回实际读到的字节数,最好能将返回值与参数count作比较,若返回的字节数比要求读取的字节数少,则有可能读到了文件尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-,错误代码存入errno中,而文件读写位置则无法预期。

  ⒙EINTR此调用被信号所中断。

  ⒚EAGAIN当使用不可阻断I/O时(O_NONBLOCK,若无数据可读取则返回此值。

  ⒛EBADF参数fd非有效的文件描述词,或该文件已关闭。

  #include#include#include#include#include#includeint?main(void){void?*buf;int?handle,?bytes;buf?=?malloc();/*Looks?for?a?file?in?the?current?directory?named?TEST.$$$?and?attemptsto?read??bytes?from?it.?To}if?((bytes?=?read(handle,?buf,?))?==?-)?{printf(“Read?Failed.

  “);exit();}else?{printf(“Read:?%d?bytes?read.

  “,?bytes);}return?;

您可能感兴趣的文章:

相关文章