zoukankan      html  css  js  c++  java
  • C程序设计语言练习题1-22

    练习1-22  编写一个程序,把较长的输入行”折“成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后。要保证程序能够智能地处理输入行很长以及在制定的列前没有空格或制表符时的情况。

    代码如下:

    #include <stdio.h>    //    包含标准库的信息。
    
    #define MAXLINE 1000        //    每行最大字符数为1000个。
    
    #define BR 10    //    十个字符换一行。
    
    int getline(char line[], int maxline);
    
    int main()    //    定义名为main的函数,它不接受参数值。
    {
        int len;
        
        char line[MAXLINE];
    
        while ((len = getline(line, MAXLINE)) > 0) 
        {
            printf("%s
    ", line);
        }
    
        getchar();    //    防止控制台一闪而过,需要接受任意字符后在关闭控制台。
        return 0;    //    向执行环境返回一个整形,0代表执行成功。
    }
    
    int getline(char s[], int lim)
    {
        int c, i, j;
        c = i = j = 0;
        while(i < lim - 1 && (c = getchar()) != EOF && c != '
    ')
        {
            if (c == '
    ') {
                s[i++] = c;
            }
            else if ((i - j) % BR + 1 == BR)    //    需要折行。
            {
                if (c != '	' && c != ' ' && i != BR)    //    如果需要换行的位置是空格或者制表符,则忽略这个字符。
                {
                    s[i++] = c;
                    s[i++] = '
    ';
                    j++;
                }
            }
            else
                s[i++] = c;
        }
        if (s[i - 1] == '
    ')
            s[i - 1] = '';    //    若上一个字符是换行符则不在执行换行。
        else
            s[i] = '';
        return i;
    }

    个人理解:

    主要练习了向字符数组的某一位置插入一个字符。

  • 相关阅读:
    获取yyyymmdd hh:ii:ss形式的日期时间
    详解SQL Server如何链接远程MySQL
    SET QUERY_GOVERNOR_COST_LIMIT
    STR函数将数字数据转换成字符数据
    表的转置
    C#中时间的Ticks属性
    创建CheckBox样式的下拉列表
    HTML DOM whiteSpace 属性
    TRUNCATE TABLE
    NFS服务配置.
  • 原文地址:https://www.cnblogs.com/DeadGardens/p/4793416.html
Copyright © 2011-2022 走看看