Problema nella dichiarazione del vettore stringa

di Anonimizzato21278 il
4 risposte
Salve a tutti, ho appena fatto un programma in cui copio una stringa usando la notazione dei vettori e quella dei puntatori. Ecco il programma:
 #define CRT_SECURE_NO_WARNINGS
#include<stdio.h>

void copy1(char *s1, const char *s2);
void copy2(char *s1, const char *s2);

int main() {

	char string1 = [ 10 ];
	char *string2 = "Hello";
	char string3 = [10];
	char string4[] = "Good Bye";

	copy1(string1, string2);
	printf("string1 = %s\n", string1);

	copy2(string3, string4);
	printf("string3 = %s\n", string3);


	return 0;


}

void copy1(char *s1, const char *s2) {

	int i;

	for (i = 0; (s1[i] = s2[i]) != '\0'; i++) {
		;
	}
}

void copy2(char *s1, const char *s2) {

	for (; (*s1 = *s2) != '\0'; s1++, s2++) {
		;
	}

}

Non capisco perchè in queste entrambe righe di codice mi viene errore con scritto: (prevista un espressione):
char string1 = [ 10 ];
char string3 = [10];
Qualcuno ha capito il perchè? In teoria il programma dovrebbe già funzionare..

4 Risposte

  • E' un errore di sintassi, togli l'uguale
    char string1[ 10 ];
    char string3[10];
  • Hai ragione, ora il programma funzione perfettamente! Grazie mille candaluar
  • Comunque, utilizzando i puntatori potresti scrivere:
    void copy2(char *s1, const char *s2) 
    {
        while( *s2 )
        {
            *s1 = *s2;
            s1++; s2++;
       }
       *s1 = 0;
    }
    Naturalmente, anche se si tratta solo di esercizi, ti consiglio caldamente di controllare le dimensioni allocate; per intenderci, invece di implementare una strcpy() prova piuttosto ad implementare una strncpy().
  • Si infatti, pensandoci adesso, provo ad implementare una strncpy(). Grazie mille di nuovo candaluar
Devi accedere o registrarti per scrivere nel forum
4 risposte