㈠ c语言 指针 字符串比较
运行效果:
写了一个,希望对你有帮助……
#include"stdio.h"
int
stringcmp(char
*str1,char
*str2)
{
while(*(str1++)==*(str2++));
return
*(str1-1)-*(str2-1);
}
int
main()
{
int
n;
char
str1[20],str2[20];
scanf("%d",&n);
while(n>0)
{
scanf("%s%s",str1,str2);
printf("%d",stringcmp(str1,str2));
}
return
0;
}
㈡ C语言指针读取文件内容比对
基本的,你的代码有语法错误 printf(“登录失败”);这里的符号不是英文符号
文本中保存的是两个字符串(空格隔开),你是想让第一个作为帐号,第二个为密码吗
fgets你指定了大小100,而且没有那么多字符能读取,所以它把整个文件中的所有字符都读取了,包含空格,gets()也一样。
所以你输入帐号加密码,中间用空格隔开才是正确的输入方式
然后我试了你的代码,得到了正确的结果,文本中保存的123456 789//注意如果后面有回车换行也可能造成你的错误
㈢ 怎样运用c语言指针变量比较两个字符串是否相等请修改
#include
int
bijiao(char
*p_1,char
*p_2,int
c);
int
main(void)
{
char
a[21];
char
b[21];
int
i,t,c;
printf("定义字符串的元素个数为\n");
scanf("%d",&c);
while(getchar()!='\n')
continue;//这一句用来消除\n的影响
printf("为字符串连续输入%d个\(少于20个\)字符回车结束\n",c);
for(i=0;i
{
scanf("%c",&a[i]);
}
while(getchar()!='\n')
continue;
printf("为字符串b连续输入%d个\(少于20个\)字符回车结束\n",c);
for(i=0;i
{
scanf("%c",&b[i]);
}
while(getchar()!='\n')
continue;
t=bijiao(a,b,c);
printf("%d",t);
if(t==1)
printf("字符串a和b相同");
else
printf("字符串a与b不同");
return
0;
}
int
bijiao(char
*p_1,char
*p_2,int
c)
{
int
i,x=1;
for(i=0;i
{
if(*(p_1+i)!=*(p_2+i))
{
x=0;
break;
}
}
return
x;
}改动较大,不知是不是还符合你的本意
㈣ C语言程序 用指针实现字符串比较函数strcmp
其实你这里主要问题是不能接收到两个输入的
字符串
。
你这里的接受
规则
是输入两个字符串并用
,
号分隔,比如:abc,abc
但是这里就有一个问题了!计算机怎么知道你输入的,号是你输入的第一个字符串的一个字符呢?还是你两个字符串的分隔?
所以当你输入abc,abc的时候计算识别你的第一个字符串是abc,abc
第二个字符串为\n
所以你这里得到的始终是1
至于解决的办法:
让计算机识别你的分隔
符号
那方法就很多了,比如
scanf("%s%s",a,b);输入的时候用空白符(
空格
,tab,回车键)相间隔
㈤ c语言字符数组如何比较
1、C语言中字符是使用char来定义的,使用关系运算符(>,<,=)即可对字符进行比较。在编译器中定义a、b两个字符型变量,并为其赋值,按照如图所示编写代码。
㈥ C语言指针变量比较
首先要 分清, 是在 声明中 还是在语句中。
声明中,例如:
int a=1, b=2;
int *p, *q; // 声明 *p 和 *q 是指针,用于指向 int 型数据。
p=&a; q=&b; //语句, p 和 q 是指针 指向的数据 的地址,p 指向 a, q 指向 b.
if ( p < q) printf("...."); // 语句, p 和 q 是 "地址", 地址大小的比较。即 &a,&b 的比较。
若是 if ( *p < *q) printf("...."); // 语句, *p 和 *q 是 "数值“ 的比较,即 a,b 的比较,现在 a=1,b=2。
即,语句中 有星号的是 数值,没星号的是地址。
你的2道题里,p,q 是 地址。是地址值的比较。
㈦ 关于C语言中的字符比较!!
1、定义一个char * 类型指针,指向字符串首字符首地址。
2、定义一个数组,数组里存放元素为字符串各个字符+'\0',其中'\0'为码0值,编译器会自动在字符串的末尾添加此值。
先看这两个"变量"分别是存在内存的哪个区域,(后面可知string1为常量)修改代码如下,打印这两个“变量”的内存地址,查看运行结果:
查看进程的内存分布情况,(详情请查看:RobotCode俱乐部:手撕虚拟内存(1)——字符串在虚拟内存中的段位置与/proc虚拟文件系统),string1内存首地址为0x80485a0,string2内存首地址为0bfaebfd8。如下图,可知这两种定义方式,一种位于只读区(0x8048000 < 0x80485a0 < 0x8049000),一种位于Stack区(0xbfacd000 < 0bfaebfd8 < 0xbfaee000)。可知,string1为常量(只读的,权限为r),在编译时就确定了。string2存放在栈上,运行时确定。这也决定了,定义string1的方式适用于定义字符串常量,string2方式适用于字符串变量可能需要被修改的情况。同时需要注意的是,未必定义在函数体里的“变量”都会分布在栈上,如这里的字符串常量,及static修饰的局部变量,他们都是分布在全局静态区,由编译器在编译时决定,而非函数运行时动态分配。另外全局静态区的变量生命期与整个进程的生命期相同,大于等于函数的生命期。
㈧ 请问在c语言中,怎样利用指针来比较多个字符串的大小
每个字符串用一个指针指向首地址 再设置一个计数器
在尾地址前指针移动计数器就加1
最后可以通过比价计数器的大小来比较字符串长度