当前位置: 首页 > news >正文

C/C++归纳2

续3.字符串和字符串函数

用C设计并测试一个函数,从输入中获取n个
字符(包括空白、制表符、换行符),把结
果存储在一个数组里,它的地址被传递作为
一个参数。
功能1:从输入中获取n个字符(包括空白、制表符、换行符),并将结果存储到用户提供的数组中。

#include <stdio.h>

/**
 * 从输入中获取n个字符(包括空白、制表符、换行符)
 * 并存储到用户提供的数组中。
 * 
 * @param buffer 用户提供的存储字符的数组
 * @param n 要读取的字符数量
 * @return 成功时返回读取的字符数,失败时返回-1
 */
int get_n_chars(char *buffer, int n) {
   
    if (buffer == NULL || n <= 0) {
   
        return -1; // 参数无效
    }
    
    int count = 0;
    while (count < n) {
   
        int c = getchar(); // 读取一个字符
        if (c == EOF) {
   
            break; // 遇到文件结束符,退出循环
        }
        buffer[count++] = (char)c;
    }
    
    buffer[count] = '\0'; // 添加字符串结束符
    return count;
}

int main() {
   
    char buffer[100]; // 假设最多读取99个字符
    int n = 50; // 假设读取50个字符
    
    int chars_read = get_n_chars(buffer, n);
    
    if (chars_read == -1) {
   
        printf("读取失败!\n");
    } else {
   
        printf("读取了 %d 个字符:\n", chars_read);
        printf("内容: %s\n", buffer);
    }
    
    return 0;
}

功能2:在读取n个字符或遇到第一个空白、制表符或换行符时停止,取先到者。

#include <stdio.h>
#include <ctype.h> // 用于isspace()

/**
 * 从输入中获取最多n个字符,但在遇到第一个空白、制表符或换行符时停止。
 * 
 * @param buffer 用户提供的存储字符的数组
 * @param n 要读取的最大字符数量
 * @return 成功时返回读取的字符数,失败时返回-1
 */
int get_n_chars_until_whitespace(char *buffer, int n) {
   
    if (buffer == NULL || n <= 0) {
   
        return -1; // 参数无效
    }
    
    int count = 0;
    while (count < n) {
   
        int c = getchar(); // 读取一个字符
        if (c == EOF) {
   
            break; // 遇到文件结束符,退出循环
        }
        if (isspace(c)) {
    // 检查是否是空白字符
            break; // 遇到空白字符,停止读取
        }
        buffer[count++] = (char)c;
    }
    
    buffer[count] = '\0'; // 添加字符串结束符
    return count;
}

int main() {
   
    char buffer[100]; // 假设最多读取99个字符
    int n = 50; // 假设读取最多50个字符
    
    int chars_read = get_n_chars_until_whitespace(buffer, n);
    
    if (chars_read == -1) {
   
        printf("读取失败!\n");
    } else {
   
        printf("读取了 %d 个字符:\n", chars_read);
        printf("内容: %s\n", buffer);
    }
    
    return 0;
}

4.结构和其他数据形式

设计一个结构模板存储一个月份名、该
月份名的3个字母缩写、该月的天数以及月
份号。

#include <stdio.h>

// 定义结构体模板
struct MonthInfo {
   
    char name[20];          // 月份名
    char abbreviation[4];   // 月份的3个字母缩写
    int days;               // 该月的天数
    int number;             // 月份号 (1-12)
};

int main() {
   
    // 初始化结构体数组,存储12个月的信息
    struct MonthInfo months[] = {
   
        {
   "January", "Jan", 31, 1},
        {
   "February", "Feb", 28, 2},
        {
   "March", "Mar", 31, 3},
        {
   "April", "Apr", 30, 4},
        {
   "May", "May", 31, 5},
        {
   "June", "Jun", 30, 6},
        {
   "July", "Jul", 31, 7},
        {
   "August", "Aug", 31, 8},
        {
   "September", "Sep", 30, 9},
        {
   "October", "Oct", 31, 10},
        {
   "November", "Nov", 30, 11},
        {
   "December", "Dec", 31, 12}
    };

    // 输出所有月份的信息
    printf("月份信息:\n");
    printf("%-15s %-10s %-5s %-10s\n", "月份名", "缩写", "天数", "月份号");
    for (int i &
http://www.dtcms.com/a/107145.html

相关文章:

  • with queue_lock: 是什么意思
  • 跨境贸易之常见的贸易术语(贸易模式)
  • 代码随想录第三十三天|动态规划part04--494.目标和、1049.最后一块石头的重量Ⅱ、474.一和零
  • 二叉树 —— 数据结构基础刷题路程
  • Linux驱动入门——设备树详解
  • 海外SD-WAN专线网络部署成本分析
  • Adv. Sci.:在精神分裂症中绘制大脑协同功能障碍图谱:理解个体差异和潜在的分子机制
  • 鸿蒙项目笔记(1)
  • 26考研资料分享考研资料合集 百度网盘(仅供参考学习)
  • [250330] OpenAI 发布 GPT-4o 图像生成:实用主义的图像生成时代到来 | Maple Mono v7.0 发布
  • AI 智能体(AI Agent):概念、历史、现状与展望
  • OpenManus安装部署和基础使用说明
  • 【boost搜索引擎】下
  • 鸿蒙开发踩坑记录 - 2024S1
  • PROMPT 速查
  • 对象和面向对象三大特征:封装
  • RAG 在 AI 助手、法律分析、医学 NLP 领域的实战案例
  • 并行治理机制对比:Polkadot、Ethereum 与 NEAR
  • DDR简介
  • 【工程开发】Qwen2.5-VL-32B-Instruct 微调(三)
  • ARM边缘计算时代:BLIoTLink如何打通设备互联任督二脉
  • 超级预告新豪轩门窗吉尼斯世界纪录挑战暨百媒共探国家级绿色工厂
  • Qt常用控件第一部分
  • 计组(蒋)期末不挂科纲要
  • Flutter入门(完整教程)
  • 19信号和槽_信号和槽的基本概念
  • 406. 根据身高重建队列
  • Docker 构建镜像异常报错解决
  • 深入剖析Linux常用命令,助力高效操作
  • 23.6 CharGLM多模态API实战:24k上下文角色一致性优化全解析