c - 当你用c中的gets()函数获取它时,如何在char数组的后面添加一个字符?

标签 c arrays string

我有一个字符数组,我使用 gets() 在其中输入信息。

char inname[30];
gets(inname);

如何在不知道 c 中字符串长度的情况下向该数组添加另一个字符? (真正的字母部分,不像romething的空内存空间)

注意:我的缓冲区足够长,可以满足我想问用户的问题(一个文件名,可能没有多少人的名字超过 29 个字符)

最佳答案

注意 gets 容易出现缓冲区溢出,应该避免。

读取一行输入:

char inname[30];
sscanf("%.*s", sizeof(inname), inname);
int len = strlen(inname);
// Remove trailing newline
if (len > 0 && inname[len-1] == '\n') {
    len--;
    inname[len] = '\0'
}

附加到字符串:

char *string_to_append = ".";
if (len + strlen(string_to_append) + 1) <= sizeof(inname)) {
    // There is enough room to append the string
   strcat(inname, string_to_append); 
}

将单个字符附加到字符串的可选方法:

if (len < sizeof(inname) - 2) {
    // There is room to add another character
   inname[len++] = '.'; // Add a '.' character to the string.
   inname[len] = '\0';  // Don't forget to nul-terminate
}

关于c - 当你用c中的gets()函数获取它时,如何在char数组的后面添加一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28453221/

相关文章:

c++ - Makefile中的隐式规则中的-c标志出现错误

java - 关于Java中数组的引用

java - 如何将 HashMap 转换为条目数组

java - 如何优化算法以能够在java中确定10位长素数

javascript - 第一个功能是如何工作的?

javascript - 如何用字符串数组(js)搜索字符串?

c - 内存分配,C中的段错误

c - 13.1.4 之前的 LXVD2X 是否有内置的 XL C?

c - Linux C套接字-Recvmsg-获取源ifindex

java - 根据字符串移动 Recyclerview 项目位置