易码技术论坛

 找回密码
 加入易码
搜索
查看: 139594|回复: 6

[问题]一个小程序,已经知道那里错误,可不知道为什么错,请高手指点

[复制链接]
发表于 2006-7-6 15:41:00 | 显示全部楼层
也许是想生成随机字符串吧,试试看下面的


  1. #define N 10
  2. void main()
  3. {
  4.     char c[2];
  5.     int i,n;
  6.     char s[N];   
  7. [color=#FF0000]    c[0] = 0;
  8.     s[0] = 0;[/color]   
  9.     srand(Getms());
  10.     for(i=1;i<N;i++) {
  11.         [color=#FF0000]c[0][/color]=rand()%256;
  12.         strcat(s,c);
  13.     }
  14.     SetScreen(0);
  15.     printf("%s\n",s);
  16.     getchar();
  17. }
复制代码


注意c[2]中的这个c实际是一个char类型指针,不要乱指。
发表于 2006-7-6 16:47:00 | 显示全部楼层
楼上的解释有些问题:c[2]中的c并不是指针,c只是一个地址常量(非左值,也就是说更本不能更改其值).

楼主的程序更本就编译通不过!  c=rand()%256;是错误的。

发表于 2006-7-6 17:34:00 | 显示全部楼层
对哦,搞混了,算是一个静态指针了。
 楼主| 发表于 2006-7-29 19:57:29 | 显示全部楼层
多谢,我一定紧记我范下的错误!!
 楼主| 发表于 2006-7-6 10:39:22 | 显示全部楼层 |阅读模式
源代码如下:

#define N 10
void main()
{
  char c[2];                                        char c;
  int i,n;
  char s[N];

  srand(Getms());
  for(i=1;i<N;i++) {
   c=rand()%256;
   strcat(s,c);                                     s[i-1]=c;  
  }
  SetScreen(0);
  printf("%s\n",s);
  getchar();

}





红色部分为有问题的地方,兰色部分为更正的地方

更正后程序运行正常

不更正,症状表现为死循环



请高手指点!!
发表于 2007-12-22 16:02:11 | 显示全部楼层

很多新人老是会把指针和变量搞混~

我以前也是一样~对一这一些也要特别的注意一下。
发表于 2007-12-22 16:16:31 | 显示全部楼层
楼上掘坟能力不是一般的强……
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-24 19:35 , Processed in 0.011835 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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