gpt4 book ai didi

c++ - 如何解决问题 "No source available for "msvcrt!fgets() ""

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

代码

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
class Chkinval
{
char *inval;
char *inarray;
public:
void inPutProcessor();

};


void Chkinval::inPutProcessor()
{
cout << "Input" ;
fgets(inval,1000,stdin);
int tmp = atoi(inval);

for(int lpcnt=0;lpcnt< tmp;lpcnt++)
{
fgets(inarray,1000,stdin);
}
for(int lpcnt=0;lpcnt< tmp;lpcnt++)
{
cout << "The array elements" << inarray[lpcnt];
}
}

int main()
{

Chkinval tmp1 ;
tmp1.inPutProcessor();

return 0;
}

问题:

程序编译正常但控制台没有结果

在 Debug模式下

我收到错误消息“没有可用于“msvcrt!fgets()”的源”

这是操作系统问题还是我需要安装任何库?

最佳答案

现在代码的问题是 invalinarray 都没有被初始化,因此您要将多达 1000 个字节读入某个任意内存位置。

 for(int lpcnt=0;lpcnt< tmp;lpcnt++)
{
fgets(inarray,1000,stdin);
}

也可能不是您想要的(即使 inarray 已初始化),因为它会在每次迭代时覆盖内容。

 fgets(inval,1000,stdin);
int tmp = atoi(inval);

本身并没有错,但是您最好使用 fscanf(stdin, "%d", &tmp)(如果您正在编写 C 代码,请继续阅读)。

很多这些问题源于您的代码非常像 C。没有理由(除非是为了家庭作业)在 C++ 中自行管理那么多分配。下面是一个小示例,展示了执行某些操作的更多 C++ 方式:

#include <iostream>
#include <vector>
#include <string>

int main()
{
std::cout << "Number of elements to read? " << std::flush;

// How many lines should we read?
int count;
if (!(std::cin >> count) || count <= 0) {
std::cout << "Invalid element count" << std::endl;
return 1;
}


std::string line;
std::vector<std::string> lines;

// Read until EOF (to get newline from above reading)
if (!std::getline(std::cin, line)) {
std::cout << "Error reading line" << std::endl;
return 1;
}

// Read lines one at a time adding them to the 'lines' vector
for (int i = 0; i < count; i++) {
if (!std::getline(std::cin, line)) {
std::cout << "Error reading line" << std::endl;
return 1;
}
lines.push_back(line);
}

// Echo the lines back
for (std::vector<std::string>::const_iterator line_iterator = lines.begin(); line_iterator != lines.end(); ++line_iterator) {
std::cout << *line_iterator << '\n';
}
return 0;
}

关于c++ - 如何解决问题 "No source available for "msvcrt!fgets() "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330062/

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