LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1845|回复: 20

这程序到底错在哪里啊??

[复制链接]
发表于 2003-7-4 08:36:48 | 显示全部楼层 |阅读模式

  1. #include<stdlib.h>
  2. #include<time.h>
  3. char b[5];

  4. getname1()
  5. {int i;
  6. char c[40]="男南难楠赧囡达搭打瘩嗒沓大鞑笪怛哒疸笪";
  7. i=random(20)*2;
  8. b[0]=c[i];b[1]=c[i+1];
  9. i=random(20)*2;
  10. b[2]=c[i];b[3]=c[c+1];
  11. b=[4]='\0';
  12. }
  13. getname2()
  14. {int i;
  15. char c[40]="钕衄恧女主著朱珠筑逐诸助主住注祝祝祝祝";
  16. i=random(20)*2;
  17. b[0]=c[i];b[1]=c[i+1];
  18. i=random(20)*2;
  19. b[2]=c[i];b[3]=c[i+1];
  20. b[4]='\0';
  21. }
  22. main()
  23. {
  24. char a[3],a1,x;
  25. clrscr();
  26. randomize();
  27. printf("请输入姓氏:");
  28. scanf("%s",a);
  29. printf("请输入性别");
  30. scanf("%s(男/女)",a1);
  31.     while(1)
  32.         {
  33.         if(strcmp(a1,"男")==0)getname1();
  34.         else getname2();
  35.         printf("\n %s%s\n",a,b);
  36.         printf("\n 这个名字好吗(Y/N)?\n");
  37.         x=getch();
  38.         if(x=='y'|x=='Y')break;
  39.         }
  40. }
复制代码

我刚学,,,找了半天都找不出错误!!!
发表于 2003-7-4 08:43:05 | 显示全部楼层
以后贴代码时要注意保持缩进,请按照置顶的贴子要求做。
发表于 2003-7-4 08:51:25 | 显示全部楼层
编译通不过嘛。先把程序编译通过后再贴出来吧。
 楼主| 发表于 2003-7-4 14:26:52 | 显示全部楼层
好烦也,,,今天早上看了一个多小时,都不知道问题出在哪里???

我是用make编译的,这有关系吗???

[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

老是出现这个错误,,,谁能帮我看看呢!!!
发表于 2003-7-4 15:16:00 | 显示全部楼层

re:

rand函数使用有错阿
rand函数里面是不带参数的,
man 以下rand就知道了
还有
clrscr也许会没有这个清屏函数,可以试试,听人说是TC的函数。
 楼主| 发表于 2003-7-4 17:14:20 | 显示全部楼层
是不是tc的和在linux下用不一样的啊???

怎么办啊???还有如何定义这个getname1和getname2啊??
发表于 2003-7-4 17:17:02 | 显示全部楼层
第一个问题是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下编译你的程序,只是看了一下,如有错误欢迎指正。
发表于 2003-7-4 17:26:12 | 显示全部楼层

re:

这是自己写的还是例子程序,
我看你的头文件包括了一个time.h
应该是用时间做伪随机的种子的吧,可是又没有用。
看看 srand()和rand()的用法吧。
 楼主| 发表于 2003-7-4 17:29:39 | 显示全部楼层
我刚学c,很多还不懂,,,而在上机时是tc的,运行没错,

然后回到自己linux里,,,却这样,看了一遍又一遍,,,都跟上机时一样

在这里却编译不过,,,,!!!!

而linux的c的各个函数我又不会查看,,,,,,,,!!!!

是不是要改成适合linux的c的格式啊???还是里面本身语句有错误啊??
发表于 2003-7-4 17:36:51 | 显示全部楼层
语法是一样的。但用的系统调用和函数调用不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表