zoukankan      html  css  js  c++  java
  • 现代方法第15章第三节的程序

    #include <string.h>
    #include <stdio.h>
    
    #ifndef LINE_H
    #define LINE_H
    void clear_line(void);
    void add_word(const char *word);
    int space_remaining(void);
    void write_line(void);
    void flush_line(void);
    #endif
    
    
    
    #ifndef WORD_H
    #define WORD_H
    void read_word(char *word,int len);
    #endif
    
    #define MAX_WORD_LEN 20
    #define MAX_LINE_LEN 60
    char line[MAX_LINE_LEN+1];
    int line_len = 0;
    int num_words = 0;
    
    main()
    {
    char word[MAX_WORD_LEN+2];
    int word_len;
    
    clear_line();
    for (;;){
        read_word(word,MAX_WORD_LEN+1);
        word_len = strlen(word);
        if (word_len == 0){
                  flush_line();
                  return 0;
        }    
        if (word_len > MAX_WORD_LEN)
          word[MAX_WORD_LEN] = '*';
        if (word_len + 1 > space_remaining()) {
          write_line();
          clear_line();
        }
        add_word(word);
    
    
    }
    }
    
    
    ///////////line.c////////////////////////////////////////////////////////////////i
    void clear_line(void){
        line[0] = '';
        line_len = 0;
        num_words = 0;
    
    }
    
    void add_word(const char *word)
    {
        if (num_words > 0) {
            line[line_len] = ' ';
            line[line_len+1] = '';
            line_len++;
        }
        strcat(line,word);
        line_len += strlen(word);
        num_words++;
        
    }
    int space_remaining(void){
        return MAX_LINE_LEN - line_len;
    }
    void write_line(void)
    {
        int extra_spaces,spaces_to_insert,i,j;
        extra_spaces = MAX_LINE_LEN-line_len;
        for(i=0;i<line_len;i++){
          if(line[i] != ' ')
            putchar(line[i]);
          else {
              spaces_to_insert = extra_spaces / (num_words - 1);
              for (j = 1; j<=spaces_to_insert +1; j++)
                 putchar(' ');
              extra_spaces -= spaces_to_insert;
              num_words--;
          }
    }
    putchar ('
    ');    
    }
    void flush_line(void)
    {
        if (line_len>0)
          puts(line);
    }
    
    
    /////word.c/////////////////////////////////////////////////////////////
    int read_char(void)
    {
        int ch = getchar ();
        
        if (ch == '
    ' || ch == '	')
          return ' ';
        return ch;
    }
    
    void read_word(char *word, int len)
    {
        int ch,pos = 0;
        while ((ch = read_char()) == ' ')
            ;
        
        while (ch != ' ' && ch != EOF) {
            if (pos<len)
              word[pos++] = ch;
            ch = read_char();
        }
        
        word[pos] = '';
    }
    View Code
  • 相关阅读:
    解析XML技术
    XML名命空间
    XML解析器
    java列表组件鼠标双击事件的实现
    XML(可拓展标记语言)基本概念
    数据包式套接字:基于UDP协议的Socket网络编程
    流式套接字:基于TCP协议的Socket网络编程(案例3)
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/saolv/p/7614807.html
Copyright © 2011-2022 走看看