我似乎无法理解对该计划的期望。谁能帮我?我是一名绝对无知的一年级学生。
编写一个读取文本行的程序,并将它们附加到char缓冲区[1000]。通过调用cin.get(ch)一次读取一个字符,其中ch是char类型的变量。使用输入重定向。读完1,000个字后停止。在阅读文本时,将所有换行符'\ n'替换为'\ 0'终结符。建立一个数组char * lines [100],以便该数组中的指针指向文本中行的开头。如果输入有更多行,则仅考虑100个输入行。然后以相反的顺序显示行,从最后一个输入行开始。 这就是我到目前为止所做的:
#include <iostream>
using namespace std;
int main()
{
const int BUFFER_CAPACITY = 1000;
const int LINES_CAPACITY = 100;
char buffer[BUFFER_CAPACITY];
char* lines[LINES_CAPACITY];
int buffer_position = 0;
int lines_position = 0;
bool more = true;
bool newline = true;
while (more)
{
char c = cin.get();
if (cin.fail())
{
more = false;
}
else if (buffer_position >= BUFFER_CAPACITY) // at (or above) capacity
{
more = false;
}
if (newline)
{
if (lines_position < LINES_CAPACITY)
{
lines[lines_position] = buffer + buffer_position;
lines_position++;
newline = false;
}
else { more = false; }
}
if (more)
{
if (c == '\n')
{
buffer[buffer_position] = '\0';
buffer_position++;
newline = true;
}
else
{
buffer[buffer_position] = c;
buffer_position++;
}
}
}
buffer[BUFFER_CAPACITY - 1] = '\0';
for (int i = lines_position - 1; i >= 0; i--)
{
cout << lines[i] << endl;
}
return 0;
}
答案 0 :(得分:2)
1)对于初学者来说,使用更高级语言的全部要点之一,例如&#34; C ++&#34;是让你远离处理&#34;指针&#34; (除非绝对必要)。或者,就此而言,让你远离低级C字符串。所以,对于入门课程来说,这听起来很糟糕:(
2)关于&#34;改变&#39; \ n&#39;到&#39; \ 0&#39;&#34;意味着每次你点击&#34;返回&#34; - 获得一个新行 - 在您的输入中,您将其视为缓冲区中的单独字符串。
3)您需要
的计数器 到目前为止#/字符输入(#/你已完成&#34; cin&#34;并且读取一个字符,最多1000个)
#/行到目前为止(#/你阅读的时间&#39; \ n&#39;,最多100行)
#/ words(#/你已经添加&#39; \ 0&#39;到你的缓冲区)
答案 1 :(得分:0)
所以听起来你的老师要你读一段文本并把它放在缓冲区[1000]中,将每行文本的末尾(应该是换行符)转换为以null结尾的字符串,然后将每个新制作的字符串放入行[100] - 检查您是否超过任何一个数组的边界。
所以你的算法就像