关于指针与数组的一个程序

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:17:23
题目:函数void comp(char *s1, *s2)的功能是比较字符串s1和字符串s2,若字符串s1大于字符串s2,则函数返回1,若字符串s1等于字符串s2,则函数返回0,若字符串s1小于字符串s2,则函数返回-1。(要求:不能调用库函数strcmp)
我编的程序(找不到程序问题在哪里,请高手指教):
#include<stdio.h>
#define N 100
void comp(char *s1, *s2)
{
int i;
for(;s1[i]!='\0',s2[i]!='\0';i++)
{
if(s1[i]>s2[i])
{printf("1");
goto loop;}
else if(s1[i]<s2[i])
{printf("-1");
goto loop;}
}
printf("0");
loop:while(1);

}

void main()
{
char s1[N]="abcdef";
char s2[N]="abcedf";
comp(s1,s2);
}

#include<stdio.h>
#define N 100
void comp(char *s1, char*s2)
{
int i;
for(i=0;s1[i]!='\0'||s2[i]!='\0';i++)
{
if(s1[i]>s2[i])
{
printf("1\n");

return;
}
else if(s1[i]<s2[i])
{
printf("-1\n");

return;
}
}

printf("0/n");

}

void main()
{
char s1[N]="abcdef";
char s2[N]="abcde";
comp(s1,s2);
}

基本上 不用 goto 了

问题很多:
1、int i;没有赋初值
2、s1[i]!='\0',s2[i]!='\0' 不行
3、char *s1, *s2 这样的申明不行
int comp(char *s1, char *s2)
{
int i=0;
while(true)
{
if(s1[i]=='\0'&&s2[i]=='\0')
return 0;
if(s1[i]=='\0')
return -1;
if(s2[i]=='\0')
return 1;
i++;
}
return -2