【发布时间】:2022-01-09 23:16:04
【问题描述】:
我有字符指针输入并为其设置了 50 字节的内存。在我使用 scanf 从键盘输入后,例如“apple”,然后我假设剩余的空格用空字符填充。如果是这样,我如何获取所有字符或内存位置,包括空字符的位置。有什么办法吗?
int main() {
char *input;
int size;
input = (char *)malloc(50);
printf("%s\n", "enter something:");
scanf("%s", input);
size = strlen(input) + 1;
【问题讨论】:
-
你不能使用
scanf,至少没有用处。你无法知道它读了多少,这是需要的。可以使用fread和read。 -
什么是“获取”?把他们带到哪里? “我假设剩余的空格用空字符填充” - 是一个不正确的假设。您只能在字符串末尾假设 一个 空字符。
-
请注意
scanf("%s", input);容易受到内存溢出的影响。如果用户输入 50 个或更多字符,您将进入未定义的行为领域。这可以并且已经被用于邪恶目的。正是as dangerous asgets()。 -
then i assume that remaining spaces are filled with null character.。这个假设是无效的。 -
那么如果字符串末尾只有一个字符填充了空字符,那么其他空格是否填充了垃圾值?
标签: c pointers memory malloc null-character