[root@Snoopy snoopy]# make
source='snoopy.c' object='snoopy.o' libtool=no \
depfile='.deps/snoopy.Po' tmpdepfile='.deps/snoopy.TPo' \
depmode=gcc3 /bin/sh ./depcomp \
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"snoopy\" -DVERSION=\"1.0\" -I. -I. -g -O2 -c `test -f 'snoopy.c' || echo './'`snoopy.c
snoopy.c: In function `getname1':
snoopy.c:8: too many arguments to function `random'
snoopy.c:10: too many arguments to function `random'
snoopy.c:11: array subscript is not an integer
snoopy.c:12: parse error before '[' token
snoopy.c: In function `getname2':
snoopy.c:17: too many arguments to function `random'
snoopy.c:19: too many arguments to function `random'
snoopy.c: In function `main':
snoopy.c:34: warning: passing arg 1 of `strcmp' makes pointer from integer without a cast
make: *** [snoopy.o] Error 1
第一个问题是getname1函数里面的b[3]=c[c+1]; c是一个数组指针,应该不能这样使用吧。
第二个问题是random函数不需要参数。
第三个问题是main函数里面的a1是一个char,而一个汉字要占用两个char的位置,所以scanf("%s(男/女)",a1);会有问题。这也是if(strcmp(a1,"男")==0)getname1();这一行会出错的原因。因为a1是char,而strcmp所需的参数是char *,所以会有warning: passing arg 1 of `strcmp' makes pointer from integer without a cast这样的错误。
还有一个疑问,clrscr()这函数可能在Linux无法使用吧,在Turbo C里面倒是有。我没有在Linux下编译你的程序,只是看了一下,如有错误欢迎指正。