如何解决"No source available for " msvcrt!fgets() " " 的问题
How to resolve the issue "No source available for "msvcrt!fgets() " "
代码
#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;
}
问题:
程序编译良好,但在控制台中没有结果
在调试模式
我收到错误消息"No source available for"msvcrt!fgets((">
这是操作系统问题还是我需要安装任何库?
现在的代码问题是inval
和inarray
都没有初始化,因此您将向任意内存位置读取多达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++ - 程序接收信号SIGSEGV,分段错误.In msvcrt!memcpy () (C:\Windows\S
- 代码在 msvcrt .dll函数上设置断点失败
- 如何使用 FGETS 获取文本,并保存 std::string
- 在C++中使用哪个函数来输入多个单词,比如C中的fgets
- 使用 fgets() 从键盘读取时从以前的输入读取换行符
- 如何故意触发 fgets() 中的错误?
- C++:使用 fgets() 读取字符输入时出错
- 使用 fgets() c++ 读取大型 txt 文件时的 CPU 使用率为 99%
- FGETS()不采用输入
- 为什么我不能在另一台电脑上运行自己的dll(msvcrt.dll被错过)
- C++相当于从 popen 阅读的 fgets s
- C++ - fgets() 在按下 Enter 时忽略后续输入
- fgets vs. std :: fgets- fgets错过了线条
- 自(vs2012/2010/2013)以来,msvcrt是否使用不同的堆进行分配
- fgets内部的矢量类型
- 链接到系统C库msvcrt.dll
- Segmentation violation: while(fgets(buffer,15,statfile)!=NUL
- 尝试解决链接器警告:默认库'MSVCRT'与使用其他库冲突
- LNK 2005链接器出现msvcrt.lib(MSVCR90.dll)问题
- 如何解决"No source available for " msvcrt!fgets() " " 的问题