使用scanf将文本中的字符串放入数组中

时间:2016-09-20 10:07:15

标签: c++ visual-studio-2015

我在将字符串读入数组时遇到了一些问题。我的文件包含从页面水平向下运行的以下字符串。

文件

dog
cat
rabbit
mouse

代码

#include <string>
int i = 0;
using namespace std;
int main()
{
    FILE * input1;
    fopen_s(&input1, "C:\\Desktop\\test.dat", "r");
    string test_string;
    while (!feof(input1)) {
        fscanf_s(input1, "%s", test_string);
        i++;
    }
    return 0;
}

任何建议都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

您应该使用ifstreamstd::getline

现在,我将使用ifstream

引导您阅读文件中的行

包含fstream以使用ifstream

#include <fstream>

打开文件

要打开文件,请创建ifstream的对象,并调用它的方法open并将文件名作为参数传递。 ifstream打开一个文件以从中读取。 (要在文件中写入,您可以使用ofstream

ifstream fin;
fin.open("C:\\Desktop\\test.dat");

或者您只需将文件名传递给构造函数即可创建ifstream对象并打开文件。

ifstream fin("C:\\Desktop\\test.dat");

从文件中读取

您可以使用流提取运算符(>>)从文件中读取,就像使用cin

一样
int a;
fin >> a;

使用上面创建的fin(使用char数组)从文件中读取

char arr[100];
fin.getline(arr, 100);

更好的是,您应该使用std::string代替char数组,使用std::string,您可以使用std::getline

读取一行
string testString;
getline(fin, testString);

现在,让我们更改您的代码以使用ifstreamgetline

#include <string>
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    int i = 0;
    ifstream input1;
    input1.open("C:\\Desktop\\test.dat");
    string test_string;

    while (getline(input1, test_string)) {
        i++;
    }

    return 0;
}