我希望您能帮助了解用户对以下可以产生输出的程序的输入: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]将是“这是一个长字符串”的原始其余部分。