c语言strncmpp可以比较整型数组吗

第4章 复合数据类型_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
108页1下载券32页免费39页免费2页免费21页1下载券 47页免费137页1下载券82页1下载券63页2下载券35页1下载券
喜欢此文档的还喜欢68页免费22页免费27页免费23页免费32页免费
第4章 复合数据类型|好
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:654.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢char数组 、char指针与字符串常量的比较,结果不一样!为什么?
[问题点数:100分,结帖人romanticlife]
char数组 、char指针与字符串常量的比较,结果不一样!为什么?
[问题点数:100分,结帖人romanticlife]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2009年5月 扩充话题大版内专家分月排行榜第三2009年2月 扩充话题大版内专家分月排行榜第三
2009年1月 C/C++大版内专家分月排行榜第二
2008年9月 C/C++大版内专家分月排行榜第二2008年4月 C/C++大版内专家分月排行榜第二2008年2月 C/C++大版内专家分月排行榜第二2007年7月 C/C++大版内专家分月排行榜第二
2011年10月 C/C++大版内专家分月排行榜第三2009年1月 C/C++大版内专家分月排行榜第三2008年10月 C/C++大版内专家分月排行榜第三2008年5月 C/C++大版内专家分月排行榜第三2007年6月 C/C++大版内专家分月排行榜第三2007年5月 C/C++大版内专家分月排行榜第三
2009年1月 C/C++大版内专家分月排行榜第二
2012年11月 Linux/Unix社区大版内专家分月排行榜第二2011年8月 Linux/Unix社区大版内专家分月排行榜第二2008年10月 C/C++大版内专家分月排行榜第二
2012年8月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。n13-guo-字符串_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
32页¥80.0027页免费3页免费19页免费1页免费 2页免费102页1下载券40页1下载券50页1下载券52页2下载券
喜欢此文档的还喜欢19页免费
n13-guo-字符串|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:416.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢一个选择题 大家帮帮忙吧 谢谢_百度知道
一个选择题 大家帮帮忙吧 谢谢
下属对C语言字符数组的描述中错误的是()A 字符数组可以存放字符串B 字符数组的字符串可以整体输入输出C 可以再赋值语句中通过赋值运算符“=”对字符数组整体赋值D 不可以用关系运算符对字符数组中字符串进行比较
提问者采纳
楼主给俺看完啊,不然俺白辛苦了。搞错了没?这基础都这么好……
选择C。c语言里数组是不可以用“=”整体付值的。字符串是一串连续的内存,在很多性子和数组都很像,但字符串有他的特别的地方,那就是可以使用字符串函数。b选项可以用gets和puts解释。d选项:字符在内存里里是ascll码存储的,因此可以比的。至于细节还有点说头,详情请看我自己总结的点字符串的东西,还不是很全,但一般情况够用了。但有一点,字符串函数是认得\0,这个串结束标志的。字符串处理函数:字符串函数可分为:字符串输出(puts),输入(gets),合并(stract),拷贝(strcpy),比较(strcmp),转换,复制,搜索(strchr)注意:这一章例题中的字符串可用指针代替。1 字符串输出函数puts:格式:puts(字符数组名);功能:把字符数组中的字符串输出到显示器。例:#include &stdio.h&main(){ char a[]=&made in china\r\nis well&; puts(a);}注意:puts()函数可以使用转义字符;
puts完全可以由printf函数取代,当要求按格式输出时通常用printf ;puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用格式为: puts(s); 其中s为字符串变量(字符串数组名或字符串指针)。 puts()函数的作用与语printf(&%s\n&, s)相同。 例4: main() { char s[20], *f; /*定义字符串数组和指针变量*/ strcpy(s, &Hello! Turbo C2.0&); /*字符串数组变量赋值*/ f=&Thank you&; /*字符串指针变量赋值*/ puts(s); puts(f); } 2 字符串输入函gets:格式:gets(字符数组名);功能:从标准输入设备键盘上输入一个字符串;该函数得到一个函数值为该字符数组的首地址;例:#include &stdio.h&main(){ char a[15]; printf(&in put a string:\r\n&); gets(a); puts(a);}注意:gets函数不以输入中的“空格”为结束标志,这与scanf函数不同;gets()函数 gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符 不属于这个字符串。其调用格式为: gets(s); 其中s为字符串变量(字符串数组名或字符串指针)。 gets(s)函数与scanf(&%s&, &s)相似, 但不完全相同, 使用scanf(&%s&, &s) 函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束, 空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符 串直到回车为止。 例5 main() { char s[20], *f; printf(&What's your name?\n&); gets(s); /*等待输入字符串直到回车结束*/ puts(s); /*将输入的字符串输出*/ puts(&How old are you?&); gets(f); puts(f); } 3 字符串连接函数strcat:格式:strcat(字符数组名1, 字符数组名2);功能:把字符数组2里字符串连接到字符数组1里字符串的后边并删除字符串1的串结束标志’\0’;返回值为数组1的首地址,因此数组1要有足够的长度;例:#include &stdio.h&#include &string.h&main(){ static char a[]=&my name is &; char b[15]; printf(&in put your name\r\n&); gets(b); strcat(a, b); puts(a);}4 字符串拷贝函数strcpy:格式:strcpy(字符数组名1, 字符数组名2);功能:把字符数组2中的字符串拷贝到字符数组1中;字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。例:#include &stdio.h&#include &string.h&main(){ char a[20]; char b[]=&made in china&; strcpy(a, b); puts(a);}注意:要求字符数组1要有足够的长度。5 字符串比较函数:注意:1、逐字对比判断字符的ASCII码值大小。 2、比较到某个字符判断出大小时立即结束。输出非零。 3、字符串相同时输出零strcmp:格式:strcmp(字符数组名1, 字符数组名2);功能:按照ASCII码的顺序比较两个数组中的字符串,并由函数返回值返回比较结果。字符串1=字符串2,返回值=0;字符串1&字符串2,返回值&0;字符串1&字符串2,返回值&0;本函数可以比较两个字符串常量,或比较数组和字符串常量。例:#include &stdio.h&#include &string.h&main(){ char a[20]; char b[]=&i love china&; printf(&in put s string\r\n&); gets(a); k=strcmp(a, b); if(k==0)
printf(&a=b\r\n&); if(k&0)
printf(&a&b\r\n&); if(k&0)
printf(&a&b\r\n&);}注意:不是比较字符串长度,而是比较ASCII码的大小,可用于姓名字母排序。strncmp:格式:strncmp(字符数组名1,字符数组名2,int length);功能:比较字符串1和字符串2的前length个字符;字符串1=字符串2,返回值=0;字符串1&字符串2,返回值&0;字符串1&字符串2,返回值&0;例:#include &stdio.h&#include &string.h&main(){ char *a=&I love china&; char *b=&I am happy&; k=strncmp(a, b, 6); if(k&0)
printf(&the string b is greater than string a\r\n&); if(k&0)printf(&the string b is less than string a\r\n&); if(k==0)printf&(& the string b is equal string a\r\n &)}strncmpi:格式:strncmp(字符数组名1,字符数组名2,int length);功能:比较字符串1和字符串2的前length个字符,不区分大小写;例:6 测字符串长度函数strlen:格式:strlen(字符数组名);功能:测字符串的实际长度(不含串结束标志’\0’,但转义字符算一个字符),并作为函数的返回值;例:#include &stdio.h&#include &string.h&main(){ char a[]=&i love china&; k=strlen(a); printf(&the length of string is:%d\r\n&, k);}注意;字符串不能用==或者!= 的只能用函数。7 字符搜索函数strchr:格式:strchr(字符数组名,待找的字符);功能:查找字符串中首次出现字符的位置,并返回出现字符位置的指针,若字符不存在则返回NULL;例:#include &stdio.h&#include &string.h&main(){ char a[30]; char *p, c='n'; strcpy(a, &I love china&); p=strchr(a, c);
printf(&the character %c is at position %d\r\n&, c, p-a); else
printf(&the character is not found:\r\n&);}注意:倒数第三句的(p-a)用法。
提问者评价
谢谢啊 写得真详细啊 那么 char a[]=&dsldfc!&;这样的就不是赋值语句啦???
其他类似问题
选择题的相关知识
其他3条回答
选c。必须用循环逐个复制数组中的元素。 A选项不解释了。B选项是错的。即便是print函数之类的。其内部也是进行循环输出的。对字符串的操作,本质上是没有整体操作的。到汇编级别一定使用循环实现的。D选项是正确的。两个字符串的比较需要用函数strcmp,或者自己用循环实现。没有char * = char*的形式。
选A楼主崩溃了。。。。
下属对C语言字符数组的描述中错误的是(C)A 字符数组可以存放字符串B 字符数组的字符串可以整体输入输出C 可以再赋值语句中通过赋值运算符“=”对字符数组整体赋值D 不可以用关系运算符对字符数组中字符串进行比较
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Matlab数据类型及转换
Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。
1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class)
函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127;
2、浮点:(single;double)
浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN
('single')分别返回双精度浮点和单精度浮点的最小值。
3、逻辑:(logical)
Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:
A = rand(5);
A(A&0.5)=0;
4、字符:(char)
Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’
实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。
例如,命令 name = ['abc' ; 'abcd']
将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ;
'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.
例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc
’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’);
deblank(name(1,:))。
此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组:
data= char(‘abc’,’abcd’)
length(data(1,:)) -&? 4
cdata=cellstr(data)
length(cdata{1}) -&?3
常用的字符操作函数
blanks(n) 返回n个空字符
deblank(s) 移除字符串尾部包含的空字符
(string) 将字符串作为命令执行
findstr(s1,s2) 搜索字符串
ischar(s) 判断是否字符串
isletter(s) 判断是否字母
lower(s) 转换小写
upper(s) 转换大写
strcmp(s1,s2) 比较字符串是否相同
strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同
strrep(s1,s2,s3) 将s1中的字符s2替换为s3
5、日期和时间
Matlab提供三种日期格式:日期字符串如’’,日期序列数如00年1月1日为1)以及日期向量如
0 0 0,依次为年月日时分秒。
常用的日期操作函数
datestr(d,f)
将日期数字转换为字符串
datenum(str,f) 将字符串转换为日期数字
datevec(str) 日期字符串转换向量
weekday(d) 计算星期数
eomday(yr,mth) 计算指定月份最后一天
calendar(str) 返回日历矩阵
clock 当前日期和时间的日期向量
date 当前日期字符串
now 当前日期和时间的序列数
结构是包含已命名“数据容器”或字段的数组。结构中的字段可以包含任何数据。
7、构建结构数组
(1)赋值方法
下面的赋值命令产生一个名为patient的结构数组,该数组包含三个字段:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220
在命令区内输入patient可以查看结构信息:
name: 'John Doe'
billing: 127
test: [3x3 double]
继续赋值可扩展该结构数组:
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172
赋值后结构数组变为[1 2]。
(2)构建结构数组:struct函数
函数基本形式为:strArray =
struct('field1',val1,'field2',val2, ...)
weather(1) = struct('temp',
72,'rainfall', 0.0);
weather(2) = struct('temp',
71,'rainfall', 0.1);
weather = repmat(struct('temp', 72, 'rainfall', 0.0), 1, 3);
weather = struct('temp', {68, 80, 72}, 'rainfall', {0.2, 0.4,
(3)访问结构数据
以下都是合法的结构数组访问命令:
mypatients = patient(1:2)
获取子结构数据
mypatients(1)
访问结构数据
patient(2).name
访问结构数据中的特定字段
patient(3).test(2,2)
访问结构数据中的特定字段(该字段为数组)
bills = [patient.billing]
访问多个结构
tests = {patient(1:2).test}
提取结构数据转换成单元格数组
使用结构字段的动态名称
通过structName.(expression_r_r_r)可以赋予结构字段名称并访问数据。例如字段名为expression_r_r_r、结构名为structName,访问其中第7行1至25列数据可以使用命令:structName.(expression_r_r_r)(7,1:25)。
例如,存在一个学生每周成绩数据结构数组,其数据通过以下方式建立:
testscores.wang.week(1:25) = ...
[95 89 76 82 79 92 94 92 89 81 75 93 ...
85 84 83 86 85 90 82 82 84 79 96 88 98];
testscores.chen.week(1:25) = ...
&&&&&&&&&&&&&&&&
[87 80 91 84 99 87 93 87 97 87 82 89 ...
&&&&&&&&&&&&&&&&&&
86 82 90 98 75 79 92 84 90 93 84 78 81];
即结构名为testscores,字段使用每个学生的名称命名,分别为wang和chen,每个学生下面包含名为week的成绩结构数组。
现计算给定结构名称、学生名称和起止周数的平均分数。
在命令窗口中输入 edit
avgscore.m,输入以下代码后保存文件:
function avg = avgscore(struct,student,
first, last)
avg = sum(struct.(student).week(first:last))/(last - first +
在命名窗口中输入:avgscore(testscores, 'chen',
7, 22) 计算学生陈从第7周到第22周的平均分数。
(4)添加和删除结构字段
命令[struct](index).(field)可添加或修改字段。如patient(2).ssn = '000-00-0000'
在结构patient中添加一个名为ssn的字段。
删除字段使用rmfield函数,如patient2 =
rmfield(patient, 'name') 删除name字段并产生新的结构。
8、单元格数组:(cell)
单元格数组提供了不同类型数据的存储机制,可以储存任意类型和任意纬度的数组。
访问单元格数组的规则和其他数组相同,区别在于需要使用花括号{}访问,例如A{2,5}访问单元格数组A中的第2行第5列单元格。
(1)构建单元格数组:赋值方法
使用花括号标识可直接创建单元格数组,如:
A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};
A(1,2) = {'abcd'};
A(2,1) = {3+7i};
A(2,2) = {-pi:pi/10:pi};
上述命令创建2*2的单元格数组A。继续添加单元格元素直接使用赋值如A(2,3)={5}即可,注意需使用花括号标识。简化的方法是结合使用花括号(单元格数组)和方括号()创建,如C
= {[1 2], [3 4]; [5 6], [7 8]};
(2)构建单元格数组:函数方法
Cell函数。如:
B = cell(2, 3);
B(1,3) = {1:3};
(3)访问数据
通过索引可直接访问单元格数组中的数据元素,例如:
N{1,1} = [1 2; 4 5];
N{1,2} = 'Name';
N{2,1} = 2-4i;
N{2,2} = 7;
c = N{1,2}
d = N{1,1}(2,2)
9、函数句柄
函数句柄是用于间接调用一个函数的Matlab值或数据类型。在调用其它函数时可以传递函数句柄,也可在数据结构中保存函数句柄备用。通过命令形式
fhandle = @functionname 可以创建函数句柄,例如 trigFun=@sin,或匿名函数sqr = @(x) x.^2;。
使用句柄调用函数的形式是 fhandle(arg1, arg2, ...,
argn) 或 fhandle()(无参数)。如:
trigFun(1)。例:
function x = plotFHandle(fhandle,
plot(data, fhandle(data))
plotFHandle(@sin, -pi:0.01:pi)
数据类型转换如C语言中的强制类型转换相似e.g.:
z=double(y);
&& Matlab中的图像数据类型转换
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1)
:把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*'
is not defined for values of class 'uint8'。
&图像数据类型转换函数
默认情况下,matlab将图像中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。
im2double():将图像数组转换成double精度类型
im2uint8():将图像数组转换成unit8类型
im2uint16():将图像数组转换成unit16类型
//////////////////////////////////////////////
%假设你的文件名在c盘 叫test.txt
fid=fopen('c:\test.txt');
data=textscan(fid,'%s','delimiter','\n');%把数据按行读入
fclose(fid);%关闭文件
data=data{1,1};
A=textscan(data{1},'%n','delimiter',' ');把第一行按空格为分割赋给A
B=textscan(data{2},'%n','delimiter',' ');同上B
C=textscan(data{3},'%n','delimiter',' ');同上C
A=A{1};B=B{1};C=C{1};把A,B,C由cell转成向量
%这样的话无论这三行分别有多少个数据都可以的。
截取字符串部分:str(2:length(str)-1))
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java byte数组比较 的文章

 

随机推荐