Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [c]ridurre a 3 char una stringa

    ho questa funzione:
    codice:
    void ciao(void)
    {
    int x;
      for(x=0;nome[x]!='\0';x++)
    	{
    if(nome[x]=='a' || nome[x]=='e' || nome[x]=='i' || nome[x]=='o' || nome[x]=='u')
    	continue;
    	putchar(nome[x]);
    	}
    
     for(x=0;cog[x]!='\0';x++)
    	{
    if(cog[x]=='a' || cog[x]=='e' || cog[x]=='i' || cog[x]=='o' || cog[x]=='u')
    	continue;
    	putchar(cog[x]);
    	}
    }
    la variabile nome viene inserita dall'utente, e non ci sono limiti di lunghezza a questa variabile.
    volevo che questa funzione mi restituisse una stringa che non superasse i tre caratteri e quindi sottrarre i char in eccesso nella stringa nome[x].
    avevo pensato ad una cosa tipo:
    codice:
    malloc(3*sizeof(char));
    ma non saprei come fare!
    help!!!
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  2. #2
    io non ci riesco, nessuno riesce a darmi una risposta?
    perchè non è giusto scrivere:
    codice:
    if(nome[x]>3*sizeof(char))
    {
      ...istruzioni per ridurre la stringa a 3 caratteri...
    }
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  3. #3
    Ennesimo esempio di "random programming".

    Cmq malloc( 3 + 1 ) (per il terminatore '\0'), strncpy() solo 3 caratteri e '\0' alla fine. Arrangiati.

  4. #4
    random programming?????
    arrangiati?????
    :quote:
    e chi ha chiesto a te di rispondermi?
    ce ne sono tante altre di persone!!!
    la prossima volta fammi un piacere non vederla come una costrizione ,fa a meno di rispondermi se poi devi aggiungere arrangiati!!!!
    cmq grazie per la tua fatica!!!:gren:
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  5. #5
    dirk gain
    Guest
    Spero di aver capito il tuo problema... (stai usando il linguaggio C, giusto?)
    Premesso che la malloc di alloca la memoria a disposizione, ma non ti impedisce di accedere alle locazioni successive, quindi non ti tronca la parola, puoi usare la libreria string.h, che contiene la funzione strlen, che ti restituisce la lunghezza di una stringa di caratteri: puoi scrivere (sono un pò arrugginito col C, ma spero di scrivere correttamente o, almeno, di farti capire)
    if (strlen(nome)>3) nome[3]='\0';
    Questa istruzione dovrebbe automaticamente troncarti la parola se ha + di 3 caratteri.
    P.S.
    Ricordati di includere string.h

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Copia in un'altro array i primi tre caratteri... Nell'Header STRING.H c'è una funzione simile a strcpy alla quale puoi dire di copiare i primi N caratteri...


  7. #7
    Originariamente inviato da dirk gain
    Spero di aver capito il tuo problema... (stai usando il linguaggio C, giusto?)
    Premesso che la malloc di alloca la memoria a disposizione, ma non ti impedisce di accedere alle locazioni successive, quindi non ti tronca la parola, puoi usare la libreria string.h, che contiene la funzione strlen, che ti restituisce la lunghezza di una stringa di caratteri: puoi scrivere (sono un pò arrugginito col C, ma spero di scrivere correttamente o, almeno, di farti capire)
    if (strlen(nome)>3) nome[3]='\0';
    Questa istruzione dovrebbe automaticamente troncarti la parola se ha + di 3 caratteri.
    P.S.
    Ricordati di includere string.h
    hai perfettamente ragione!!!!
    grazie mille.
    se ti può interessare:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    size_t lenght;
    char buf[80];
    
        puts("\nInserisci una riga,per terminare una vuota.");
    	gets(buf);
    
        lenght=strlen(buf);
    
    	if(lenght!=0)
    {printf("\nlunghezza della riga di %u caratteri.",lenght);}
            if(lenght>3)
    	  buf[3]='\0';
    	  printf("%s",buf);
    return 0;
    }
    grazie ancora.

    per l.golinelli:
    non ho capito a cosa ti riferisci...
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    strncpy(char *dest, char *src, n);

    Copia i primi n caratteri di src in dest...


  9. #9
    hummm.....
    come lo posso adattare a nome[x]???
    non ci riesco
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    char nome[20];
    char copia[20];

    strncpy(nome, copia, 3);


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.