我有一个字符数组,我使用 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/