我希望您能帮助了解用户对以下可以产生输出的程序的输入:U%ae'$ffq' ong string
int main(void) {
int i=0;
char j[22]="This is a long string", k[3];
scanf("%2s ", k);
sprintf(j, k);
printf("%s", j);
for (; i< 21; printf("%c", j[i++]))
;
return 1;
}
我不明白几件事:
k 只能从用户那里得到两个字符——这是什么"%2s"
意思,不是吗?然后将数组 k 指向的内容写入 j 指向的数组中,因此j
不指向 k,但如果我们j[5]
仍然会得到i
. 所以我不明白我们怎么能得到这个输入,因为输入将被切成两个字符j[0], j[1]
,这两个字符是输入中的两个字符,其余的j[i]
将是“这是一个长字符串”的原始其余部分。