Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Dopo il recente lancio della serie Xiaomi 15T di Monaco, vi parliamo oggi della versione più performante della nuova famiglia, ovvero Xiaomi 15 T Pro. Vi raccontiamo la nostra prova nel dettaglio, spiegando perché a questo prezzo e in questa fascia, questo smartphone ha davvero senso tenerlo in seria considerazione.
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer ha ampliato la sua offerta professionale con il TravelMate P6 14 AI, un notebook ultraleggero e robusto pensato per chi lavora in mobilità. Certificato Copilot+ PC, combina design premium, autonomia elevata e piattaforma Intel Core Ultra Serie 2 con funzionalità AI, garantendo sicurezza, affidabilità e produttività per l'utenza business moderna.
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-07-2008, 14:46   #1
Simo F
Member
 
L'Avatar di Simo F
 
Iscritto dal: Apr 2002
Città: Cesena
Messaggi: 259
[C] Matrici di caratteri

ciao, ho creato una matrice di char e un array di caratteri della stessa lunghezza delle righe della matrice:

char mat[x][y];
char str[y];

io vorrei inserire l'array di carattere alla i-esima riga della matrice, ma se faccio mat[i] = str; mi da errore.. dove sbaglio??
Simo F è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2008, 21:16   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Il fatto è che stai usando delle array statiche e non dei puntatori. Non puoi assegnare matrice[i] perché non è un indirizzo, se proprio vuoi puoi copiare gli y caratteri della stringa in matrice[i]:
Codice:
strncpy(matrice[i], stringa, y);
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:57   #3
Simo F
Member
 
L'Avatar di Simo F
 
Iscritto dal: Apr 2002
Città: Cesena
Messaggi: 259
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Il fatto è che stai usando delle array statiche e non dei puntatori. Non puoi assegnare matrice[i] perché non è un indirizzo, se proprio vuoi puoi copiare gli y caratteri della stringa in matrice[i]:
Codice:
strncpy(matrice[i], stringa, y);

grazie, ora riesco a copiarci dentro la stringa.. però adesso ho 1 altro problema:

se accedo a matrice[0] ottengo ad esempio GALLO, ma se accedo a matrice[1] ottengo ALLO, cioè senza la prima lettera... non dovrebbe darmi la seconda riga della matrice??
Simo F è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:59   #4
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da Simo F Guarda i messaggi
grazie, ora riesco a copiarci dentro la stringa.. però adesso ho 1 altro problema:

se accedo a matrice[0] ottengo ad esempio GALLO, ma se accedo a matrice[1] ottengo ALLO, cioè senza la prima lettera... non dovrebbe darmi la seconda riga della matrice??
No, per fare questo devi usare la notazione con doppio indice.
Ad esempio matrice[0][0] sarà G, matrice[0][1] sarà A, e matrice[1][0] la prima lettera della seconda riga

Edit: qualora ti chiedessi il perchè di quello strano comportamento, è dovuto al fatto che la stampa di un puntatore a char è eseguita stampando tutte le lettere in zone di memoria adiacenti finquando non viene incontrato il terminatore '\0'.
Se quindi passi un puntatore alla locazione successiva, la stama inizia dalla seconda lettera e procede fino al terminatore
Bye
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:04   #5
salvodel
Senior Member
 
L'Avatar di salvodel
 
Iscritto dal: Dec 2004
Messaggi: 783
Quote:
Originariamente inviato da Simo F Guarda i messaggi
grazie, ora riesco a copiarci dentro la stringa.. però adesso ho 1 altro problema:

se accedo a matrice[0] ottengo ad esempio GALLO, ma se accedo a matrice[1] ottengo ALLO, cioè senza la prima lettera... non dovrebbe darmi la seconda riga della matrice??
Forse perchè ti sei perso un indice?
for(i=0;i<max;i++)
matrice[0][i]=GALLO-->matrice[0][i+1]=ALLO
matrice[1][i]=POLLO-->matrice[1][i+1]=OLLO
se fai cosi funziona?Controlla se riempi per riga o per colonna
Le matrici sono realizzate come vettori di lunghezza righe x colonne.
__________________
"May the wind always be at your back and the sun upon your face.
And may the wings of destiny carry you aloft to dance with the stars...."

Ultima modifica di salvodel : 08-07-2008 alle 16:06.
salvodel è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:08   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Provato ora, funziona.
Codice:
#include <string.h>
#include <stdio.h>

#define MAX 2

int main()
{
	char matrice[MAX][5];
	int x;

	for (x = 0; x < MAX; ++x)
	{
		strncpy(matrice[x], "GALLO", 5);
	}

	printf("%5s\n", matrice[0]);
	printf("%5s\n", matrice[1]);
	return 0;
}
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:33   #7
Simo F
Member
 
L'Avatar di Simo F
 
Iscritto dal: Apr 2002
Città: Cesena
Messaggi: 259


penso che l'immagine possa spiegare di +..
ovviamente ha gia fatto il primo ciclo, dove lo strcpy mette la prima stringa nella matrice..
se nello strcpy metto mat[r][c], mi da un errore a runtime di accesso violato..

Ultima modifica di Simo F : 08-07-2008 alle 16:37.
Simo F è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:44   #8
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Non dovresti dichiararle in quel modo, quando la lunghezza è variabile l'allocazione dinamica è la scelta migliore e che porta meno errori. Il problema probabilmente è solo nell'ispezione dei dati da parte di GDB, prova a stampare i valori con delle printf().
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Xiaomi 15T Pro, è lui il nuovo best buy? La recensione Xiaomi 15T Pro, è lui il nuovo best buy? ...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Torna a 179€ il mini PC con Ryzen 5, 16G...
Due droni Amazon si sono schiantati cont...
Apple cambia idea? Basta visori, per il ...
Il padrino dell'intelligenza artificiale...
Western Digital: hard disk da 44 TB pron...
Connettori 12V-2x6 delle GPU NVIDIA peri...
SiPearl Athena1: il processore europeo p...
Spotify ascolta gli utenti: ecco come es...
Fine delle auto nuove svendute come usat...
La sonda spaziale cinese Tianwen-2 (dire...
Disney Plus, prezzi in aumento anche per...
Inversion Arc: la navicella spaziale per...
Il Regno Unito ha chiesto (ancora) ad Ap...
Nasce Page JSI Company, la joint venture...
Microsoft, Nadella concentrato sull'AI: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v