C ++读取字符串和字符

时间:2018-10-13 15:16:03

标签: c++ string input output

大家好,我正在为CS班的一个项目工作,我不知道如何读取部分数据文件。

63f7hj-9 22个空格L这是正确的

我的数据文件由这一行数据组成,我必须弄清楚如何读取其中的一部分。我必须读入63并将其保存为整数,并且不需要f7hj-9。我还需要读入22个空格并将其另存为字符串,并将L保存为字符。

需要在控制台中输入短语“这是正确的吗”。

所以我的问题是,我如何只读入63并丢弃其余的? 将短语“ 22个空格”另存为字符串。 L作为字符 和短语“这是正确的”作为字符串。

我是C ++的新手,我已经开始从事该项目的工作,但是我坚持了这一部分。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

从文件读取输入并将行

63f7hj-9                      L Is this correct

拆分为整数(63),忽略7hj-9,然后读取space1字符串中的22个空格,然后读取字符L作为字符,字符串str2中的其余字符串“ Is this right”。
这是如何使用fscanf(或scanf)实现此目标的示例。

  • %d将读取整数,因为它是整数的格式说明符

  • 接下来,我们需要忽略文件中的“ f7hj-9”,因此只需按原样编写即可完成工作

  • 接下来,我们需要读取22个空格,因此%22c将读取22个字符,而不考虑该字符是换行符还是空格(此处为22个空格)

  • 接下来,我们需要读取一个字符,以便%c将其存储在char c中
  • 现在,另外一个%* c将忽略L后面的一个空格
  • 使用%[^ \ n] s将读取字符串的其余部分,直到换行为止


#include <stdio.h>
int main() {
  int n;
  char c;
  char space1[23];
  char str2[32];
  FILE *fp;
  fp = fopen("b.txt", "r");
  if(fp == NULL) {
    printf("Failed to open the file\n");
    return 1;
  }
  if(fscanf(fp, "%df7hj-9%22c%c%*c%[^\n]s", &n, space1, &c, str2) != 4) {
      printf("Read failure\n");
      return 1;
  }
  printf("Integer = %d\n", n);
  printf("Spaces = %sEnd\n", space1);
  printf("Character = %c\n", c);
  printf("String = %s", str2);
  return 0;
}


输入:

63f7hj-9                      L Is this correct

输出:

Integer = 63
Spaces =                       End
Character = L
String = Is this correct