| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1407 人关注过本帖
标题:因为是新手,很多不懂!求点拨!
只看楼主 加入收藏
wenluyou
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-24
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:5 
因为是新手,很多不懂!求点拨!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define   MAX_COLS 20
#define   MAX_INPUT 1000
 
int  read_column_numbers( int columns[], int max);

     
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);
        
        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 pairded.");
        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 let;

     let = strlen(input);
     output_col = 0;
     for( col =0; col< n_columns; col +=2)(
         
     if (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';
 }
--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.c
C:\Users\Administrator\Desktop\1.c(51) : error C2059: syntax error : 'if'
C:\Users\Administrator\Desktop\1.c(51) : error C2143: syntax error : missing ';' before ')'
C:\Users\Administrator\Desktop\1.c(53) : error C2065: 'len' : undeclared identifier
C:\Users\Administrator\Desktop\1.c(55) : error C2043: illegal break
C:\Users\Administrator\Desktop\1.c(56) : error C2065: 'nchars' : undeclared identifier
C:\Users\Administrator\Desktop\1.c(61) : error C2015: too many characters in constant
C:\Users\Administrator\Desktop\1.c(61) : error C2466: cannot allocate an array of constant size 0
C:\Users\Administrator\Desktop\1.c(61) : error C2075: 'output' : array initialization needs curly braces
C:\Users\Administrator\Desktop\1.c(62) : error C2059: syntax error : '}'
执行 cl.exe 时出错.

1.obj - 1 error(s), 0 warning(s)
搜索更多相关主题的帖子: include 
2016-02-24 19:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
C舊語法。抄代碼的時候,問作者或看清楚是在什麽編譯器下編譯的。

授人以渔,不授人以鱼。
2016-02-24 19:12
wenluyou
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-24
收藏
得分:0 
  我自己不知道 所以用了VC6 貌似书中是用ANSI C 两者是不是有区别?
2016-02-24 22:24
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
大概是抄代码抄错了,我只是针对错误大致根据前后文修改了下,确保编译通过,不验证代码运行的正确性:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define   MAX_COLS 20
#define   MAX_INPUT 1000

int  read_column_numbers( int columns[], int max);


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);
       
        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 pairded.");
        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 let;
   
    let = strlen(input);
    output_col = 0;
    for( col =0; col< n_columns; col +=2){
       
        for (col =0 ;col=n_columns;col +=2){   //if的条件表达式不包含分号,估计是for语句,改for
            int nchars = columns[col + 1]-columns[col]+1;
            if (columns [col]>=let ||
                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['output_col'] ='\0'原语句这样没见过,看你前面定义了output_col,估计是两条语句
        output_col ='\0';
    }  //加了个}
}


能编个毛线衣吗?
2016-02-24 22:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
以下是引用wenluyou在2016-2-24 22:24:44的发言:

  我自己不知道 所以用了VC6 貌似书中是用ANSI C 两者是不是有区别?

编译器告诉你第51行有问题,你去看看,哪里有个变量定义,这种语法是C99才支持的,vc作C编译器的时候,不支持C99标准,把那一行调到函数的最开头即可.

vc是C++编译器,你不以.c作文件名时不会有这种编译错误.

授人以渔,不授人以鱼。
2016-02-24 23:12
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
就按提示修改
2016-02-25 00:32
快速回复:因为是新手,很多不懂!求点拨!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017840 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved