Das Problem ist folgendes: ich eine dynamische Matrix erstellt, Zeiger mit auf Zeiger matrix1
Kopieren eines Zeigers eines Zeigers (Matrix) Werte in C
Ich möchte eine Kopie dieser Matrix in eine andere zu schaffen, matrix2
ich tun möchte, dass so kann ich mess with matrix2
ohne mit matrix1
messing also habe ich versucht, die folgendes zu tun:
int main()
{
int **matrix1, **matrix2, size1 = 10, size2 = 2;
matrix1 = create_matrix(size1, size2);
//I want to copy the value of matrix1 into matrixq2 and NOT the index
**matrix2 = **matrix1
}
Allerdings ist die Programmunterbrechungen und zeigen:
Ich verstehe, dass es durch die Art und Weise zu betrachten, wäre es einfacher, die Funktion create_matrix
zweimal zu verwenden, für matrix1
und eine andere für matrix2
. Aber so wie mein ursprüngliches Programm ist, wäre das zu viel Arbeit, da ich eine Menge Sachen mache, um die Matrix zu machen. Oh, und übrigens, ich möchte vermeiden, C++ zu benutzen, gibt es einen Weg, es zu tun, ohne es zu benutzen? Es wäre besser für mich.
der Code 'create_matrix' ist die folgende:
//The program will read a file with the name of endereco, and create a matrix contPx3 out of it
int ** cria_matrix(char endereco[], int contP)
{
FILE *fPointer;
int i, contE, auxIndex, auxNum, **processos, cont_line = 0;
char line[100];
bool flag = true, flag2;
fPointer = fopen(endereco, "r");
//Here the creation of the matrix
processos = (int**)malloc(sizeof(int*) * contP);
for (i = 0; i < contP; i++)
processos[i] = malloc(sizeof(int) * 3);
//For now and on, is the rules of how the data will be placed on the matrix
contP = 0;
while (!feof(fPointer) && flag)
{
memset(&line[0], 'Ì', sizeof(line));
fgets(line, 100 , fPointer);
//Bassicaly is that in each line there will be 3 numbers only, diveded but as many spaces you want. The numbeer will be placed on the matrix on the determined line they are.
auxIndex = 0;
flag2 = false;
if(line[0] != '#')
for (i = 0; i < 100; i++)
{
if (line[i] != ' ' && line[i] != '\n' && line[i] != '\0' && line[i] != 'Ì')//&& line[i] != 'à'
{
auxNum = line[i] - '0';
processos[contP][auxIndex] = auxNum;
auxIndex++;
flag2 = true;
}
}
if (flag2)
contP++;
cont_line++;
if (auxIndex != 3 && auxIndex != 0)
{
flag = false;
printf("ERRO na linha: %d No processo: %d\nProvavelmente mais ou menos que 3 numeros separado por espacos\n", cont_line, contP);
}
}
fclose(fPointer);
if (!flag)
system("PAUSE");
return processos;
}
http://StackOverflow.com/Questions/12675800/How-to-copy-matrix-in-c – parik
Sie veröffentlichen nicht den vollständigen Code. –
@parik, das ist keine gültige dup. Der Datentyp ist 'T [N] [M]', während hier 'T ** 'steht. Wenn Sie eine Lösung von dort blind anwenden, wird das Programm wahrscheinlich zum Absturz gebracht. – StoryTeller