2017-02-11 144 views
-2
#include <iostream> 
#include <string.h> 
#include <time.h> 

using namespace std; 

struct MyID 
{ 
    char FirstName[10]; // array for lenight of the word. 
    char LastName[10]; // array for lenight of the word. 
    int IdNumber; 
}; 

void InitializeArray(MyID IDNumber[], int Size); 
//void SortTheArray(MyID IDNumber[], int Size); 
int main(){ 
    const int Size = 100; 
    MyID IDNumber[Size]; 

    strcpy_s(IDNumber[Size].FirstName, "Aziz"); 
    strcpy_s(IDNumber[Size].LastName, "LEGEND"); 
    // I believe the error is around here. 

    InitializeArray(IDNumber, Size); 
    //SortTheArray(IDNumber, Size); 
} 

void InitializeArray(MyID IDNumber[], int Size){ 

    //srand(time(0)); 
    for (int i = 0; i < Size; i++){ 
     //IDNumber[i].IdNumber = rand() %100 ; 

     cout<<IDNumber[i].FirstName<<endl; 
     IDNumber[i].LastName; 
    } 
} 

enter image description here運行時檢查失敗#2 - 圍繞堆棧變量「的IDNumber」被損壞

我有這個問題,我想測試我的功能和結構每一次,這個錯誤會提示。另外,我想在繼續編寫休息程序之前查看我的名字是否會正確打印。這個想法是我想每次都打印同一個名字而不要求用戶每次打印名字。 另外,如果您想查看結果,我已經上傳了結果圖片。

+0

哪種語言,C或C++?他們是兩種不同的語言。例如,C++語言具有文本的「std :: string」類型。 C語言只有字符數組(容易出現**緩衝區溢出**錯誤)。 –

+0

這是C++語言。謝謝 – user7066458

+0

刪除C語言標籤。 –

回答

2

因爲使用陣列,遇到緩衝區溢出錯誤:

const int Size = 100; 
MyID IDNumber[Size]; 

strcpy_s(IDNumber[Size].FirstName, "Aziz"); 
strcpy_s(IDNumber[Size].LastName, "LEGEND"); 

表達IDNumber[Size]相當於IDNumber[100]

在C++中,數組插槽索引從0變爲Size - 1。您正在訪問數組末尾的數據。

編輯1:初始化基於您的評論
一個數組,你可以使用一個循環來初始化插槽數組(矢量):

struct Person 
{ 
    std::string first_name; 
    std::string last_name; 
}; 

const unsigned int CAPACITY = 100; 

int main() 
{ 
    std::vector<Person> database(CAPACITY); 
    Person p; 
    std::ostringstream name_stream; 
    for (unsigned int i = 0; i < CAPACITY; ++i) 
    { 
    name_stream << "Aziz" << i; 
    database[i].first_name = name_stream.str(); 
    database[i].last_name = "LEGEND"; 
    } 
    return 0; 
} 
+0

我試過這個,但沒有工作。謝謝,但我想要複製同名eveytime的想法。對於Exampe,Aziz001,Aziz002,Aziz003,......... Aziz100。像這樣,我不必要求用戶輸入他們的名字eveytime。 – user7066458

+0

要分配每個元素,您將需要一個循環。 –

+0

謝謝你的幫助。 – user7066458

相關問題