Rellenar un array de caracteres con las cadenas dinámicamente

votos
0

Soy nuevo en C y estoy tratando de almacenar algunas cadenas dentro de una matriz 2D de chars.Here es lo que tengo:

char strArray[100][100];
char input[100];
scanf(%s,&input);
strArray[i] = input; //this is where i get the incompatible types assignment error

Como se muestra en el comentario consigo un incompatible types in assignmenterror.Do i necesidad de utilizar una serie de char *strArray[100][100]? No son strArray, y inputlos dos del mismo tipo (char [])? 1D de la una y la otra es en 2D, obviamente, pero simplemente no especificaron la segunda dimensión en la asignación ya que cada cadena se almacena en una nueva línea. ¿Qué estoy haciendo mal?

Publicado el 07/11/2018 a las 22:36
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Habría que utilizar strcpy():

#include <stdio.h>
#include <string.h>

int main(void)
{
    char strArray[100][100];
    char input[100];
    scanf("%s", input);
    strcpy(strArray[0], input);
}

Pero nunca, en realidad: ¡nunca! utilizar scanf()con "%s"sin limitar el número de caracteres a leer (anchura de campo):

 scanf("%99s", input);
Respondida el 07/11/2018 a las 22:41
fuente por usuario

votos
0

Puede usar strcpy () para copiar cada caracter en la entrada a strArray [i]. En este caso se utilizaría

strcpy(strArray[i], input);
Respondida el 07/11/2018 a las 22:41
fuente por usuario

votos
0

En C, no se puede asignar matrices en el sentido de char input1[100], input2[100]; input1 = input2. Usted puede copiar el contenido, utilizando, por ejemplo, strcpypara las cadenas o memcpyde trozos de memoria arbitrarias.

Por lo que tendría que escribir strcpy(strArray[i],input), siempre que ies un valor entero entre 0y 99en su caso.

Además, tendrá que omitir el &de scanf("%s",&input)(es decir, escribir scanf("%s",input)), debido a inputque ya se desintegra a un puntero a char.

Respondida el 07/11/2018 a las 22:40
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more