【发布时间】:2021-12-23 12:18:36
【问题描述】:
我正在尝试打印字符串的 80 个字符,增加 80 个字符,然后再打印 80 个字符。
目前这一行:
offset = myString + 80; 只是指向 myString 数组的开头,而不是指向 myString[80]。我希望它打印不同的结果,但我的输出两次都是一样的。
结果输出:在 vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praese
#include <stdio.h>
void main()
{
char myString[1024] = "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praeseAt vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.";
char buf[80];
char* offset;
sscanf(myString, "%80c", buf);
fwrite(myString , 1 , 80 , stdout);
printf("\n");
offset = myString + 80;
sscanf(offset, "%80c", buf);
fwrite(offset , 1 , 80 , stdout);
}
【问题讨论】:
-
您为什么认为该行正在复制数组?你怎么检查?你具体测试了什么,结果是什么,你期望的结果是什么?
-
不是复制,但我的偏移量指针指向 myString 的内存位置。我通过在将偏移设置为 myString + 80 后单独打印偏移来检查这一点。我的预期结果是将偏移设置为指向 myString[80],然后读取 myString 的下 80 个字符。实际发生的是它只打印与以前完全相同的 80 个字符。
-
inc(a);是a = a + 1; -
myString不是硬编码为索引 0-79 和索引 80-159 相同吗?看起来一样。 -
如果你有一个字符串 "abcdabcd" 并且你打印索引 0-3 和索引 4-7 它们看起来是一样的。这就是你在这里所做的。