用strcmp()函数可以用二维数组中的一行与一个一维数组比较吗?

例如a[2][3]="abc",b[3]="abc",怎么使用strcmp()函数

    char a[2][3] = {"12", "34"};
    char b[3] = "34";

    printf("%d", strcmp(a[1], b));

可以,但是你二维数组的赋值貌似不太对,也有可能你声明的是一个二维指针数组

但无论如何,你只要传递给strcmp两个字符串地址就可以,指针,数组都可以

另外一点,字符串的末尾都带有一个'\0'的结束符,所以对于b[3]来说只能赋给两个字符,如:

char b[3] = "ab"; //或者
char b[4] = "abc" ;

追问

  二维数组赋值的时候没太注意  

但是提示的错误是

 e[]是一个一位数组  a[][]是一个全局二维数组

追答

这就是我所说的,你尝试把一个char类型的数据传递给strcmp
你这第二个参数a[i]应该是个char类型的,如果像你说的是个二维数组,那你要检查一下了,看是不是赋值或者其他的地方有问题

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-17
#include <stdio.h>
#include <string.h>

int main()
{
int i;
int ii;

char a[3][3]={"abc","abc","abc"};

char b[3]="abc";

if(strcmp(a[2],b) == 1)
printf("\n大于");

if(strcmp(a[2],b) == -1)
printf("小于");

if(strcmp(a[2],b) == 0)
printf("\n相等");
}

C语言中strcmp可以比较二维数组吗
不行,strcmp只能比较2个字符串,即2个一维的字符数组。如果要比较2个2维的字符串数组,必须逐个字符串元素进行比对。include<stdio.h>#include<string.h>#define N 2void main(){ \/\/ char a[N][2]={1,2,3}; \/\/ char b[N][2]={1,2,3}; char a[n][2]={"abc", "he...

如何用C语言把二维数组里每一行的和全部放到一维数组当中去
所以如果在你上述的程序中,把二维数组改成一维数组的话,从理论上说,他只能输出第一个字符book。(当然,在上述程序中,这样改会出错,至于为什么,我能力有限,不会解释)所以,以上的a[][10]在内存中形象的表达出他的存放情况就是:book\\0\\0\\0\\0\\0\\0 basic\\0\\0\\0\\0\\0 (下略)你在定...

strcpy 与strcmp问题
如果你定义的s1,s2是二维数组就用strcpy,如果只是一维就用s1[i]=s2[i];关于第二个 if(strcmp(s1[i],s2[i]))这个是可以用的,但是你要想想用了这个就表示如果他们不相等要怎么怎么。按你的意思是要相等才跳出,那相等的话就要==0了。这个主要根据代码功能,if里面只有为真的时候才执行后面的...

c语言中怎样比较两个二维数组相同
把你的2个二维数组写进去就可以了; 如果strcmp的返回值等于0说明相等

strcmp函数的问题
strcmp将两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\\0'为止。可能在"VER"后面还有别的字符,可以用strncmp来比较指定长度的字符串:int strncmp ( const char * str1, const char * str2, size_t num );...

C语言中,对二维数组所有元素遍历一次,有几种循环方式?为什么?
1、行优先和列优先 有三种循环方式:FOR循环、DO-WHILE循环 、WHILE循环,字符串之间的比较,它有专门的字符串比较函数:strcmp函数。2、不能用运算关系符

对于二维数组,有行优先顺序和什么两种不同的存储方式
2、二维数组是按行优先存储的即在内存中存一个二维数组时先把数组中第一行的数组元素存完再接着存下一行的直到存完。3、二维数组在c++中存储,一般是按行存储的,就是将一行当作一维数组进行存储。4、一是在源码中就给的数值,如a(1,1)=1a(1,2)=0a(2,1)=0a(2,2)=1另外一种是通过...

...strcmp()、strcpy()是不是只能用于字符一维数组,不能用于字符二维数...
是的 如果要用于二维数组,需要取二维数组中的第一维。即 char a[100][100];gets(a[20]);这样可以。gets(a);理论上也能用,等效于a[0],但一些编译器会报错。 一般不这么写。

c语言strcmp问题
有两个函数,一个是strcat(),是用来拼接连个字符串的,题目中就是将字符数组a和b中的字符拼在一起,然后赋值给a数组,例如strcat("a","ab")的结果就是"aab"。而strcmp()是比较两个字符串。从第一位开始直到找到不相同的字符然后返回一个值,如果前者的ascii大就是1,相等就是0,后者ascii大...

有三个字符串,要求找出其中最大者
{ char str[3][20];\/\/定义二维数组(存放三个字符串)char string[20];\/\/定义一维数组 int i;for(i=0;i<3;i++){ gets(str[i]);\/\/每换行输入一个字符串 } if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);else strcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy...

相似回答