注意strncpy的n
来源:互联网 发布:紫猫编程学院全套教程 编辑:程序博客网 时间:2024/06/06 16:48
前几天写了一个传输文件的程序,发现传输文本可以,换成图片接受端不能正常显示。后来发现是发送端每次读取文件内容和send之间的处理不恰当,导致在发送含有字符串结束符0时,发送内容不完整。写个程序验证,代码如下:
例一:strncpy
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <strings.h>#include <string.h>int main(){FILE *fp=NULL;char buffer1[5+1024+1]={0};char buffer2[1024+1]={0};size_t readsize=0;if( NULL==(fp=fopen("/home/yyellow/1.png", "r")) ){printf("fopen fial\n");exit(0);}while( !feof(fp) ){bzero(buffer2, 1024);readsize=fread(buffer2, 1, 1024, fp);sprintf(buffer1, "%c%04d", 'r', 1024);strncpy(buffer1+5, buffer2, readsize);if( ferror(fp) ){printf("fread wrong\n");exit(0);}printf("readsize:%lu\n", readsize);}return 0;}gdb调试结果:
当strncpy发现在n范围之内存在字符串结束标志0时,即使有n做约束,后面的非0字符也不会拷贝。可以使用memcpy代替。
用gdb调试过程中发现在打印字符串时:在栈中分配的,无论有没有字符串0,都会打印出来;在堆中分配的显示到字符串结束标志0为止。
阅读全文
1 0
- 注意strncpy的n
- 使用strncpy需要注意的地方
- strncpy(buff,src,n);
- 关于strncpy和strcat组合使用时,需注意的一点问题
- strncpy:复制源字符串的前n位,到另一个字符串中
- C语言strncpy()函数:复制字符串的前n个字符
- 关于strncpy的问题
- strncpy的源代码实现
- strncpy的实现方式
- strncpy函数的用法
- 关于strncpy的使用说明
- strncpy函数的用法
- strncpy()函数的num
- strncpy的用法
- strcpy,strncpy的区别
- strncpy的用法
- strncpy的实现
- strncpy函数的实现
- qt 时钟绘制
- 微信小程序遇到的常见问题(一)
- 线段树单点更新 ants
- Spring中InitializingBean接口使用理解
- apache2.4 tomcat7.0 整合
- 注意strncpy的n
- Chip Factory
- 【脚本语言系列】关于Python持久化shelve,你需要知道的事
- hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)
- SpringBoot 定时任务
- 在UI中显示Forecast list(十一)
- 使用Android广播碰到的问题
- Android 关于listView 显示不全的问题
- MongoDB的配置与复制集