错误使用strlen() 出现的结果……

把一个字符串的第一个单词写到另一个数组中   写出程序如下

结果有点出乎意料重新输入一个字符串,结果也是出乎意料我已经想到这个函数是遇空字符才停止的,但几次输入后为什么会有差异呢?
又试了几次不同的长度字符串,结果发现第一个空格出现在第九个字符之后就会显示正确,出现在第9之前就会错误!随后我又试了下关键字sizeof() 它无论输入多长字符串都是固定值8;

函数的指针或数组形式参量并不传递指针指向的数据所占用的内存,仅仅只传递一个地址

时间: 2024-10-05 16:55:29

错误使用strlen() 出现的结果……的相关文章

sizeof求字节以及与strlen的区别

例子一: /* *根据以下条件进行计算: *1. 结构体的大小等于结构体内最大成员大小的整数倍 *2. 结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,比如说double型成员相对于结构体的首地址的地址 *偏移量应该是8的倍数. */ #include<iostream> #include<cstdlib> using namespace std; class AA { int a; short b; int c; char d; }; class BB {

strlen函数细节

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值. 原型: extern unsigned int strlen(char *s); 在Visual C++ 6.0中,原型为size_tstrlen(const char *string); ,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned

说明sizeof和strlen之间的区别。

解析:由以下几个例子我们说明sizeof和strlen之间的区别.第1个例子: sizeof(ss)结果为4,ss是指向字符串常量的字符指针.sizeof(*ss)结果为1,*ss是第一个字符.第2个例子: sizeof(ss)结果为11,ss是数组,计算到"\0"位置,因此是(10+1).sizeof(*ss)结果为1,*ss是第一个字符.第3个例子: sizeof(ss)结果为100,ss表示在内存中预分配的大小,100×1.strlen(ss)结果为10,它的内部实现是用一个循环

C语言中sizeof与strlen区别

C语言中sizeof 与strlen 区别 一.本质区别 sizeof 和strlen 有本质上的区别.sizeof 是C 语言的一种单目运算符,如++.--等,并不是函数,sizeof 的优先级为2 级,比/.% 等3 级运算符优先级高,sizeof 以字节的形式给出操作数的存储空间的大小.而 strlen 是一个函数,是由 C 语言 的标准库提供的.strlen 计算的  是字符串的长度. 二.使用区别 1.sizeof sizeof 的操作数可以是数据类型.函数.变量,表达式使用方式为:

【转载】strlen与sizeof区别

自己小结: sizeof使用时,若是数组变量,则是数组变量占的大小 char a[10]; sizeof(a)=10 若是指针,则为指针大小,数组变量作为函数参数传递时,会退化成指针,且函数内是不知道原数组大小的 char *s="abcdddddd"; sizeof(s) = 4 指针 void f(char a[]) {sizeof(a) = 4 指针} 下面转载自百度百科 ------------------------------------------------------

sizeof strlen 详解

详解sizeof和strlen 1 说明sizeof和strlen之间的区别 (1)sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsinged int类型.该类型保证     能容纳实现所建立的最大对象的字节大小. (2)sizeof是算符,strlen是函数. (3)sizeof可以用类型作参数,sizeof还可以用函数作参数. strlen只能用char*作参数,且必须是以'\0'结尾的.比如: short f(); printf("%d\n",si

语言总结&mdash;C/C++

参考<程序员面试宝典> 1. 基本概念 1.1 赋值语句 例1. 按位与操作,例如:a=3,b=3,a&b值等于 0011 & 0011 结果还是0011,那么值还是3: a=4,b=3,a|b:按位或操作, 0100 | 0011 结果是0111,输出的值为7:a||b, a和b进行或运算,只要两者有一个为真则结果即为1. 例2. while(x) { count++; x=x&(x-1);} 此循环用来求输入值x转化为二进制后1的个数.eg:9(1001)&

统计字符1的个数

下面的程序意图在于统计字符串中字符1的个数,可惜有瑕疵: #include <stdio.h> #define maxn 10000000+10 int main() { char s[maxn]; scanf("%s", s); int tot = 0; for(int i = 0; i < strlen(s); i++) if(s[i] == 1) tot ++; printf("%d\n", tot); return 0; } 该程序至少有3

C语言指针与数组易混淆知识点(一)

一指针与数组 二指针与函数 三指针数组数组指针指向指针的指针 四程序陷阱 一.指针与数组 指针:指针本身也是一个变量,它的内容是指向的内容的地址.指针同样有类型的区分,char 的指针只能指向char型数据,int 指针指向int型数据.但是指针所占内存单元的大小(即其内容)是跟操作系统的地址位数有关,比如32位地址的系统,那么指针所占的内存单元就是4个字节,16位就是2个字节,因此,指针的类型只是限定它所指向的变量的类型,其内容所占的单元大小是与操作系统的地址位数相关,与变量类型无关. 在32