gpt4 book ai didi

c++ - 无法获取字符串以从文本文件中打印随机行

转载 作者:行者123 更新时间:2023-11-28 03:24:21 25 4
gpt4 key购买 nike

我不久前拿起这段代码,作为从文本文件中选择随机行并输出结果的方法。不幸的是,它似乎只输出它选择的行的第一个字母,我不知道为什么要这样做或如何修复它。任何帮助将不胜感激。

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
using namespace std;

#define MAX_STRING_SIZE 1000

string firstName()
{
string firstName;
char str[MAX_STRING_SIZE], pick[MAX_STRING_SIZE];
FILE *fp;
int readCount = 0;

fp = fopen("firstnames.txt", "r");
if (fp)
{
if (fgets(pick, MAX_STRING_SIZE, fp) != NULL)
{
readCount = 1;
while (fgets (str, MAX_STRING_SIZE, fp) != NULL)
{
if ((rand() % ++readCount) == 0)
{
strcpy(pick, str);
}
}
}
}
fclose(fp);
firstName = *pick;
return firstName;
}

int main()
{
srand(time(NULL));

int n = 1;
while (n < 10)
{
string fn = firstName();
cout << fn << endl;
++n;
}

system("pause");
}

最佳答案

 firstName = *pick;

我猜这是问题所在。

pick 这里本质上是指向数组第一个元素的指针,char*,所以当然*pick 的类型为 char.. 或数组的第一个字符。

另一种查看方式是 *pick == *(pick +0) == pick[0]

有几种方法可以修复它。最简单的就是执行以下操作。

return pick;

The constructor将自动为您进行转换。

关于c++ - 无法获取字符串以从文本文件中打印随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14548508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com