简单的字符串问题
用x来标示退出,字符串数量为3或者到文件尾结束,fun来用4种方式显示,firstlen是返回每个字符串首个单词的长度,为什么会出错,高手帮忙看下#include <stdio.h>
#include <string.h>
#define SIZE 81
int x=0;
int firstlen(char*);
void fun(char**,int);
int main(void)
{
int s;
char name[3][SIZE];
for(s=0;s<3;s++)
if(gets(name[s])==NULL)
break;
while(x==0)
fun(name,s);
return 0;
}
int firstlen(const char* p)
{
int i=0;
while(p[i]!='\n'&&p[i]!='\t'&&p[i]!='\r')
i++;
return i;
}
void fun(char** ptr,int n)
{
int i,j,k;
char *m[3],*tem;
for(j=0;j<n;j++)
m[j]=ptr[j];
puts("1,直接输出;");
puts("2,ascii输出;");
puts("3,长度递增输出;");
puts("4,第一个单词长度递增输出;");
puts("5,退出;");
scanf("%d",&i);
switch(i)
{
case 1:
for(j=0;j<n;j++)
puts(m[j]);
break;
case 2:
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(strcmp(m[j],m[k])>0)
{
tem=m[k];
m[k]=m[j];
m[j]=tem;
}
for(j=0;j<n;j++)
puts(m[j]);
break;
case 3:
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(strlen(m[j])>strlen(m[k]))
{
tem=m[k];
m[k]=m[j];
m[j]=tem;
}
for(j=0;j<n;j++)
puts(m[j]);
break;
case 4:
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if(firstlen(m[j])>firstlen(m[k]))
{
tem=m[k];
m[k]=m[j];
m[j]=tem;
}
for(j=0;j<n;j++)
puts(m[j]);
break;
default:
x=1;
break;
}
while(getchar()!='\n')
continue;
}