PROBLEMA [C]Come modificare il contenuto di un vettore di stringhe

gianser

Nuovo Utente
1
0
Ciao a tutti,


come da titolo ho un problema nel modificare il contenuto di un vettore di stringhe.
L'esercizio in questione richiede di costruire una funzione: questa riceve come argomento un vettore di stringhe di dimensione fissata. La funzione richiede di inserire da tastiera una stringa di testo e, una volta inserita, questa deve essere divisa nelle parole che lo compongono, parole che poi dovranno essere usate per riempire il vettore ricevuto in argomento. La funzione restituisce la dimensione del vettore(int).
Questo è il codice della funzione che ho scritto:

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIMMAX 100

typedef char Stringa[DIMMAX];

int elaboraTesto(char *v[]);


int main(){

 int i;
 char *testo[DIMMAX];
 
 i = elaboraTesto(testo);
 
return 0;
}


int elaboraTesto(char *v[])
{
 Stringa s;
 int i;
 
 printf("Inserire un testo: ");
 gets(s);
 
 v[i] = strtok(s, " ");
 
 while(v[i] != NULL){
  ++i;
  v[i] = strtok(NULL, " ");
 }
 return i;
}

Quando però vado a stampare gli argomenti del vettore testo, non ottengo il risultato sperato ma solamente simboli. Per eseguire questa istruzione ho solamente usato un ciclo for per iterare sul vettore, quindi credo il problema sia nel modo in cui vado ad implementare le parole in testo.
Potreste aiutarmi?
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Ipotizzo, forse ti conviene creare una struttura contenente il puntatore alla stringa. Crei un'array di strutture e sei a cavallo (a.(*quelchel'è) mi pare sia la sintassi.
Forse devi allocare la memoria dinamicamente :sisilui:
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,226
1,857
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Verifica bene il codice. Ad occhio ho visto subito un errore:

Codice:
 Stringa s;
 int i;
 
 printf("Inserire un testo: ");
 gets(s);
 
 v[i] = strtok(s, " ");

i non è inizializzata.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili