#include<stdio.h>
#include<string.h>
#define N 5;
#define M 10;
int fun(char (*ss)[M],int k) //这块的char(*ss)[M]报错了,说没有定义ss,M需要输入声明
{
int i,j=0,len;
for(i=0;i<N;i++)
{
len=strlen(ss[i]);
if(len<= k)
strcpy(ss[j++],ss[i]);}
return j;
}
main(){
char x[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};
int i,f;
printf("\nThe original string\n\n");
for(i=0;i<N;i++)
puts(x[i]);
printf('\n');
f=fun(x,7);
printf("The string witch length is less than or equal to 7:\n");
for(i=0;i<f;i++)
puts(x[i]);
printf('\n');
}
宏定义不需要分号
除了宏定义不需要引号外,还有一个地方有问题;char x[n][m]作为入参时,参数的声明应该是char (*ss)[n]而不是m。m是限制字符串长度的,而不是个数;