【发布时间】:2016-09-01 20:58:56
【问题描述】:
我正在使用表格为指针进行可视化显示。 length 的第一个输入有效,但 mychars 没有被读取。我知道scanf 之后有一个新行,但我不知道它的行为如何。在我的特定情况下,mychars 的 scanf 是如何解析的?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int length;
printf("Length? ");
scanf("%d", &length);
char *mychars = (char *)calloc(length, sizeof(char));
printf("mychars? ");
scanf("%[^\n]s", mychars);
printf("mychars is \"%s\"\n", mychars);
printf("pointer at %p\n", mychars);
if (strlen(mychars) == length) {
printf("Address Location Value\n");
int i;
for (i = 0; i < length; i++) {
printf("%-10p *(mychars+%02d) %3c\n", (mychars+i), i, *(mychars+i));
}
} else {
print("Not right length");
}
free(mychars);
return 0;
}
【问题讨论】:
-
变量“不起作用”是什么意思?
-
@user3121023 谢谢。为什么会起作用?
-
顺便说一句:你如何检查
length和来自scanf(" %[^\n]s", mychars);的输入长度是否合适? -
@deamentiaemundi 我应该多写一个
if吗? -
%s允许添加字段宽度,您可以使用它。
标签: c pointers memory scanf truncate