strlen

2020寒假作业-2

六眼飞鱼酱① 提交于 2020-02-04 18:46:38
这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业2 这个作业的目标 1.继续完成编程题 2.新建一个github仓库,并把作业推送到该仓库。 3.发布博客 作业正文 https://www.cnblogs.com/ying-hua/p/12240862.html 其他参考文献 https://blog.csdn.net/xinjitmzy/article/details/78967204 http://xstarcd.github.io/wiki/windows/windows_cmd_summary_commands.html https://www.cnblogs.com/hugb/articles/7410325.html 一、编程题优化 此次优化取消了穷举法,使代码更加简短 将定义、计算和看看模块写成了函数 完整代码(v2.0) #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> struct Var{ //定义结构体,将汉字和英文变量一一对应 int engv; //英文变量 char chi[20]; //汉字变量 }; struct Var var[100]={0,""}; void error() //错误输出 { printf

sizeof和strlen在string类中的使用

只谈情不闲聊 提交于 2020-02-03 08:38:42
字符串的sizeof和strlen 考虑下面的问题: char a[] = "abcdef"; char b[20] = "abcdef"; string s = "abcdef"; cout<<strlen(a)<<endl; // 6,字符串长度 cout<<sizeof(a)<<endl; // 7,字符串容量 cout<<strlen(b)<<endl; // 6,字符串长度 cout<<sizeof(b)<<endl; // 20,字符串容量 cout<<sizeof(s)<<endl; // 32, 这里不代表字符串的长度,而是string类的大小,要想知道s字符串的长度,要用sizeof(s.c_str()) cout<<strlen(s)<<endl; // 错误!s不是一个字符指针。 a[1] = '\0'; cout<<strlen(a)<<endl; // 1 cout<<sizeof(a)<<endl; // 7,sizeof是恒定的 strlen是寻找从指定地址开始,到出现的第一个0之间的字符个数,他是在运行阶段执行的,而sizeof是得到数据的大小,在这里是得到字符串的容量 。所以对同一个对象而言,sizeof的值是恒定的。string是C++类型的字符串,他是一个类,所以 sizeof(s)表示的并不是字符串的长度,而是类string的大小

sizeof 和 strlen 计算数组大小和长度详解

廉价感情. 提交于 2020-02-03 08:28:26
sizeof 首先sizeof并非为一个函数,而是C语言中的一个关键字。 sizeof计算对象所占内存的大小,判断操作数的类型长度,以字节为单位; 指针在32位系统占4个字节,在64位系统占8个字节,本实例都在32位机器上操作。 sizeof 求大小看的仅仅是它的类型大小,而非其他。所以我们在计算时只要认清楚它的类型大小就行。 arr 和 &arr 的区别. int arr[10] = { 0 ); arr -> 本意为数组arr 的第一个元素的地址,但是在 sizeof (arr) 中被特殊化为求整个数组 arr 的大小(这是一个特例),所以 sizeof (arr) = 40; &arr -> 意思为整个数组的内存地址,所以 sizeof (&arr) = 4;(因为它是一个数组指针) arr + 1 和 &arr + 1 的区别 arr 为首元素的地址 *,arr + 1 -> 即加了一个int * (4)的大小. &arr 为数组的地址, 数组的地址 + 1 -> 即跳过了整个数组的大小,所以相当于加了 40; <1> char arr [ ] = { 'a' , 'b' , 'c' , 'd' } ; 1. printf ( "%d\n" , sizeof ( arr ) ) ; //4 2. printf ( "%d\n" , sizeof ( arr + 0 ) )

2020-02-02

梦想的初衷 提交于 2020-02-03 07:05:19
杭电2030:汉字统计 AC代码如下 #include #include using namespace std;//C++格式 int main () { int n; cin>>n; getchar();//消除回车键 int i; char a[1005]; while(n–)//表示有n组数据 { int count1=0;//计数器 int count; gets(a);//输入字符数组 for(i=0;i<strlen(a);i++)//strlen表示数组实际长度 { if(a[i]<0)//汉字在ASCII中表示负数两个字符 count1++;//统计汉字 } count=count1/2;//实际输出汉字个数要除以2 cout<<count<<endl; } return 0; } 笔者用的C++提交后AC,希望对大家有所帮助! 来源: CSDN 作者: littlexhh 链接: https://blog.csdn.net/weixin_45802966/article/details/104144949

2020-02-02

自作多情 提交于 2020-02-02 14:27:11
杭电2025:查找最大元素 #include<bits/stdc++.h> //万能头文件 using namespace std; int main() { char a[105],max; //定义字符数组 while(scanf("%s",a)!=EOF) //输入多组数据 { max=a[0]; //将首元素赋予max for(int i=0;i<strlen(a);i++)//strlen数组a的实际长度 { if(max<a[i]) //判断 max=a[i]; //一直找到最大,赋予max } for(int i=0;i<strlen(a);i++) { cout<<a[i]; //输出字符串 if(a[i]==max) //当找到最大字符 cout<<"(max)"; //后面后缀(max) } cout<<endl; } return 0; } 最后笔者先是用的C++提交,不过oj报错;改用G++之后AC;希望能对大家有所帮助! 来源: CSDN 作者: littlexhh 链接: https://blog.csdn.net/weixin_45802966/article/details/104141627

ACM基础(一)

走远了吗. 提交于 2020-02-02 03:25:05
比较大的数组应尽量声明在main函数外,否则程序可能无法运行。 C语言的数组并不是“一等公民”,而是“受歧视”的。例如,数组不能够进行赋值操作: 在程序3-1中,如果声明的是“int a[maxn],b[maxn]”,是不能赋值b=a的。如果要从数组a复 制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k)。当然,如果数组a和b 都是浮点型的,复制时要写成“memcpy(b,a,sizeof(double)*k)”。 另外需要注意的是, 使用memcpy函数要包含头文件string.h。如果需要把数组a全部复制到数组b中,可以写得简单 一些:memcpy(b,a,sizeof(a))。 “memset(a,0,sizeof(a))”的作用是把数组a清零,它也在string.h中定义。虽然也能 用for循环完成相同的任务,但是用memset又方便又快捷。 函数strlen(s)的作用是获取字符串s的实际长度。什么叫实际长度呢?字符数组s的大小是 20,但并不是所有空间都用上了。如果输入是“2357”,那么实际上s只保存了5个字符(不要 忘记了还有一个结束标记“\0”),后面15个字符是不确定的(还记得吗?变量在赋值之前是 不确定的)。strlen(s)返回的就是结束标记之前的字符个数。因此这个字符串中的各个字符 依次是s[0], s[1],…, s

C++ 字符串

∥☆過路亽.° 提交于 2020-02-01 02:57:44
C风格字符串   c风格的字符串: 存放在字符数组中,以'\0'结束 ;而c++主要以string类代替!对大多数应用来说,使用标准库string要比使用c风格字符串更安全,更高效。 举例: string str = "123";//C++风格 char str[4]="123";//C风格 c风格字符串的函数: char p[20],p1[20],p2[20]; strlen(p);//返回p的长度,空字符不计算在内! strcmp(p1,p2);//比较p1和p2的相等性,如果p1==p2,返回0;如果p1<p2,返回一个负值,如果p1>p2,返回一个正值; strcat(p1,p2);//将p2附加到p1之后,返回p1; strcpy(p1,p2);//将p2拷贝给p1,返回p1;   对于函数strlen(p),计算字符串的长度,其中p是指针。strlen()要计算字符串长度,必须知道哪里是结尾,因此使用'\0'表示结尾。传入此类函数的指针必须指向以空字符作为结束的数组: char ca[]={'C','+','+'};//不以空字符结束! cout<<strlen(ca)<<endl;//严重错误:ca没有以空字符结束,strlen函数可能沿着ca在内存中的位置不断向前寻找,直到遇到空字符才停下来。   char a1[] = "abc", 等价于char a1[] =

Sizeof与Strlen的区别与联系

两盒软妹~` 提交于 2020-02-01 01:52:18
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 sizeof还可以用函数做参数,比如: short f(); printf("%d\n", sizeof(f())); 输出的结果是sizeof(short),即2。 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; 6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。 7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。 8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小, 当适用一静态地空间数组, sizeof 归还全部数组的尺寸。 sizeof

strlen与sizeof区别(转载)

非 Y 不嫁゛ 提交于 2020-02-01 01:49:11
#include "stdio.h" #include "string.h" void main() { char aa[10]; printf("%d",strlen(aa)); printf("%d",sizeof(aa)); } 程序运行得到结果是strlen(aa)=15.sizeof(aa)=10;这是怎么回事呢?strlen是有效字符串的长度,不包含‘\0’,与初始化有关系,而sizeof与初不初始化没有关系。下面我们看看它们的区别吧(以下都是在网上查的) strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,知道遇到'\0'停止。 char aa[10];cout<<strlen(aa)<<endl; //结果是不定的 char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0 char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3 而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。 sizeof(aa) 返回10 int a[10]; sizeof(a) 返回40 1.sizeof操作符的结果类型是size_t

sizeof与strlen的区别

拜拜、爱过 提交于 2020-02-01 01:47:39
1.sizeof是操作符,strlen是函数 2.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型,该类型保证能容忍实现所建立的最大对象的字节大小。 3.大部分编译程序sizeof为编译时已计算大小,而strlen要在运行时计算,计算的是字符串的大小,不是类型占内存的大小。 4.sizeof可以用类型做参数,strlen只能用car *做参数,且需以“\0”为结尾。 5.sizeof如果是类名,必须加括号,如果是变量名,可以不加。 6计算字符串数组的长度上有区别,strlen为计算数组内大小,sizeof为计算数组分配大小,不受存储内容改变而改变。 7.如果要计算指针指向的字符串长度,则一定要用strlen,sizeof为4。 来源: https://www.cnblogs.com/sozze011/p/10852527.html