top123 发表于 2002-11-10 23:26:03

字符串 !

top123 发表于 2002-11-10 23:27:16

就是 给: ri 副给 十个字符 !

dalin 发表于 2002-11-10 23:27:47

我知道是字符串啊,但你的char r3好像不行啊,你试试看char r3了没有?
就是字符串才会多出一个字符'\0'来啊。

top123 发表于 2002-11-11 17:19:25

我在看看 !
那 提示: assign makes integer from apointer without a pointer

top123 发表于 2002-11-12 00:15:12

经过反复调试 终于通过了 谢谢大家!

dalin 发表于 2002-11-12 00:33:31

呵呵,我觉得像字符串后面其实还带着一个'\0'很容易被忽略。
很惭愧啊,我学了一年C了,还什么真正的程序都没编过呢(不过自认基础还是学得不错的:P)。
以后还得跟大家多多学习呢。

top123 发表于 2002-11-12 10:37:13

没什么 ! 我也很菜的 !
你看看下面的程序:
#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>
#include&lt;stdlib.h&gt;
void Randomnum(void);
pid_t p1,p2,p3,p4;
main(void)
{
int sysgiven=5;
struct stares1{ int s;   char r1; } statue1={0,"ABCDEFGHIJ"};
struct stares2{ int s;   char r2; } statue2={0,"KLMNOPQRST"};
struct stares3{ int s;   char r3; } statue3={0,"UVWXYZabcd"};
struct stares4{ int s;   char r4; } statue4={0,"efghijklmn"};
struct stares5{ int s;   char r5; } statue5={0,"opqrstuvwx"};
struct pidstatues{
               intname;
               intrenum;
               intgiven;               
               intnogiven;   
             }capro;               /* define struct over */
                                           /* initial data struct */

capro.name=1; capro.renum =3; capro.given=0; capro.nogiven=0;
capro.name=2; capro.renum =2; capro.given=0; capro.nogiven=0;
capro.name=3; capro.renum =2; capro.given=0; capro.nogiven=0;
capro.name=4; capro.renum =4; capro.given=0; capro.nogiven=0;
Randomnum();
if(p1&lt;0)   {
   printf(" fork error\n ");   exit(0);   }
else if( (p1==0) || (p1==1) )   
   {   
      if((capro.renum &lt;= sysgiven) &amp;&amp; (capro.nogiven&lt;= sysgiven))
         {   
            if((statue1.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;       printf("%s\n",statue1.r1);      statue1.s = 1; }
      if((statue2.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;         
   sysgiven--;       printf("%s\n",statue2.r2);      statue2.s = 1; }
            if((statue3.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue3.r3);      statue3.s = 1; }      
         if((statue4.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;      printf("%s\n",statue4.r4);      statue4.s = 1; }
            if((statue5.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;      printf("%s\n",statue5.r5);      statue5.s = 1; }
             sysgiven = 5;   exit(1);             }
   else printf(" Dead \n");
    }
if(p2&lt;0)
    { printf(" fork fault\n " );    exit(1);   }
else if((p2==0) || (p2==1))   
   {
       if((capro.renum &lt;= sysgiven) &amp;&amp; (capro.nogiven&lt;= sysgiven))
            {
         if((statue1.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue1.r1);      statue1.s = 1; }
       if((statue2.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;   
             sysgiven--;       printf("%s\n",statue2.r2);      statue2.s = 1; }   
         if((statue3.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue3.r3);      statue3.s = 1; }   
         if((statue4.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;         
             sysgiven--;       printf("%s\n",statue4.r4);      statue4.s = 1; }
         if((statue5.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;      printf("%s\n",statue5.r5);      statue5.s = 1; }
              sysgiven = 5;   exit(1);
             }
       else printf(" Dead \n");   
   }
if( p3&lt;0 ) {
    printf(" fork error\n " );    exit(1);}
    else if((p3==0) || (p3==1))
   {
   if((capro.renum &lt;= sysgiven) &amp;&amp; (capro.nogiven &lt;= sysgiven))
       {   
          if((statue1.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue1.r1);      statue1.s = 1; }
          if((statue2.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;      printf("%s\n",statue2.r2);      statue2.s = 1; }   
          if((statue3.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;      printf("%s\n",statue3.r3);      statue3.s = 1; }   
          if((statue4.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;   
            sysgiven--;      printf("%s\n",statue4.r4);      statue4.s = 1; }
          if((statue5.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
            sysgiven--;      printf("%s\n",statue5.r5);      statue5.s = 1; }
              sysgiven = 5;    exit(1);   }
       else printf(" Dead \n");}
if( p4&lt;0 ) {
   printf(" fork error\n " );    exit(1); }
   else if((p4==0) || (p4==1))
       {   
         if((capro.renum &lt;= sysgiven) &amp;&amp; (capro.nogiven &lt;= sysgiven))
         {
            if((statue1.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue1.r1);      statue1.s = 1; }
              if((statue2.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue2.r2);      statue2.s = 1; }
            if((statue3.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue3.r3);      statue3.s = 1; }
            if((statue4.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;      
             sysgiven--;       printf("%s\n",statue4.r4);      statue4.s = 1; }   
            if((statue5.s==0)&amp;&amp;(capro.given&lt;3)) { capro.given++;
             sysgiven--;       printf("%s\n",statue5.r5);      statue5.s = 1; }   
          sysgiven = 5;   exit(1);      }
         else printf(" Dead \n");}
}
void Randomnum(void)
{
      int i;
      i = random();   
      i = i%4;
      switch(i){
          case 0 :p1 = fork();
          case 1 :p2 = fork();
          case 2 :p3 = fork();
          case 3 :p4 = fork();
          default: printf("fork fault\n"); break;
      }

top123 发表于 2002-11-12 10:38:34

为什么执行到 p2&lt;0 以后 就在没有 进程执行了 ?

top123 发表于 2002-11-12 10:39:24

我执行了几十便了还是那样 !
你帮忙调试 看看 !

top123 发表于 2002-11-12 21:23:55

回复呀 !

dalin 发表于 2002-11-12 21:42:24

对不起。我也不懂,你还是找别人问吧。
还有就是你的代码没有用缩进格式来写,看起来确实太痛苦了:)

吴文官 发表于 2002-11-12 21:57:44

郁闷!缩进的不好,难看,不过这不是你的错。但是最后一行少一个“}”,再有就是没有#include "unistd.h"。其它的我也没有耐心看了。
每一个case分句最好有一个break,可能问题出在这里,不同的编译器有不同的处理方法。
我虽然程序编得不好,但是非常看重编程风格。

dalin 发表于 2002-11-12 22:00:46

最后缺少一个“}”可能是粘贴的问题,不过我不明白你第三个#include为什么后面没有东西。
我也是执行到p2&lt;0之后就没有了,下面是我的执行结果:
# ./test
fork fault
ABCDEFGHIJ
KLMNOPQRST
UVWXYZabcd
fork fault
ABCDEFGHIJ
KLMNOPQRST
UVWXYZabcd

吴文官 发表于 2002-11-12 22:06:02

我改了一下,这是不是你所期望的结果呢?
$ ./a.out
fork fault
ABCDEFGHIJ
KLMNOPQRST
UVWXYZabcd
fork fault
ABCDEFGHIJ
KLMNOPQRST
UVWXYZabcd
$

吴文官 发表于 2002-11-12 22:09:52

郁闷!原来"<unistd>"在这里显示不出来!
页: 1 [2]
查看完整版本: 编程错误提示: missing terminating ' charater 是什么意思 ?