- 论坛徽章:
- 0
|
c程序的问题
建议楼主和悟人子弟先从基础练起,一口吃一个胖子的浮躁心里来学习是最要不得的。
我将楼主的程序做了修改,为了照顾原来的代码形式及算法,改后的程序虽不是很好,但在VC6.0下无任何错误。希望对二位新手有所帮助!
- /***************************************************
- *file name : experiment.c
- *description : 简单分离运算符和其他数据
- *note :
- *author : kernelxu
- *date : 2005/06/16
- ****************************************************/
- #include<stdio.h>;
- #include<string.h>;
- #include<malloc.h>;
- #define STRING {'(',')','*','/','+','-'}
- /****************************************************
- *function name : main()
- *params : none
- *return : int
- *note :
- ****************************************************/
- int main(void)
- {
- char *p_expression = (char *)malloc(81 * sizeof(char));
- char *p_s = (char *)malloc(81 * sizeof(char));
- char *p_num = (char *)malloc(81 * sizeof(char));
- /*当然在使用动态分配的存储空间之前最好先检查一下分配是否成功*/
- char sign[6] = STRING;
- unsigned int flag = 0;
- unsigned int i = 0;
- unsigned int j = 0;
- unsigned int m = 0;
- char *expression = p_expression;
- char *s = p_s;
- char *num = p_num;
- fflush(stdin);
- printf("please enter:\n");
- gets(expression);
-
- for( i=0; i < strlen(expression); i++)
- {
- flag = 0;
- for( j=0; j < 6; j++)
- {
- if(*(expression+i) == sign[j])
- {
- *s++ = *(expression + i);
- flag = 1;
- }
- }
- if(flag == 0)
- {
- *num++ = *(expression + i);
- }
- }
- *s = '\0';
- *num = '\0';
- printf("The operator are:\n");
- for( m=0; m<strlen(p_s); m++)
- printf("%c \n",*(p_s+m));
-
- printf("The datas are:\n");
- for( m=0; m<strlen(p_num); m++)
- printf("%c \n",*(p_num+m));
- free(p_expression);
- free(p_s);
- free(p_num);
- expression = NULL;
- s = NULL;
- num = NULL;
- p_expression = NULL;
- p_s = NULL;
- p_num = NULL;
- return 0;
- } /*END OF main()*/
复制代码 |
|