C++使用ARCC和ARGV读取文本文件

C++使用ARCC和ARGV读取文本文件,c++,C++,.txt有15个数字,最后一个数字是15 1。我试图计算我在.txt文件中的数字索引中保存了多少。2.使用索引创建我的动态数组大小。3.将所有数字保存到我的动态数组中 问题:如何将char动态数组覆盖到int动态数组 我的终端中有垃圾输出: ////////// new update!!!!! ////////// ////////旧的///////don-read/////i想知道如何使用argc和argv读取文件:numbers.txtnumbers inside。 我的目标是:在终端中读

.txt有15个数字,最后一个数字是15 1。我试图计算我在.txt文件中的数字索引中保存了多少。2.使用索引创建我的动态数组大小。3.将所有数字保存到我的动态数组中

问题:如何将char动态数组覆盖到int动态数组

我的终端中有垃圾输出:

////////// new update!!!!! //////////
////////旧的///////don-read/////i想知道如何使用argc和argv读取文件:numbers.txtnumbers inside。 我的目标是:在终端中读取带有我的./sort的文件,如:./sort number 然后使用缓冲区和索引来计算里面有多少个数字,使用索引来创建动态数组,最后我再次读取文件,但使用atoi将所有数字更改为int

在终端中键入:./排序编号后,我得到了分段错误:11

有人能帮我吗?我需要这些数组来排序我的号码。 到目前为止,我已经做到了:

Open sucessues!!  
index: 15
buffer: 15
0
1073741824
0
1073741824
2136670223
32767
-1680479188
32767
0
0
0
0
0
0
0

int main(int argc, char* argv[])
{

char *nPtr = argv[1];
char *buffer = new char[5];
int index = 0;



ifstream fin(nPtr); //open the file
if (argc > 1){

// allocate the memory
if(!fin){

cout << "can't read the file!!" << endl;  
return -1;
}

if(fin){

    cout << "Open sucessues!! " << endl;
}




while (!fin.eof()){

fin >> buffer;
index++; //counting here!!!
}

cout << "index: " << index << endl; //print out the counting results!
cout << "buffer: " << buffer << endl; // checking the last number!  should "15"

delete[] buffer; // 
buffer = NULL;

int *number = new int[index]; 
char *temp = new char[index];
int *home = number; //home

while(!fin.eof()){

    fin >> temp;
    *number= atoi(temp); //im confessing right here!!!
    number++;
    temp++;
}



number = home;

for (int i = 0; i < index; ++i)
{
    cout << *number << endl;  //*number print out garbage, i don't know why!
    number++;
}




fin.close( );
}

return 0;
}
/////************
创建一个由三个指向字符的指针组成的数组。它不分配任何指向的存储。它不分配任何要指向的存储。这些指针可能指向任何东西。有效记忆,无效记忆,你哥哥的色情藏品,你不知道。如果幸运的话,它们将指向无效内存,您的程序将崩溃

char *buffer[3];
尝试将从文件读取的字符串放入上面三个指针中的第一个指针指向的内存中。因为我们不知道它们指向何处,所以我们不知道文件中的输入将写入何处。很有可能它会尝试写入无效内存,程序会崩溃

char *buffer[3];
要解决此问题,请分配一些存储,将指针指向此存储,然后读入指针

例如

后来

char *buffer[3];
char storage[128];
buffer[0] = storage;
也就是说,我认为这根本不是你想要的。更有可能

fin >> *buffer;
应该是

char *buffer[3];
那么

char buffer[3];
将文件中的一个字符读入缓冲区,所以这可能也是一个输入错误,并且

fin >> *buffer;
这就是我们想要的。警告如果从fin读取的字符串长度超过2个字符,则仍有可能崩溃。你可能想重新思考一下这个问题


如果允许使用和,但鉴于这仍然是学期初,您的讲师可能希望通过让您用石头敲击东西,或者将树枝摩擦在一起生火来教您编码。

在索引到argv之前,您需要检查argc。验证用户是否为您的程序提供了正确数量的参数。请不要添加不相关的语言标记。JAVAC??您只为缓冲区分配了3个字符。如果fin中有3个以上的字符,您将覆盖缓冲区-未定义的行为可能会崩溃。同时读取。写入取消引用未初始化指针导致分段错误您是世界上最好的,我想说我爱您嗨,这里还有一点小麻烦。我这里有15个索引,我把它放进我的int*number=newint[index];用while!fin.eof。如何使用atoi将所有字符串数字转换为整数,我想首先将其保存到缓冲区中,即atoibuffer;和*number=缓冲区。我能不能这样做?我是这样做的:开放式成功!!指数:15 0-2684354560-268435456 2136670224 32767-1680479189 32767 2136686792 32767-1680479188 32767 0xi@stacker用新代码发布新问题。2个原因1添加更多的片段会混淆这个问题,2我现在不知道您的代码是什么样子。
fin >> *buffer;
fin >> buffer;