标题:缓冲流大小问题
只看楼主
大飞玩编程
Rank: 2
等 级:论坛游民
帖 子:21
专家分:12
注 册:2012-7-24
结帖率:100%
已结贴  问题点数:3 回复次数:6 
缓冲流大小问题
sprintf(buffer,“%d %c %x”,a ,b,c)
为什么缓冲区buffer 的最小字节要14?
设整型字节为2。  
我怎么感觉是8? 两个整型字节+1字符+2空格+1NULL=8。
搜索更多相关主题的帖子: 大小 为什么 缓冲区 
2012-08-28 15:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:3 
程序代码:

#include <stdio.h>
#include <string.h>

int main(void)
{
    int a = 0;
    char b = 'a';
    int c = 0;
    char buffer[16] = {0};

    sprintf(buffer, "%d %c %x", a, b, c);
    printf("输出内容:%s", buffer);
    printf("\n长度是%d\n", strlen(buffer));
   
    return 0;
}



我感觉是6 5+1 测试代码如上
2012-08-28 15:55
大飞玩编程
Rank: 2
等 级:论坛游民
帖 子:21
专家分:12
注 册:2012-7-24
得分:0 
回复 2楼 zklhp
题目的原意是为保险起见buffer的最小缓冲区要多大。也就是要buffer要撑得下所有啊,a,b,c的可能的值。 另外%d,%c,%x中间有空格所以要加二、
答案是这样 说的是第一个值最大占6个字节 ,第二个最大占1个字节,第三个最大占4个字节 ,再加俩空格,和一‘\0’;一共14个字节;不明白为什么第一个值和第三个值要占6个和4个字节。 这是C和指针上的题目。P-322页
2012-08-28 16:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用大飞玩编程在2012-8-28 16:44:56的发言:

题目的原意是为保险起见buffer的最小缓冲区要多大。也就是要buffer要撑得下所有啊,a,b,c的可能的值。 另外%d,%c,%x中间有空格所以要加二、
答案是这样 说的是第一个值最大占6个字节 ,第二个最大占1个字节,第三个最大占4个字节 ,再加俩空格,和一‘\0’;一共14个字节;不明白为什么第一个值和第三个值要占6个和4个字节。 这是C和指针上的题目。P-322页

我明白你的意思了 你说的是保证安全的情况下的最小

输出内容:-2147483647 a ffffffff
长度是22

以上是32位环境下的结果 保证安全情况下要23字节

如果是16位的 应该是1+5+1+1+1+4+1等于多少自己算。。

为啥呢 复习一下变量的大小范围 对照上面的32位的结果一看你就知道了

这个书挺老的啊 讲的还是16位的事情。。
2012-08-28 16:54
大飞玩编程
Rank: 2
等 级:论坛游民
帖 子:21
专家分:12
注 册:2012-7-24
得分:0 
回复 4楼 zklhp
谢谢了
2012-08-28 19:26
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
这种缓冲区一般一开就会开个几千字节的。缓冲区太小了起不到应起的作用。
2012-08-28 21:43
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用TonyDeng在2012-8-28 21:47:06的发言:

如果一个串中本身就有重复字符呢?
如果两个串都没有一个有足够的空间容纳并集呢?
那个函数的原型又没有表示利用哪个字符串做返回。
问题多着呢。

貌似回复错了
2012-08-28 21:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-380238-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019723 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved