2023.5.19学习记录puts库函数

puts:
库函数是指预先编写好的、封装在库文件中的函数。它们可以直接调用,而不需要程序员自己编写代码。puts就是一个库函数,它封装在C语言的标准输入输出库<stdio.h>中。

puts和printf都可以用来在屏幕上输出字符串,但它们之间有一些区别。首先,puts只能输出字符串,而printf可以输出多种类型的数据,包括整数、浮点数、字符和字符串等。其次,puts在输出字符串后会自动换行,而printf不会,想要换行需要手动\n,例如:

#include <stdio.h>
    int main()
    {
        char str[] = "Hello, world!";
        puts(str);
        printf("%s", str);
        puts(str);
        printf("%s", str);
        return 0;
    }


这段代码将在屏幕上输出三行字符串,第一行是由puts输出的,第二行是由printf和puts输出,因为printf后面没有换行符。第三行由puts输出,因为第二行的第二个字符串,由puts输出,所以它有换行符。

输出结果为:

Hello, world!
Hello, world!Hello, world!
Hello, world!
D:\C文件\2023.04\Project2\Debug\Project2.exe (进程 24652)已退出,代码为 0。
按任意键关闭此窗口. . .

### VxWorks 中 `mktime` 函数的使用说明 在嵌入式实时操作系统 (RTOS) VxWorks 中,`mktime` 是用于将本地时间结构 (`struct tm`) 转换为自纪元以来的时间秒数的一个标准库函数[^1]。此功能遵循 POSIX 标准定义的行为。 以下是关于 `mktime` 的具体描述及其用法: #### 函数原型 ```c time_t mktime(struct tm *timeptr); ``` - 参数 `timeptr` 是指向 `struct tm` 类型的指针,表示一个分解后的本地时间。 - 返回值是一个 `time_t` 值,代表从 1970 年 1 月 1 日 UTC 时间起经过的秒数。如果转换失败,则返回 `-1` 表示错误[^2]。 #### 使用注意事项 当调用 `mktime` 时,输入参数中的某些字段可以设置为超出其正常范围的值,例如月份设为 13 或小时设为 25。在这种情况下,该函数会自动调整这些超界值到合法范围内并更新整个日期/时间对象的内容[^3]。 #### 示例代码 下面展示了一个简单的例子来演示如何利用 `mktime` 将指定年份、月份和其他组件组合成绝对时间戳: ```c #include <stdio.h> #include <time.h> int main() { struct tm time_info = {0}; // 设置目标时间为 2023 年 10 月 5 日上午 8 点整 time_info.tm_year = 2023 - 1900; /* Year since 1900 */ time_info.tm_mon = 9; /* Month of the year (Jan=0, Dec=11)*/ time_info.tm_mday = 5; /* Day of month */ time_info.tm_hour = 8; /* Hour of day (midnight=0) */ time_info.tm_min = 0; time_info.tm_sec = 0; time_t result = mktime(&time_info); if(result != (time_t)-1){ printf("The resulting timestamp is %ld\n", (long)result); char buffer[80]; strftime(buffer, sizeof(buffer), "%a %b %d %H:%M:%S %Y", &time_info); puts(buffer); }else{ perror("Error calling mktime"); } return 0; } ``` 上述程序片段创建了一种特定情况下的时间点,并通过 `strftime()` 打印出可读形式的结果字符串[^4]。 #### 错误处理机制 需要注意的是,在实际开发过程中可能会遇到一些特殊情况,比如由于闰年计算不当或者非法输入数据引起的异常状况。因此建议开发者始终验证 `mktime` 是否成功执行以及检查最终生成的时间是否符合预期逻辑[^5]。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值