c - 在 C 中将 char 转换为 char*
问题描述
我有一个 char 数组s[11]="0123456789";
,我希望能够获取每个数字s[i]
(使用 for 循环)并以某种方式将其转换为 a char*
(我需要一个 char*,特别是因为我需要在其他字符串上使用 strncat)
在过去的 4 个小时里,我一直在尝试这样做,但我什么也做不了。
解决方案
除非您愿意临时修改s
,或将角色复制到其他地方……否则您将很难过。
s
临时修改。
int main() {
char s[11] = "0123456789";
for (int i = 0; i < strlen(s); i++) {
// Modify s in place.
const char tmp = s[i+1];
s[i+1] = '\0';
char *substr = &s[i];
// Do something with substr.
printf("%s\n", substr);
// Fix s
s[i+1] = tmp;
}
}
或者复制s[i]
到一个新的字符串。
int main() {
char s[11] = "0123456789";
for (int i = 0; i < strlen(s); i++) {
// Create a temporary string
char substr[2];
substr[0] = s[i];
substr[1] = '\0';
// Do something with substr.
printf("%s\n", substr);
}
}
或者也许只是不使用 strncat?
假设您实际上正在使用strncat
或类似...这些功能非常简单,特别是如果您只附加一个字符。您可能只是创建自己的版本。
void append_character(char *buffer, int buffer_size, char new_character) {
int length = strlen(buffer);
if (length + 2 < buffer_size) {
buffer[length] = new_character;
buffer[length+1] = '\0';
} else {
// No space for an additional character, drop it like strncat would.
}
}
或者您可以将其作为 strncat 的简单包装器:
void append_character(char *buffer, int buffer_size, char new_character) {
char new_string[2] = { new_character, '\0' };
strncat(buffer, buffer_size, new_string);
}
推荐阅读
- java - Java/SQL Server 中的预处理语句不返回任何结果
- cmake - CMake 自定义命令生成非配置文件
- assembly - 如何声明对结构的引用
- pyspark - 将 Spark DF 列的条件和输出到变量
- python - 如何在条件下分组/标记到同一组
- android - Flutter - 如何滚动到列表视图的底部?
- android - Google Play 中的应用更新 - 2021 年 11 月 1 日
- linux - sed 命令不删除行
- python - 无法使用逗号分隔符和换行符附加到 txt 文件
- google-apps-script - 如何使用 onEdit 脚本有效地将列标题包含到 json