将文本文件读入2D数组,但数组开始输出超出数组[39][]的任何内容的乱码 我在C++程序设计课程中,题目有问题。我正在阅读所有学生提交的一份俳句文本文件,我知道其中一半甚至不是使用c型字符串的2D数组中的适当俳句,这是作业的要求,因此我希望答案侧重于在回答中使用c型字符串

将文本文件读入2D数组,但数组开始输出超出数组[39][]的任何内容的乱码 我在C++程序设计课程中,题目有问题。我正在阅读所有学生提交的一份俳句文本文件,我知道其中一半甚至不是使用c型字符串的2D数组中的适当俳句,这是作业的要求,因此我希望答案侧重于在回答中使用c型字符串,c++,C++,当我输出存储在数组中的内容以确认所有内容都已正确复制时,就会出现问题。一旦它开始在数组[I]中打印I>40的任何内容,它就开始打印乱七八糟的内容 我把范围缩小到第40行,第42行,开始打印胡言乱语,这是完全胡言乱语。文件正在正确打开,我正在检查循环的每个实例的文件损坏情况 //function for extracting text file into array void getHaikus (ifstream& in, char haikuArray[][HAIKU_ARRAY_CO

当我输出存储在数组中的内容以确认所有内容都已正确复制时,就会出现问题。一旦它开始在数组[I]中打印I>40的任何内容,它就开始打印乱七八糟的内容

我把范围缩小到第40行,第42行,开始打印胡言乱语,这是完全胡言乱语。文件正在正确打开,我正在检查循环的每个实例的文件损坏情况

//function for extracting text file into array
void getHaikus (ifstream& in, char haikuArray[][HAIKU_ARRAY_COL])
{

  int i, j;
  char str[50];  //ctype string variable

  for(i=0;i<HAIKU_ARRAY_ROW && !in.eof();i++)           
    {
       in.getline(str, 50);             //read line into temp string
       strncat(haikuArray[i], str, 50); //concatenate temp string into array

       if(!in.good())                 //check for file corruption during loop
          {
          cout << "file corrupt mid extraction\n";
          cout << "i value is: " << i << endl;
          exit(1);
          }
    }


  return;
}
实际产量:

To sit on blue *
Surronded, * birds rest,
* one last time.
.
.
.
Autumn is a *
And a very * one
* all the time
A candlelit *,
¼Cause * pumpkins to glow,
* October.
¾My nd they both like the *
o_Ò¾* is awesome
数组[40]以“原因*南瓜”一行开头


对任何格式错误深表歉意,这是我第一次将该网站用作海报。谢谢你能提供的任何帮助

为什么要使用strncat?将一个字符串附加到另一个字符串的。看起来您需要strncpy,它复制一个字符串,而不需要使用以null结尾的字符串初始化目标内存稻谷


就是这样。从使用strncat切换到strncpy解决了这个问题。

如果这是您第一次使用该网站作为海报,那么您应该采取、阅读和提出问题。但是,由于您没有这样做,您显示的代码无法满足a的所有要求,因此,除了随机猜测您的问题可能是什么之外,不太可能有人会帮助您。如果你的目标是学习C++,那么你很可能无法正确地初始化任何传入的数组,如果你的目标是学习C++,为什么要使用这个旧的C库函数,这只是一个猜测。为什么你使用StnCAT?将一个字符串附加到另一个字符串的。看起来您需要strncpy,它复制一个字符串,而不需要使用以null结尾的字符串初始化目标内存。
To sit on blue *
Surronded, * birds rest,
* one last time.
.
.
.
Autumn is a *
And a very * one
* all the time
A candlelit *,
¼Cause * pumpkins to glow,
* October.
¾My nd they both like the *
o_Ò¾* is awesome