いくつかの名前を多次元配列にコピーし、配列の内容を出力してから、メモリの割り当てを解除して終了するスクリプトを作成しています。私が抱えている問題は、スクリプトを実行すると入力した姓だけが表示されることです。ここに私がしたことがあります。どんな助けも素晴らしいだろう!前もって感謝します!セグメンテーションフォルトを生成するC++多次元配列?
#include <iostream>
#include <string.h>
using namespace std;
void createArray(int n);
void addDetail(char*& name, char*& surname);
void printArray();
void clear();
char ***details;
int used;
int size;
int main()
{
createArray(3);
char* tmpName = new char[20];
char* tmpSurName = new char[120];
strcpy(tmpName, "nameA");
strcpy(tmpSurName, "surnameA");
addDetail(tmpName,tmpSurName);
strcpy(tmpName, "nameB");
strcpy(tmpSurName, "surnameB");
addDetail(tmpName,tmpSurName);
strcpy(tmpName, "nameC");
strcpy(tmpSurName, "surnameC");
addDetail(tmpName,tmpSurName);
clear();
return 0;
}
void createArray(int n)
{
details= new char**[n];
for(int i=0; i<n; i++)
details[i] = new char*[2];
size = n;
used = 0;
}
void addDetail(char*& name, char*& surname)
{
if(occupation < size)
{
details[used][0] = name;
details[used][1] = surname;
used++;
}else{
cout << "Array Full " << endl;
}
}
void printArray()
{
for(int i=0; i<used; i++)
cout << details[i][0] << " " << details[i][1] << endl;
}
void clear()
{
for(int i=0; i<size; i++)
{
delete [] details[i];
details[i] = 0;
}
delete [] details;
details=0;
}
なぜあなたは**文字列**を使用していませんか? – DumbCoder
もしあなたがC++を使っているのであれば、* old skool * Cスタイルのイディオムの代わりに 'string'と' vector'を使ってみてはどうでしょうか? –