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

atoi函数,sprintf函数,memcmp函数,strchar函数的具体原型,功能,返回值;以及使用方法

以下是这四个C语言标准库函数的详细说明:

1. `atoi()` - 字符串转整数
**原型**:
int atoi(const char *str);
**功能**:
将字符串参数`str`转换为整数(`int`类型)。函数会跳过前面的空白字符(如空格、制表符),直到找到第一个非空白字符。然后它会解析数字字符,直到遇到非数字字符为止。
**返回值**:
- 成功:返回解析得到的整数值
- 失败:如果没有可解析的数字或发生溢出,返回0
**使用示例**:

#include <stdio.h>
#include <stdlib.h>int main() {char *str1 = "12345";char *str2 = "   -42";char *str3 = "123abc";char *str4 = "abc123";printf("atoi(\"%s\") = %d\n", str1, atoi(str1)); // 12345printf("atoi(\"%s\") = %d\n", str2, atoi(str2)); // -42printf("atoi(\"%s\") = %d\n", str3, atoi(str3)); // 123printf("atoi(\"%s\") = %d\n", str4, atoi(str4)); // 0
}


 2. `sprintf()` - 格式化输出到字符串
**原型**:
int sprintf(char *str, const char *format, ...);
**功能**:
将格式化的数据写入字符串`str`。参数列表与`printf()`类似,但输出结果存储在`str`中而非标准输出。
**返回值**:
- 成功:返回写入的字符数(不包括终止空字符`\0`)
- 失败:返回负值
**使用示例**:

#include <stdio.h>int main() {char buffer[50];int num = 123;float f = 3.14159;char *str = "hello";// 格式化整数和浮点数sprintf(buffer, "整数: %d, 浮点数: %.2f", num, f);printf("Buffer: %s\n", buffer); // "整数: 123, 浮点数: 3.14"// 拼接字符串sprintf(buffer, "结果: %s, 数字: %d", str, num);printf("Buffer: %s\n", buffer); // "结果: hello, 数字: 123"
}


3. `memcmp()` - 内存块比较
**原型**:
int memcmp(const void *s1, const void *s2, size_t n);
**功能**:
比较两个内存块`s1`和`s2`的前`n`个字节。比较是按字节进行的,处理的是原始二进制数据。
**返回值**:
- 若`s1`和`s2`的前`n`个字节相等,返回0
- 若按字典序`s1`小于`s2`,返回负值
- 若按字典序`s1`大于`s2`,返回正值
**使用示例**:

#include <stdio.h>
#include <string.h>
int main() {char s1[] = "abc";char s2[] = "abd";int result;result = memcmp(s1, s2, 3);printf("比较结果: %d\n", result); // -1 (ASCII 'c' < 'd')result = memcmp(s1, s2, 2);printf("比较结果: %d\n", result); // 0 (前两个字符相同)
}


4. `strchr()` - 查找字符在字符串中首次出现位置
**原型**:
char *strchr(const char *s, int c);
**功能**:
在字符串`s`中查找字符`c`的首次出现位置(包括终止符`\0`)。参数`c`被转换为`char`类型进行比较。
**返回值**:
- 成功:返回指向该位置的指针
- 失败:若未找到`c`,返回`NULL`
**使用示例**:

#include <stdio.h>
#include <string.h>
int main() {char *str = "hello world";char *ptr;ptr = strchr(str, 'o');if (ptr) {printf("找到字符 'o' 在位置: %ld\n", ptr - str); // 4printf("剩余字符串: %s\n", ptr); // "o world"}ptr = strchr(str, 'z');printf("查找 'z' 的结果: %p\n", (void*)ptr); // NULL
}


注意事项:
1. **atoi()**:
   - 不检查溢出,可能导致未定义行为
   - 推荐使用更安全的`strtol()`替代
2. **sprintf()**:
   - 可能导致缓冲区溢出
   - 推荐使用`snprintf()`并指定缓冲区大小
3. **memcmp()**:
   - 比较二进制数据,包括字符串中的`\0`
   - 常用于非字符串数据(如结构体、数组)
4. **strchr()**:
   - 查找字符包括终止符`\0`
   - 使用`strrchr()`查找字符的最后一次出现位置

http://www.xdnf.cn/news/6379.html

相关文章:

  • 现代计算机图形学Games101入门笔记(六)
  • 19、云端工业物联网生态组件 - 工厂能效与预测维护 - /数据与物联网组件/cloud-iiot-factory-analysis
  • 紫外波段太阳光模拟器介绍
  • Python Matplotlib 库【绘图基础库】全面解析
  • 在UI 原型设计中,交互规则有哪些核心要素?
  • 数据统计分析及可视化
  • 开源 Web Shell 工具
  • 万文c++继承
  • 前端表格滑动滚动条太费事,做个浮动滑动插件
  • Java基于SpringBoot的外卖系统小程序【附源码、文档说明】
  • 功能连接计算的科学选择:静息态fMRI中20种指标的全面评估
  • 卓力达红外热成像靶标:革新军事训练与航空检测的关键技术
  • FastAPI系列16:从API文档到TypeScript 前端客户端(SDKs)
  • 3天重庆和成都旅游规划
  • 【PmHub后端篇】PmHub集成 Sentinel+OpenFeign实现网关流量控制与服务降级
  • acwing 4275. Dijkstra序列
  • 二叉树复习(C语言版)
  • 国标GB28181视频平台EasyGBS打造交通道路/停车场/公共场所违章视频监控解决方案
  • keil编译时报错:error:Could not open file .\***\core_cm3.o(最有用的方法没有之一!!!)
  • 代码随想录算法训练营第三十九天(打家劫舍专题) | 198.打家劫舍、213.打家劫舍II、337.打家劫舍III
  • Windows更新暂停七天关键注册表
  • 无人机箱号识别系统结合5G技术的应用实践
  • 数字IC后端零基础入门基础理论(Day2)
  • AD 间距规则与布线规则
  • GaussDB 实例 gsql 连接方式详解
  • 在python中使用Json提取数据
  • [思维模式-38]:看透事物的关系:什么是事物的关系?事物之间的关系的种类?什么是因果关系?如何通过数学的方式表达因果关系?
  • 第五部分:第三节 - Express.js 框架入门:厨房的流程管理系统
  • 力扣-102.二叉树的层序遍历
  • 在 Ubuntu 20.04.6 LTS 中将 SCons 从 3.1.2 升级到 4.9.1