红联Linux门户
Linux帮助

C语言程序提示错误

发布时间:2012-08-22 11:00:21来源:红联作者:cf0532
[i=s] 本帖最后由 cf0532 于 2012-8-22 11:01 编辑 [/i]

程序如下,在linux系统下,用g++编译的时候总是提示出如下错误:
1.第8行的 void要求前面加initiator
2. 主程序中int main()中没有声明 read_column_numbers 和 rearrange 函数。

第一个问题,实在不知道什么意思?
第二个问题,那两个函数命名已经声明了啊

这个程序在windows下可以编译,在linux下不一样吗?

谢谢![code]#include
#include
#include
#define MAX_COLS 20
#define MAX_INPUT 1000

int read_column_numbers( int columns[], int max );
void rearrange( char *output, char const *input, int n_columns, int const columns[] );

int main( void )
{
int n_columns;
int columns[MAX_COLS];
char input[MAX_INPUT];
char output[MAX_INPUT];

n_columns = read_column_numbers( columns, MAX_COLS );


while( gets( input ) != NULL )
{
printf( "Original input : %s\n", input );
rearrange( output, input, n_columns, columns );
printf( "Rearranged line: %s\n", output );
}

return EXIT_SUCCESS;
}

int read_column_numbers( int columns[], int max )
{
int num = 0;
int ch;
while( num < max && scanf( "%d", &columns[num] ) == 1 && columns[num] >= 0 )
num +=1;

if( num % 2 != 0 )
{
puts( "Last column number is not paired.");
exit( EXIT_FAILURE );
}
while( (ch = getchar() ) != EOF && ch!= '\n' )
;
return num;
}

void rearrange( char *output, char const *input, int n_columns, int const columns[] )
{
int col;
int output_col;
int len;
len = strlen( input );
output_col = 0;
for ( col = 0; col < n_columns; col += 2)
{
int nchars = columns[col + 1] - columns[col] + 1;
if ( columns[col] >= len || output_col == MAX_INPUT -1 )
break;
if( output_col + nchars > MAX_INPUT - 1)
nchars = MAX_INPUT - output_col - 1;
strncpy( output + output_col, input + columns[col], nchars );
output_col += nchars;
}
output[output_col] = '\0';
}[/code]
文章评论

共有 3 条评论

  1. LG_OPEN 于 2012-09-11 22:46:48发表:

    额,顺序恰好说反了

  2. LG_OPEN 于 2012-09-11 22:46:04发表:

    你这两个应该都是警告吧。。第一个应该可以的,实在不行你把那两函数写在main前。第二个应该是编译器认为那个函数不应设为空函数,而是整形的。

  3. ggddver 于 2012-09-11 19:51:25发表:

    c和指针里面的第一个例子吧,你用gcc编译啊.....