首页 > 编程知识 正文

ioctl函数详解,sprintf打印字符串

时间:2023-05-06 05:09:52 阅读:138274 作者:321

printf函数是众所周知的,但是printf通常打印在标准输出上,在需要组织字符串和设置格式时sprintf很有用。

例如,在处理传感器数据时,可以将所获得的数据组合为特定格式并将其经由网络发送。

char buffer[100]={ 0 }; sprintf(buffer,' temperature: %f; humidity:%frn ',tempData,humiData; send(clientsocket,buffer,strlen ) ) buffer ); 此外,例如,在进行HTTP协议包封装的情况下,

char dataBuf[1024]={ 0 }; sprintf(databuf,' HTTP/1.1 200 SUCCESSrn ' ); send (客户端套接字,dataBuf,strlen(databuf ),0 ); sprintf(databuf,' Content-type:text/htmlrn ' ); send (客户端套接字,dataBuf,strlen(databuf ),0 ); sprintf(databuf,'rn ' ); send (客户端套接字,dataBuf,strlen(databuf ),0 ); do{fgets(databuf,1024,fs ); send (客户端套接字,dataBuf,strlen(databuf ),0 ); } while (! EOF(fs ); flose(fs ); sprintf语法:

intsprintf(char*string,char *format [,argument, ] );

string:是指向存储c字符串的字符数组的指针。 以format:格式设置的字符串argument:根据语法格式替换format的%标记语法相当简单,但需要注意的是。 sprintf从string[0]的位置开始按顺序输入format指向的字符串。 如果format所指字符串的长度大于字符串字符数组

char sendBuf[1024]={ 0 }; sprintf(sendbuf,' HTTP/1.1 404 NOT FOUNDrn ' ); send (客户端套接字,sendBuf,strlen(sendbuf ),0 ); 打印(thesentstring1is : % srn )、sendBuf ); sprintf(sendbuf,' Content-type:text/htmlrn ' ); send (客户端套接字,sendBuf,strlen(sendbuf ),0 ); printf (thesentstring2is : % srn ),sendBuf ); sprintf(sendbuf,'rn ' ); send (客户端套接字,sendBuf,strlen(sendbuf ),0 ); printf (thesentstring 3is : % srn ),sendBuf ); printf (the other char0is : % crn ),sendBuf[0]; printf (the other char1is : % crn ),sendBuf[1]; printf (the other char2is : % crn ',sendBuf[2] ); printf (the other char 3is : % crn ',sendBuf[3] ); printf (the other char4is : % crn ',sendBuf[4] ); printf (the other char5is : % crn ',sendBuf[5] ); printf (the other char6is : % crn ',sendBuf[6] ); 输出如下。

如上面的代码所示,最后使用sprintf将sendBuf字符串数组格式化为“rn”,然后每次打印一个sendBuf。

sendBuf[0]的值为r,因此不显示此打印

sendBuf[1]的值为n,因此无法看到此打印,但发生了换行行为

sendBuf[2]的值为“”,是字符串的最后一个“”,因此打印不可见

sendBuf[3]的值为t,这是最后一次格式化时保留的字符

sendBuf[4]的值为e,这是最后一种格式中剩下的字符

sendBuf[5]的值为n,这是最后一种格式中剩下的字符

sendBuf[6]的值为t,这是最后一次格式化时保留的字符

在上面的代码上下文中,sendBuf中最后一个格式化的字符对程序的执行没有任何影响。 使用send发送字符串时,发送器指定为strlen(sendBuf ),因此只有刚复制的新数据才会发送到sendbuf字符数组。 但是,如果将strlen更换为sizeof,程序功能将发生异常。

在使用sprintf之前,可能需要确保目标字符串数组是“干净的”,可以使用memset实现。

如memset(sendbuf,0,sizeof ) char ) * 1024 )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。