Lezione 13: Gestione delle Stringhe - Linguaggio C [CORSO COMPLETO]

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ก.พ. 2025

ความคิดเห็น • 18

  • @andreamazzurco1524
    @andreamazzurco1524 5 หลายเดือนก่อน +1

    notifico un errore al minuto 10:49
    -Un valore maggiore di 0 se str1 > str2;
    -Un valore minore di 0 se str1 < str2;
    dovrebbe essere così invece nel video sono stati messi i segni minore e maggiore opposti.

  • @rxgs_6395
    @rxgs_6395 ปีที่แล้ว +1

    Non sto capendo una cosa, se il Black Smash 0 non permette al compilatore di stampare quello che c'è dopo nel vettore, perché la poniamo la Stringa nel ciclo diversa da '\0'? È un contro senso non dev'essere str[i] == '\0' per permettere di non stampare le celle non inizializzate?

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  ปีที่แล้ว

      Il '\0' è un carattere speciale che indica la terminazione della stringa.
      Quindi se tu parti da i=0 e prosegui avanti, vuoi arrivare fino al carattere terminatore. Ecco perché ogni carattere è != '\0', perché è se tu dicessi "ciclo fino a quando il carattere i-esimo è diverso da quello di terminazione".
      Se tu invece poni == '\0', allora stai dicendo che cicli fino a quando ogni carattere i-esimo che valuti è quello di terminazione, cosa ovviamente non vera.

    • @rxgs_6395
      @rxgs_6395 ปีที่แล้ว

      @@ProgrammazioneTimeOfficial fai lezioni private online?

    • @rxgs_6395
      @rxgs_6395 ปีที่แล้ว

      @@ProgrammazioneTimeOfficial un altra cosa, non ho capito cosa rappresenta Back stage
      ?

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  ปีที่แล้ว

      Al momento non do lezioni private, per via del poco tempo.
      Per quanto riguarda
      avevo spiegato nel video riguardante la gestione dell'output, che serve per mandare a capo l'output (
      = newline)

  • @nicolaturchetto9884
    @nicolaturchetto9884 3 ปีที่แล้ว +2

    Quindi su fgets viene aggiunto un '
    ' alla fine della frase inserita?
    E le funzioni getchar e putchar?
    Cmq bel video!

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  3 ปีที่แล้ว

      Fgets prende l'intera riga inserita. Quindi se per esempio lo stream da cui prelevi l'input è la tastiera (stdin) e premi invio per confermare quanto inserito allora quell'invio è un
      . Al contrario se a fine stringa inserisci EOF (le combinazioni per questo carattere mi sembra di averle dette), allora la stringa non si conclude con quell'invio a capo e pertanto non c'è
      .
      Le funzione getchar e putchar sono state trattate nelle lezioni di input e output a inizio corso.

    • @nicolaturchetto9884
      @nicolaturchetto9884 3 ปีที่แล้ว

      @@ProgrammazioneTimeOfficial Grazie della risposta. Cmq continuo a non capire perché nella fgets mi inserisce un carattere in più rispetto a gets; a fine frase.

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  3 ปีที่แล้ว

      Perché premendo il tasto invio dalla tastiera (che è il tuo stream stdin) tu gli stai dando quel carattere, ovvero
      . Quindi è normale che ci sia. Se provi a interromperla con EOF non prendi il
      (devi guardarti la combinazione di tasti se sei da Linux/Mac os, Windows).

    • @nicolaturchetto9884
      @nicolaturchetto9884 3 ปีที่แล้ว

      @@ProgrammazioneTimeOfficial AAAAAhhhhh capito. Più semplice di quello che sembrava xd.

  • @antoniolovisi8811
    @antoniolovisi8811 ปีที่แล้ว

    Ciao, non mi è chiara una cosa......Se una stringa è un vettore di caratteri, e quindi un vettore di caratteri è a sua volta una stringa, come li si differenziano? Qualè la differenza principalentra tra le 2? Se ho capito bene, l'unica differenza sta nel carattere terminatore, inserito automaticamente per le stringhe e manualmente nei vettori di caratteri. Giusto?
    Grazie i tuoi video ho potuto ripredere in mano il c dopo 2 anni di fermo, grazie

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  ปีที่แล้ว +1

      La stringa è gestita come un vettore di caratteri, nel C non c'è un tipo di dati primitivo per le stringhe (a differenza dei linguaggi a oggetti)

  • @paolo69
    @paolo69 2 ปีที่แล้ว +1

    Ciao esiste un modo per acquisire stringhe contenente spazi con scanf?

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  2 ปีที่แล้ว +2

      Scanf prende in input solo singole stringhe, quindi appena trova uno spazio capisce che è finita. Tuttavia puoi aumentare il numero di variabili per prendere più singole parole:
      scanf("%s %s %s", str1, str2, str3);
      Altrimenti se vuoi fare più parole in una singola variabile usi fgets

  • @ttiziano
    @ttiziano 2 ปีที่แล้ว

    C'è differenza tra atof() e strtod()? E tra atoi() e strtol()?

    • @ProgrammazioneTimeOfficial
      @ProgrammazioneTimeOfficial  2 ปีที่แล้ว

      Enormi differenze. Semmai la somiglianza è tra atof e atoi e tra strtod e strtol.
      Atof e atoi convertono una stringa (presa come parametro di funzione) rispettivamente in un numero a virgola mobile (double) e un numero intero (int).
      Mentre strtod e strtol estrapolano da una stringa un numero presente all'intero (rispettivamente in virgola mobile e in intero). Il numero estrapolato viene ritornato dalla funzione, mentre alla stringa viene rimosso quel valore numerico (è un gioco con puntatori, banalmente si ritorna il puntatore di inizio testo dopo il numero)

    • @ttiziano
      @ttiziano 2 ปีที่แล้ว

      @@ProgrammazioneTimeOfficial Perfetto, grazie mille.