• 字符串分隔


    eg:

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include <stdio.h>
     3 #include <string.h>
     4 
     5 typedef struct t {
     6     char a[102];
     7 }T;
     8 
     9 void do_printf(const char * src, int n)
    10 {
    11     char a[9] = { 0 };//为了让最后一个元素为''(即ASCII码为0),
    12                       选择初始化了的包含9个元素的数组作为缓冲区
    13     int len;
    14     if (n == 0 || src == NULL) return;
    15 
    16     if ((len = n % 8) == 0)//输入字符数要以8的倍数为单位,故只有能否整除两个分支
    17     {
    18         for (int i = 0; i < n / 8; i++)//能够整除
    19         {
    20             for (int i = 0; i < 8; i++)
    21             {
    22                 a[i] = *src++;//填充8字节,最后一个字节为数组a的最后一个元素''
    23             }
    24             printf("%s
    ", a);
    25         }
    26     }
    27     else
    28     {
    29         for (int i = 0; i < n / 8; i++)//不能够整除,先把能整分为8份的按照8字节打印
    30         {
    31             for (int i = 0; i < 8; i++)
    32             {
    33                 a[i] = *src++;
    34             }
    35             printf("%s
    ", a);
    36         }
    37 
    38         for (int i = 0; i < len; i++)//对8求余为len,则需要填充len个字节
    39         {
    40             a[i] = *src++;
    41         }
    42 
    43         for (int i = len; i < 8 ; i++)//由于不能整除,还需要填充8-len个'0'
    44         {
    45             a[i] = '0';
    46         }
    47         printf("%s
    ", a);
    48 
    49     }
    50 
    51 }
    52 /*  Q:最大输入100个字符,为什么我的数组缓冲区需要102个字节?
    53     A:fgets读取的数据是输入参数-1,输入参数为102,最大读取为101,由于fgets
    54     会读取最后的换行符(
    ),所以当题目要求最大输入为100个字符时,加上最后
    55     的换行符(
    )就有101个字符了,所以最后选择102大小的缓冲区*/
    56 int main(void)
    57 {
    58     T arry[2];
    59     int len1,len2;
    60 
    61     fgets(arry[0].a, 102, stdin);
    62     len1=strlen(arry[0].a);//fgets会自动在缓冲区后面加上''
    63     
    64     fgets(arry[1].a, 102, stdin);
    65     len2 = strlen(arry[1].a);
    66     
    67     do_printf(arry[0].a,len1-1);//排除fgets吸收的换行符(
    ),故len需要减去1
    68     do_printf(arry[1].a, len2 - 1);
    69     
    70     return 0;
    71 }

  • 相关阅读:
    Swap Nodes in Pairs
    Length of Last Word
    leetcode开篇
    数据备份crontab+pyhon
    hdu 1848 博弈 难题 取石子 三堆
    jd1338.c
    ubuntu 13.10上配置打印机
    运煤智力题
    【开发记录】RTMP推流协议互联网直播点播平台EasyDSS新增生成水印模块记录
    互联网视频直播点播分析平台EasyDSS配置公网IP后登录提示“服务不存在”问题排查过程介绍
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/11054986.html
Copyright © 2020-2023  润新知