Q1:C语言程序 用指针实现字符串比较函数strcmp
其实你这里主要问题是不能接收到两个输入的字符串。
你这里的接受规则是输入两个字符串并用 , 号分隔,比如:abc,abc
但是这里就有一个问题了!计算机怎么知道你输入的,号是你输入的第一个字符串的一个字符呢?还是你两个字符串的分隔?
所以当你输入abc,abc的时候计算识别你的第一个字符串是abc,abc
第二个字符串为\n
所以你这里得到的始终是1、至于解决的办法:
让计算机识别你的分隔符号
那方法就很多了,比如 scanf("%s%s",a,b);输入的时候用空白符(空格,tab,回车键)相间隔
Q2:C语言,指针函数实现字符串的复制,连接,比较长度
现写的差不多 看好给分
字符串复制
char* string_copy(char* pdest, char* psource)
{
if(psource == NULL)
{
pdest = NULL;
return pdest;
}
while ((*pdest++=*psource++)!=\0);
return pdest;
}
字符串连接
char *string_strcat(char* s1, char* s2)
{
char *p = s1;
while(*p++);
--p;
while(*p++ = *s2++)
return s1;
}
字符串比较长度
int string_compare(char* s1, char* s2)
{
char *p1 =s1;
char *p2 = s2;
int i =0, j=0;
while(*p1++)
++i;
while(*p2++)
++j;
if (i > j) return 1;
if (i == j) return 0;
if (i < j) return -1;
}
Q3:C语言:用指针实现比较字符串的大小。。我写的有些问题·!!
代码没什么问题,不过粗心而已。是个最常见最容易犯的错误。
if(i==0) //
printf("数组b=数组a\n");
再者别用if,if if
用if, else if , else 就行了
Q4:C语言:用指针实现字符串大小的比较,应该怎样做呢?
字符串比较,可采用循环遍历字符串,用对应位置的指针所指向的字符进行比较,当相等时,循环,遇到不等或其中一个字符串结束时,结束循环,返回对应指针的对应的字符的差值,根据差值判断两个字符串的大小:
返回值大于0,则前串大,
返回值小于0,则前串小,
返回值等于0,两个字符串相等。
参考代码:#includeintstringcompare(char*a,char*b)
{
while(*a&&*a==*b)
{
a++;
b++;
}
return*a-*b;
}
intmain()
{
intret;
chara[10];
charb[10];
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
ret=stringcompare(a,b);
if(ret>0)
printf("a>b\n");
elseif(ret<0)
printf("aelse
printf("a=b\n");
system("pause");
return0;
}
运行结果:
请输入字符串a: abcde
请输入字符串b: acd
a
请输入字符串a: acd
请输入字符串b: abcde
a>b
请输入字符串a: abc
请输入字符串b: abc
a=b
WWw.Z★dYaN.cOm