社区
新手乐园
帖子详情
c语言中的字符串是不是有最大的长度限制,如果有是多少哦?
SmileWangCn
2006-08-20 09:42:18
c语言中的字符串是不是有最大的长度限制,如果有是多少哦?
谢谢哦~!
...全文
3877
18
打赏
收藏
c语言中的字符串是不是有最大的长度限制,如果有是多少哦?
c语言中的字符串是不是有最大的长度限制,如果有是多少哦? 谢谢哦~!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ckp
2006-08-30
打赏
举报
回复
1
在VC中举一个最简单的例子(不知道其他的C编译器能否成立?):
#include "stdio.h"
int main(int argc, char* argv[])
{
char a[12] = "dfasfeg\n";
printf("%s\n", a);
return 0;
}
注意,VC编译生成的汇编代码:
; 9 : char a[12] = "dfasfeg\n";
00018 a1 00 00 00 00 mov eax, DWORD PTR ??_C@_08PLCJ@dfasfeg?6?$AA@
0001d 89 45 f4 mov DWORD PTR _a$[ebp], eax
00020 8b 0d 04 00 00
00 mov ecx, DWORD PTR ??_C@_08PLCJ@dfasfeg?6?$AA@+4
00026 89 4d f8 mov DWORD PTR _a$[ebp+4], ecx
00029 8a 15 08 00 00
00 mov dl, BYTE PTR ??_C@_08PLCJ@dfasfeg?6?$AA@+8
0002f 88 55 fc mov BYTE PTR _a$[ebp+8], dl
00032 33 c0 xor eax, eax
00034 66 89 45 fd mov WORD PTR _a$[ebp+9], ax
00038 88 45 ff mov BYTE PTR _a$[ebp+11], al
显然:
eax是指向字符串数组起始地址的指针;
ecx是字符串数组的大小;
后面的dl,ax和al可以暂时不用管它,和数组大小没有直接关系。
ecx是一个32位的寄存器,它的大小就限制了数组的长度。
2^32=4G,现在32位CPU的地址线宽度的上限正好是32位,也就是说,一个字符串数组的理论长度,可以达到32位CPU的最大寻址空间。
那么,在64位的C编译器中,字符串是否还是限制在2^32上,就要看VS2005如何定义了。
lann64
2006-08-29
打赏
举报
回复
把mp3读入c的字符串?
如果遇到0,字符串就结束了,当然后面就没有了。
二进制文件最好别用字符串处理。
cpcyfun
2006-08-29
打赏
举报
回复
............................
SmileWangCn
2006-08-29
打赏
举报
回复
我现在是把mp3文件读入一个字符串,就是3万多以后的东西就没有喔~!
jimmy23
2006-08-22
打赏
举报
回复
跟编译器没有关系,跟执行程序时内存分配有关系。没有那么长的连续内存程序就会出错。
一般程序执行时分配内存是没有问题的。
可以写个程序测试一下。
malloc();
看分配多大的内存会出错。
lei001
2006-08-21
打赏
举报
回复
取决于内存大小的
JavaerRobertLi
2006-08-21
打赏
举报
回复
会不会跟具体用的什么编译器有关呢?
Norris_Zhang
2006-08-21
打赏
举报
回复
新手:
如是连续内存有多大就有多长,那如果写好的程序换一个机器,没有那么长的连续内存怎么办?
飞哥
2006-08-21
打赏
举报
回复
最后一个貌似贴题
其他的好像都跑了
珍惜生命远离CPP
2006-08-21
打赏
举报
回复
Win32下32位的编译器的话,理论是4G,实际上 是差不多2G
zhenhaojia
2006-08-21
打赏
举报
回复
连续内存可以开多大,字符串就可以有多长。通常根操作系统相关。
自己malloc一下就ok了。
xyly30
2006-08-21
打赏
举报
回复
可以用大整数问题的思想来扩充呢。
DraculaW
2006-08-21
打赏
举报
回复
或許 char a[]最大應該不超過 一個long int的長度吧。。。。。
ningzhiyu
2006-08-20
打赏
举报
回复
signed char-128~127
unsigned char 0--255
这是两种数据变量的取值范围
ningzhiyu
2006-08-20
打赏
举报
回复
可以获得的连续内存有多大,字符串就可以多长……字符串只是由'\0'结束的连续内存
seas110
2006-08-20
打赏
举报
回复
字符??字符串?
字符串的话,可以很长,,,听说我们用的,都不会超过它的最长限制
mydaisy
2006-08-20
打赏
举报
回复
signed char-128~127
unsigned char 0--255
zhj007
2006-08-20
打赏
举报
回复
路过
同是新手
C语言
库函数源码(string.h)
里面包含大多数的
C语言
库函数源码,其
中
string.h
中
的源码最为多,希望能对大家有所帮助。
C语言
中
字符串
详解
C语言
中
字符串
详解
字符串
时是
C语言
中
非常重要的部分,我们从
字符串
的性质和
字符串
的创建、程序
中
字符串
的输入输出和
字符串
的操作来对
字符串
进行详细的解析。 什么是
字符串
?
C语言
本身没有内置的
字符串
类型,
字符串
本质上是一种特殊类型的数组,它的组成元素类型为char,除此之外不受制与数组
长度
的
限制
,以'\0'作为结束标志,作为
字符串
结束的标志。(\0作为一个特殊字符,它的ASCII值为0,但是它不是'0'字符,'0'字符的ASCII值为48。) 定义
字符串
1.
字符串
字面量(
字符串
常量)
字符串
字面量
c语言
限制
字符串
长度
范围,
C语言
中
“不受
限制
”的
字符串
函数总结
“不受
限制
的“
字符串
函数按《C和指针》
中
所说,那些常用的
字符串
函数都是“不是
限制
的”,就是说它们只能通过寻找
字符串
末尾的NULL来判断
字符串
的
长度
。strlenstrlen函数用于求解
字符串
长度
,其返回类型为unsigned int(即size_t)。strlen函数从起点开始,往后计数,遇到‘\0'停止。值得注意的是:strlen函数的返回类型。看如下代码:#include#includeusi...
(
C语言
)求
字符串
长度
的四种方法
用四种方法求
字符串
长度
C语言
字符串
长度
转载自:http://blog.csdn.net/kstrwind/article/details/8036555
C语言
字符串
长度
的计算是编程时常用到的,也是求职时必考的一项。
C语言
本身不
限制
字符串
的
长度
,因而程序必须扫描完整个
字符串
后才能确定
字符串
的
长度
。 在程序里,一般会用strlen()函数或sizeof来获取一个
字符串
的
长度
,但这2种方法获取的
字符串
的
长度
其实是不一样,我们用
新手乐园
33,323
社区成员
41,775
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章