string转int c

「string转int c」指的是在 C 语言中把字符串形式的数字转换成整数类型,常见于从输入、文件或网络数据里读出文本后需要参与计算的场景。它和 C 标准库的转换函数、字符串解析以及错误处理密切相关。
基本含义与常见用途
在 C 语言里,字符串是字符数组,整数是数值类型,两者不能直接混用。把 `"123"` 这样的文本变成 `123`,才能做加减乘除、比较大小或作为数组下标。常见做法包括 `atoi`、`strtol`、`sscanf` 等。`atoi` 写法简单,但遇到非数字内容时行为不够透明;`strtol` 能返回结束位置并设置错误标志,更适合需要判断输入是否合法的场合;`sscanf` 则适合从格式固定的文本中提取整数。
常见问题
最常见的问题是忽略错误检查:字符串里混有字母、空格或超出 int 范围时,转换结果可能不符合预期。`atoi` 在无法转换时返回 0,无法区分“真的是 0”和“转换失败”。另外,前导空格、正负号、进制前缀(如 `0x`)都会影响解析结果。若字符串表示的数超过 `int` 范围,还会发生溢出,需要改用 `long` 或 `strtol` 并检查 `errno`。
怎么判断与怎么选
如果只是处理可信的、格式简单的数字文本,`atoi` 够用;如果输入来自用户或外部文件,建议用 `strtol`,并检查第二个参数是否指向字符串末尾、`errno` 是否被置位。需要解析多个字段时,`sscanf` 更省事,但要留意返回值表示成功赋值的项数。无论选哪种,都应先确认字符串非空、长度合理,再决定是否转换,避免把非法文本当成有效整数使用。