免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sea313081574
打印 上一主题 下一主题

[C] 一个简单的C语言问题 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2006-10-19 13:45 |只看该作者
楼主我给你加工了一下,你看看是不是自己能找到问题呢?
我用
  1. indent <<EOF -kr -br -i4 -ts4 -nut > ttt.c
复制代码
生成的。
  1. #define MAXSIZE 100
  2. #define OK 1
  3. #define ERROR 0
  4. #define INCREATSIZE 10
  5. typedef struct {
  6.     char name[20];              /*定义一个结构体 */
  7.     int worknumber;
  8. } work, *worker;

  9. typedef struct {                /*定义一个结构体 */
  10.     worker Elem;
  11.     int length;
  12.     int listsize;
  13. } *sqlist;

  14. enterdata(sqlist L)
  15. {                               /*要求输入姓名和号码,输入函数 */
  16.     int i;
  17.     printf("please enter the worker's total:\n");
  18.     scanf("%d", &L->length);
  19.     for (i = 1; i <= L->length; i++) {
  20.         printf("the %d worker's name :", i);
  21.         scanf("%s", L->Elem.name);
  22.         printf("\n");
  23.         printf("please enter the %d worker's worknumber:", i);
  24.         scanf("%d", &L->Elem.worknumber);
  25.         printf("\n");
  26.     }
  27. }

  28. creatlist(sqlist L)
  29. {                               /*建立顺序表,分配空间 */
  30.     L->Elem = (worker) malloc(MAXSIZE * sizeof(work));
  31.     if (!L->Elem)
  32.         exit(ERROR);
  33.     L->length = 0;
  34.     L->listsize = MAXSIZE;
  35.     return OK;
  36. }

  37. outputlist(sqlist L)
  38. {                               /*输出刚才输入的信息 */
  39.     int i;
  40.     printf("the worker' data is:\n");
  41.     for (i = 1; i <= L->length; i++)
  42.         printf("%s  ", L->Elem.name);
  43.     printf("\n");
  44.     for (i = 1; i <= L->length; i++)
  45.         printf("%d  ", L->Elem.worknumber);
  46.     printf("\n");
  47. }


  48. main()
  49. {                               /*主函数 */
  50.     sqlist L1;

  51.     creatlist(L1);

  52.     enterdata(L1);

  53.     outputlist(L1);

  54.     insertworker(L1);

  55.     outputlist(L1);
  56. }
复制代码

论坛徽章:
0
12 [报告]
发表于 2006-10-19 13:51 |只看该作者
flw,算了,这个根本没写完,而且估计自己都没想清楚怎么写的...等他自己来说吧

论坛徽章:
0
13 [报告]
发表于 2006-10-19 14:21 |只看该作者
原帖由 flw 于 2006-10-19 13:45 发表
楼主我给你加工了一下,你看看是不是自己能找到问题呢?
我用
  1. indent <<EOF -kr -br -i4 -ts4 -nut > ttt.c
复制代码
生成的。
[code]#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define ...


忍不住说一声: 牛

论坛徽章:
0
14 [报告]
发表于 2006-10-19 17:33 |只看该作者
我改了一下,不过没有作错误chuli,比如说输入整数等,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define MAXSIZE 100     
#define OK 1
#define ERROR 0
#define INCREATSIZE 10
typedef struct { char name[20];/*定义一个结构体*/
int worknumber;}work,*worker;

typedef struct {                         /*定义一个结构体*/
worker *Elem;
int length;
int listsize;}*sqlist;
//typedef sqlist_t* sqlist;

void enterdata(sqlist L){                                /*要求输入姓名和号码,输入函数*/
int i;
printf("please enter the worker's total:\n");
scanf("%d",&(L->length));
for(i=1;i<=L->length;i++){
printf("the %d worker's name :",i);
scanf("%s",((L->Elem)[i])->name);
printf("\n");
printf("please enter the %d worker's worknumber:",i);
scanf("%d",&(((L->Elem)[i])->worknumber));
printf("\n");
}
}

void creatlist(sqlist L){                                   /*建立顺序表,分配空间*/
L->Elem=(worker*)malloc(MAXSIZE*sizeof(worker));
int i = 0;
for(i = 0; i < MAXSIZE; i++){
        (L->Elem)[i] = (worker)malloc(MAXSIZE*sizeof(work));
}
if(!L->Elem) exit(ERROR);
L->length=0;
L->listsize=MAXSIZE;
return;}

void outputlist(sqlist L){                      /*输出刚才输入的信息*/
int i;
printf("the worker' data is:\n");
for(i=1;i<=L->length;i++){
printf("%s  ",((L->Elem)[i])->name);
printf("%d", ((L->Elem)[i])->worknumber);
printf("\n");
}
}


int main(){                  /*主函数*/
sqlist L1;

creatlist(L1);

enterdata(L1);

outputlist(L1);

//insertworker(L1);

//outputlist(L1);
return 0;
}


执行:
please enter the worker's total:
2
the 1 worker's name :sdfasdfhd

please enter the 1 worker's worknumber:3

the 2 worker's name :ds

please enter the 2 worker's worknumber:3

the worker' data is:
sdfasdfhd  3
ds  3

论坛徽章:
0
15 [报告]
发表于 2006-10-19 18:51 |只看该作者
原帖由 chzht001 于 2006-10-19 14:21 发表


忍不住说一声: 牛


顺便说一声,indent(1) 不能解决所有问题。

论坛徽章:
0
16 [报告]
发表于 2006-10-19 21:17 |只看该作者

回复上面那位仁兄的

这段程序是我自己写的,编译是通过了,但是就是达不到预期的结果。

论坛徽章:
0
17 [报告]
发表于 2006-10-20 09:06 |只看该作者
昨天想了想,按照楼主和flw想法好像也可以实现!代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define MAXSIZE 100     
#define OK 1
#define ERROR 0
#define INCREATSIZE 10
typedef struct { char name[20];/*定义一个结构体*/
int worknumber;}work,*worker;

typedef struct {                         /*定义一个结构体*/
worker Elem;
int length;
int listsize;}*sqlist;
//typedef sqlist_t* sqlist;

void enterdata(sqlist L){                                /*要求输入姓名和号码,输入函数*/
int i;
printf("please enter the worker's total:\n");
scanf("%d",&(L->length));
for(i=1;i<=L->length;i++){
printf("the %d worker's name :",i);
scanf("%s",((L->Elem) + i)->name);
printf("\n");
printf("please enter the %d worker's worknumber:",i);
scanf("%d",&(((L->Elem) + i)->worknumber));
printf("\n");
}
}

void creatlist(sqlist L){                                   /*建立顺序表,分配空间*/
L->Elem = (worker) malloc(MAXSIZE * sizeof(work));
if(!L->Elem) exit(ERROR);
L->length=0;
L->listsize=MAXSIZE;
return;}

void outputlist(sqlist L){                      /*输出刚才输入的信息*/
int i;
printf("the worker' data is:\n");
for(i=1;i<=L->length;i++){
printf("%s  ",((L->Elem) + i)->name);
printf("%d", ((L->Elem) + i)->worknumber);
printf("\n");
}
}


int main(){                  /*主函数*/
sqlist L1;

creatlist(L1);

enterdata(L1);

outputlist(L1);

//insertworker(L1);

//outputlist(L1);
return 0;
}


可是执行时出错:

please enter the worker's total:
2
the 1 worker's name :asfdsf

please enter the 1 worker's worknumber:4

the 2 worker's name :sfdsafsffsdaf

please enter the 2 worker's worknumber:6

the worker' data is:
asfdsf  4
sfdsafsffsdaf  6
Inconsistency detected by ld.so: dl-fini.c: 66: _dl_fini: Assertion `i == _rtld_local._dl_nloaded' failed!


最后一句话不知道为什么!
那位解释一下?
谢谢!!

论坛徽章:
0
18 [报告]
发表于 2006-10-20 11:50 |只看该作者
代码帖得太乱,看了就不舒服
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP