c语⾔输⼊变量字符串数组的长度,c语⾔数组长度问题?
onemoo
内容太长,我另写⼀个回答:对于不确定将要存储多少个字符的情形,你只能先定义⼀个⾜够长的数组,⽐如char s[256]; 在接受输⼊时不要⽤那种可以⼀次性存⼊⼀串字符的函数(如scanf("%s", s)),因为你不知道会有多少个字符被输⼊,⽤户输⼊的字符串可能会超过数组的⼤⼩,这会导致“溢出”,这是很典型的错误和安全隐患。应该⼀个字符⼀个字符地接受输⼊,⽐如⽤for循环getchar(),同时要记下已经输⼊的字符个数,如果超范围了就停⽌接受输⼊(并提⽰⽤户输⼊超长...之类的)。 最后别忘了在字符串尾加上'\0'('\0'是字符串结束的标志)输⼊完毕后,你可以⽤ strlen 之类的函数算出有多少个字符。或者你也可以⾃⼰算:从数组开头开始数,直到遇到'\0'。关于 sizeof:注意!它不是函数,它是个操作符。它会返回操作数占⽤内存的⼤⼩(以byte为单位,类型是size_t)sizeof有两种⽤法:sizeof 变量名 :得到的是这个变量占⽤内存的⼤⼩sizeof (类型名) :得到的是这个类型占⽤内存的⼤⼩sizeof后接的如果是个数组名,就会返回整个数组占⽤的内存⼤⼩。⽐如在你的代码中,sizeof s 就返回1,因为你的s只有⼀个char元素,⼀个char元素占⼀字节。如果 char s[256],那
么 sizeof s 就返回 256 * char占⽤字节数 = 256。 所以你不能⽤ sizeof s 来求得 s 中有多少个字符,s中也许只存了5个字符,但sizeof 得到的是整个 s 数组的⼤⼩。你只能⽤ strlen 之类的⽅法来得到实际字符数。P.S. 准确地说,sizeof的第⼀个⽤法中,sizeof后接的不仅是变量名,⽽是后接⼀个表达式(变量名也算表达式的⼀种)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论