我試圖創建一個數組,每個對象在數組中應該有名稱模型(i)其中是索引,我這樣做,使他們將按降序排列的名稱Model5,Model4。 ..我試圖做到這一點使用char [],但由於某種原因在我的代碼中使用for循環內的strcat使我卡住在一個無限循環,第二點,如果有人可以幫助轉換索引的方式我可以連接名稱並賦予構造函數。C++ strcat創建無限循環
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
class CARRO {
public:
CARRO() {};
CARRO(char *modelo, unsigned ano);
char* getModelo();
unsigned getAno();
private:
char modelo[100];
unsigned ano;
};
void swap(int *p, int *q);
int partition(int *v, int start, int end);
int randomizedPartition(int *v, int start, int end);
void qsHelper(int *v, int start, int end);
void quickSort(int *v, int len);
void printList(CARRO *carros, unsigned len);
int main(int argc, char const *argv[]) {
CARRO carros[5];
unsigned len = sizeof(carros)/sizeof(CARRO);
for (int i = 0; i < len; ++i) {
char modelo[] = "Modelo";
char id[] = "I";
strcat(modelo, id);
unsigned ano = 1000 * (i+1);
carros[i] = CARRO(modelo, ano);
cout << carros[i].getModelo() << endl;
}
//printList(carros, len);
return 0;
}
CARRO::CARRO(char *modelo, unsigned ano) {
strcpy(this->modelo, modelo);
this->ano = ano;
}
如果我刪除行:
strcat(modelo, id);
循環工作正常。我只是不明白爲什麼strcat會以某種方式產生一個無限循環。輸出是這樣的:(與線的strcat)
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
ModeloI
^CModeloI
如果您使用C++,你應該使用'的std :: string'和相關方法而不是C的'的strcat '與字符數組 –
'm odelo'只能創建到足以容納您初始化的單詞。如果使用'std :: strcat'使內容更長,則您正在寫入數組邊界之外導致未定義的行爲。 – Galik
可能重複的[我只是無法找出strcat](http://stackoverflow.com/questions/4707900/i-just-cant-figure-out-strcat) –