seo批量建站方法全国疫情最新情报
续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 &