【发布时间】:2015-03-03 12:45:37
【问题描述】:
在 C++ 中,如果您想输入一个字符串并将其存储在索引 1 的 char 数组中,您可以执行以下操作:
ifstream f("data.in");
char a[100];
f.get(a+1,90);
有什么方法可以在 C 中做到这一点(比如使用 fscanf)?这样做:
fscanf(f,"%s",&a+1);
或者这个:
fscanf(f,"%s",&(a+1));
没用。
【问题讨论】:
-
a已经是一个指针,你不必使用& -
a+1应该也能正常工作 -
使用 fscanf(f, "%s", a+1);
-
&a + 1在a的开头之外生成一个100 字节的地址,因为在这种情况下&a是char (*)[100],并且将指针递增1 会将其跳转对象的大小被指向(在这种情况下是一个 100 字节的数组)。一个好的编译器也会抱怨预期的char *和实际的char (*)[100]之间的类型不匹配。
标签: c arrays string char scanf