C语言函数能否仅传入字符串,在函数内部获取其长度?
可行方法说明
如果你的字符串是标准C风格的以'\0'结尾的字符串,完全可以只传字符串指针,在函数内部用strlen()获取有效长度,不用手动传参。
具体实现
修改后的调用代码
char text2[] = "Hello!!"; write_coord_screen(2, 2, text2, FB_BLACK, FB_WHITE);
函数内部调整
#include <string.h> // 必须引入这个头文件才能使用strlen void write_coord_screen(int x, int y, char* text, int fg_color, int bg_color) { // 获取字符串有效长度(不包含末尾的'\0') size_t str_len = strlen(text); // 后续用str_len处理字符串即可 }
注意要点
- 必须保证传入的字符串以'\0'结尾,否则
strlen()会越界读取内存,触发未定义行为(比如乱码、程序崩溃)。 - 如果你原本用
sizeof(text2)是想包含末尾的'\0',可以用strlen(text) + 1得到包含终止符的总字节数。 - 如果字符串里需要存储'\0'(比如二进制数据、特殊格式文本),那这种方法就不适用,还是得手动传递长度。
内容的提问来源于stack exchange,提问作者Shintaro
相关产品推荐
相关产品推荐

