Comme d'autres l'ont mentionné, char* var[n][n2]
est et non un tableau de chaînes. Plutôt un tableau avec 100 slots, où chaque slot peut contenir 17 pointeurs vers un personnage, pas les personnages eux-mêmes (si vous voulez avoir envie, vous pouvez l'utiliser comme un tableau 3D avec des pointeurs constants ou de la mémoire dynamique, mais n'y allez pas) .
Si vous voulez simplement un tableau où chaque emplacement peut pointer vers une chaîne via a[slot] = str
c'est une chose. Mais vous vouliez probablement copier la chaîne entière en elle, donc vous devez utiliser memcpy
(ou bien d'autres variations comme strcpy
et autres) et la déclaration de tableau correct char var[n][n2]
:
main.cpp
#include <string.h>
#include <stdio.h>
//This function takes a string and returns the ip adress
void addIP(char* str, int index, char arr[][17])
{
//Add the ip address to the index that was passed in.
memcpy(arr[index], str, strlen(str));
}
int main()
{
//Array to hold ip address of people on local network
char ipArray[100][17];
// Clean array and check starting contents.
memset(ipArray, 0, sizeof(ipArray));
puts("-------------------------\nStarting array:\n");
for (int i = 0; i < sizeof(ipArray)/sizeof(ipArray[0]); i++)
{
printf("ipArray[%i] = %s\n", i, ipArray[i]);
}
addIP("127.0.0.1", 0, ipArray);
// Check contents.
puts("-------------------------\nModified array:\n");
for (int i = 0; i < sizeof(ipArray)/sizeof(ipArray[0]); i++)
{
printf("ipArray[%i] = %s\n", i, ipArray[i]);
}
return 0;
}
Assurez-vous de savoir ce que vous faites quand il s'agit de tailles correctes. S'il y a un risque que les chaînes puissent être plus grandes que ce que vous avez déclaré dans le tableau, vous demandez des problèmes. Aussi, soyez prudent à propos de la terminaison nulle (qui définit une chaîne de caractères).
'char ipArray [100] [17];' '' void addIP (char * str, int index, char (* arr) [17]) { \t strcpy (arr [index], str); } ' – BLUEPIXY
' char * ipArray [100] [17] 'n'est pas un tableau 2D de' char'. – Olaf