C语言问题 帮忙看看哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:48:08
题目:不用c语言的原有函数,比较两个字符串的长度,返回较长的字符串。若两个字符串长度相同,返回第一个字符串。
以下是我编的,本人菜鸟,望高手指正。
#include<stdio.h>
void main()
{
char a[100],b[100],l[100];
char f(char m[],char n[]);
printf("input first string:\n");
scanf("%s",a);
printf("in put secong string:\n");
scanf("%s",b);
l[100]=f(a[100],b[100]);
printf("%s",l[100]);

}
char f(char m[100],char n[100])
{
char *p,*q;
char w[100];
int x=0,y=0;
p=m;
if(*p!='\0')
{
x++;
}
q=n;
if(*q!='\0')
{y++;}
if(x>=y)w[100]=m[100];
else w[100]=n[100];
return w[100];
}

错误不少,我把改过的程序贴在这

#include<stdio.h>
void main()
{
char a[100],b[100],*l;
char f(char m[],char n[]);
printf("input first string:\n");
scanf("%s",a);
printf("in put secong string:\n");
scanf("%s",b);
l=f(a,b);
printf("%s",l);
}

char f(char m[],char n[])
{
char *p,*q;
int x=0,y=0;
p=m;
while(*p!='\0') //这里要用循环
{
x++;
p++;
}
q=n;
while(*q!='\0') //这里要用循环
{y++;q++;}
if(x>=y)return m;
else return n;

}

printf("%s",l[100]);

这行不对。。

改成 printf("%s",l);