c语言问题
刚开始做个开头就遇到了几个错误。求高手告知如何修改。、#include<stdio.h>#include<stdlib.h>#include<string.h>#defi...
刚开始做个开头就遇到了几个错误。求高手告知如何修改。、
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define bool int
#define true 1
#define false 0
bool str_i(char **);
void str_sort(const char *[], int);
void swap( void **p1, void **p2);
void str_out(char *[], int);
const size_t BUFFER_LEN = 256;
const size_t NUM_P = 50;
int main(void)
{
char *pS[NUM_P];
int count = 0;
printf("\nEnter successive lines, pressing Enter at the end of"
" each line.\njust enter to end.\n");
for(count = 0; count < NUM_P ; count++)
if(!str_in(&pS[count]))
break;
str_sort( pS, count);
str_out( pS, count);
return 0;
}
(18) : error C2057: expected constant expression
(18) : error C2466: cannot allocate an array of constant size 0
(18) : error C2133: 'pS' : unknown size
(24) : warning C4018: '<' : signed/unsigned mismatch
(25) : warning C4013: 'str_in' undefined; assuming extern returning int 展开
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define bool int
#define true 1
#define false 0
bool str_i(char **);
void str_sort(const char *[], int);
void swap( void **p1, void **p2);
void str_out(char *[], int);
const size_t BUFFER_LEN = 256;
const size_t NUM_P = 50;
int main(void)
{
char *pS[NUM_P];
int count = 0;
printf("\nEnter successive lines, pressing Enter at the end of"
" each line.\njust enter to end.\n");
for(count = 0; count < NUM_P ; count++)
if(!str_in(&pS[count]))
break;
str_sort( pS, count);
str_out( pS, count);
return 0;
}
(18) : error C2057: expected constant expression
(18) : error C2466: cannot allocate an array of constant size 0
(18) : error C2133: 'pS' : unknown size
(24) : warning C4018: '<' : signed/unsigned mismatch
(25) : warning C4013: 'str_in' undefined; assuming extern returning int 展开
3个回答
展开全部
#define bool int
#define true 1
#define false 0
这三个没必要,删了;
bool str_i(char **);
改成bool str_in(char **); 你自己写错了吧
void str_sort(const char *[], int);
里面的const去掉,否则编译通不过
char *pS[NUM_P];
数组不能这样定义,一定要给予一个准确的大小,也就是中括号里面必须是常量;
#define true 1
#define false 0
这三个没必要,删了;
bool str_i(char **);
改成bool str_in(char **); 你自己写错了吧
void str_sort(const char *[], int);
里面的const去掉,否则编译通不过
char *pS[NUM_P];
数组不能这样定义,一定要给予一个准确的大小,也就是中括号里面必须是常量;
追问
那三个去掉了的话,我不知道用什么库来声明bool。。貌似标准的那个,我的编译器不支持。
追答
bool是C语言中的关键字啊,编译器不支持?不需要重新定义,那个错误也是这个意思。 如果小写的bool用不了的话,尝试用BOOL看看
展开全部
n 越界了,超过了100.
似乎应当把 n=n+i 改成 n=n+1 或 n++
还有其他问题:建议这样修改:
for(i=0;i<100;i++)
{
setbuf(stdin, NULL); //清空当前输入缓存(连续使用 scanf 时最好这样做)
scanf("%d,%d",&xh[i],&sg[i]);
if(xh[i] == 0 || sg[i] == 0) break;
n=n+1;
sum = sum+sg[i];
}
每输入两个数后回车,如 23,45 回车,
最后输入 0,0 后回车,表示输入完毕
似乎应当把 n=n+i 改成 n=n+1 或 n++
还有其他问题:建议这样修改:
for(i=0;i<100;i++)
{
setbuf(stdin, NULL); //清空当前输入缓存(连续使用 scanf 时最好这样做)
scanf("%d,%d",&xh[i],&sg[i]);
if(xh[i] == 0 || sg[i] == 0) break;
n=n+1;
sum = sum+sg[i];
}
每输入两个数后回车,如 23,45 回车,
最后输入 0,0 后回车,表示输入完毕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char *pS[NUM_P]; 你的字符串数组只是定义了一个数组,每个元素存放一个指向字符串的指针。
但是 你并没有为其分配内存。这个错误肯定有的
但是 你并没有为其分配内存。这个错误肯定有的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询