Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    21

    [C] Implementare una funzione

    Ho provato a implementare una funzione che prese due stringhe restituisce una sola stringa che è la concatenazione delle due.

    es:
    s1: ciao
    s2: come stai

    s: ciao come stai

    mi da questo errore nella funzione subscripted value is neither array nor pointer

    codice:
    #include <stdio.h>
    
    #define LUNG_STR 256
    
    char _cp_string(char, char);
    
    main()
    {
            char str1[LUNG_STR];
            char str2[LUNG_STR];
            int i;
    
    
                    for(i=0; i<LUNG_STR; i++)
                            str1[i]='\0';
    
                    scanf("%s", str1);
    
                    for(i=0; i<LUNG_STR; i++)
                            str2[i]='\0';
    
                    scanf("%s", str2);
    
                    printf("%s", _cp_string(str1[i], str2[i]));
    
                    return 0;
    }
    
    char _cp_string(char s1, char s2)
    {
            int p, c;
    
                    for(p=0; s1[p] != '\0'; p++)
                            ;
    
                    for(c=0; (s1[p]=s2[c]) != '\0'; p++, c++)
                            ;
    
                    return s1;
    }
    da cosa dipende?

    grazie per gli eventuali chiarimenti!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dipende da questo for

    for(p=0; s1[p] != '\0'; p++)

    in cui tu usi s1 come se fosse una stringa mentre e' un char perche' dichiarato cosi'

    char _cp_string(char s1, char s2)

    E se e' un char non puo' essere una stringa .... rivedi il codice ...

  3. #3
    questo due cicli for sono inutili
    codice:
                    for(i=0; i<LUNG_STR; i++)
                            str1[i]='\0';
    ...
                    for(i=0; i<LUNG_STR; i++)
                            str2[i]='\0';

    codice:
    printf("%s", _cp_string(str1[i], str2[i]));
    Alla funzione _cp_string() dovresti passare due puntatori a stringa, non i due
    primi caratteri di ogni stringa...

    Il prototipo :
    codice:
    char _cp_string(char s1, char s2)
    è sbagliato in quanto la funzione dovrebbe accettare come argomenti due puntatori a stringa
    per poi restituirne uno.

    Tieni presente che la scanf() legge solo una parola alla volta.
    Se scrivi "Ciao Samuele"
    la prima stringa conterrà "Ciao" e "Samuele" andrà a finire nella seconda stringa in automatico,
    e non verrà neanche visualizzato il prompt di imput della seconda scanf().

    EDIT : oregon mi ha battuto sul tempo.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    21
    [b]E se e' un char non puo' essere una stringa .... rivedi il codice ...
    effettivamente :P

    mi riguardo il codice

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    21
    @Samuele non li posso usare i puntatori

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per lavorare con le stringhe e' praticamente necessario usare i puntatori ... le stringhe stesse sono puntatori ad array di char, e quindi e' *naturale* usare i puntatori ...

    Bisognerebbe fare i *salti mortali* per non usarli ...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    21
    infatti mi sa che stavo solo cercando di fare qualcosa di quasi impossibile...guardando e riguardando noto che per fare cose del genere vengono usati i puntatori -.-"

    mi faccio 5 minuti di vergogna nell'angolino..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nessuna vergogna ... quando ho iniziato ad usare i puntatori non ne capivo nulla ...

    Il problema e' se non li puoi usare perche' ti hanno detto di non usarli o perche' non li sai ancora usare ... nel secondo caso, studiali perche' dire che sono *fondamentali* e' dire poco ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    21
    è il prossimo argomento del manuale..forse è proprio per questo che segue quello delle funzioni..

    per quanto riguarda quello che avevo scritto io..era solo un qualcosa che mi ero inventato per vedere se avevo capito come far girare le funzioni!

    mo faccio qualcosa di più semplice

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 © 2025 vBulletin Solutions, Inc. All rights reserved.