【问题标题】:fscanf string(char array) from index 1索引 1 的 fscanf 字符串(字符数组)
【发布时间】: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 + 1a 的开头之外生成一个100 字节的地址,因为在这种情况下&achar (*)[100],并且将指针递增1 会将其跳转对象的大小被指向(在这种情况下是一个 100 字节的数组)。一个好的编译器也会抱怨预期的char * 和实际的char (*)[100] 之间的类型不匹配。

标签: c arrays string char scanf


【解决方案1】:

是的,就是这样

fscanf(f,"%90s",a+1);

【讨论】:

  • 这是限制fscanf必须读取的字符数,我想这就是f.get(a+1,90)所做的。
  • 第三个参数也是&a[1]
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多