English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base del linguaggio C

Controllo di flusso del linguaggio C

Funzione del linguaggio C

Array del linguaggio C

Puntatore del linguaggio C

Stringa del linguaggio C

Struttura del linguaggio C

File del linguaggio C

Altro del linguaggio C

Manuale di riferimento del linguaggio C

Stringa del linguaggio C

In questo tutorial, imparerai le stringhe nel linguaggio di programmazione C. Imparerai a dichiararle, inizializzarle e utilizzarle in vari operazioni di I/O (input/output).

In programmazione C, le stringhe sono sequenze di caratteri terminate da un carattere null '\0'. Ad esempio:

char c[] = "c string";

Quando il compilatore incontra una sequenza di caratteri racchiusi tra virgolette double '\0', aggiunge automaticamente un carattere di terminazione di stringa alla fine.

Come dichiarare una stringa?

Il modo di dichiarare una stringa è il seguente:

char s[5];

Qui, abbiamo dichiarato una stringa di 5 caratteri.

Come inizializzare una stringa?

Puoi inizializzare una stringa in molti modi.

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};

Facciamo un altro esempio:

char c[5] = "abcde";

Qui, proviamo a assegnare 6 caratteri (l'ultimo è '\0') a un array char di 5 caratteri. Questo è un comportamento errato, non dovresti mai farlo.

Assegna una stringa

In C, una volta dichiarati, gli array e le stringhe non supportano l'operatore di assegnazione.

char c[100];
c = "C programming";  // Errore! Il tipo di array non può essere allocato.

Attenzione:UsaLa funzione strcpy()Invece di copiare la stringa.

Leggi una stringa dall'utente

Puoi utilizzare la funzione scanf() per leggere una stringa.

La funzione scanf() legge una sequenza di caratteri, fino a quando incontra uno spazio (spazio, newline, tabulatore, ecc.).

Esempio 1: scanf() legge una stringa

#include <stdio.h>
int main();
{
    char name[20];
    printf("Inserisci il nome: ");
    scanf("%s", name);
    printf("Il tuo nome è %s.", name);
    return 0;
}

Risultato di output

Inserisci il nome: Dennis Ritchie
Il tuo nome è Dennis.

Anche se hai inserito Dennis Ritchie nel programma, la stringa del nome contiene solo "Dennis". Questo perché dopo Dennis c'è uno spazio.

Come leggere una riga di testo?

Puoi utilizzare la funzione fgets() per leggere una riga di stringa. E puoi usare puts() per visualizzare una stringa.

Esempio 2: fgets() e puts()

#include <stdio.h>
int main();
{
    char name[30];
    printf("Inserisci il nome: ");
    fgets(name, sizeof(name), stdin);  //读取字符串
    printf("Nome: ");
    puts(name);  //显示字符串
    return 0;
}

Risultato di output

Inserisci nome: Tom Hanks
Nome: Tom Hanks

In questo caso, abbiamo utilizzato la funzione fgets() per leggere la stringa dall'utente.

fgets(name, sizeof(name), stdin); // Leggi la stringa

Il risultato di sizeof(name) è 30. Pertanto, possiamo accettare fino a 30 caratteri come input, che è la dimensione della stringa name.

Per stampare la stringa, abbiamo utilizzato put (name);

Attenzione:La funzione gets() può anche accettare l'input dell'utente. Ma è stata rimossa dallo standard C.
Questo è perché gets() ti permette di inserire caratteri di lunghezza arbitraria. Pertanto, potrebbe esserci un overflow di buffer.

Passare una stringa a una funzione

Le stringhe possono essere passate a una funzione in modo simile agli array. Scopri di più suPassare un array a una funzionePiù informazioni.

Esempio 3: Passare una stringa a una funzione

#include <stdio.h>
void displayString(char str[]);
int main();
{
    char str[50];
    printf("Inserisci stringa: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str); // Passa la stringa alla funzione   
    return 0;
}
void displayString(char str[])
{
    printf("Output della stringa: ");
    puts(str);
}

Stringhe e puntatori

Simile agli array, il nome della stringa "decade" in un puntatore. Pertanto, puoi utilizzare i puntatori per manipolare gli elementi delle stringhe. Ti consigliamo di controllare questo esempio prima di esaminareArray e puntatore in C.

Esempio 4: Stringhe e puntatori

#include <stdio.h>
int main(void) {
  char name[] = "Harry Potter";
  printf("%c", *name); // Output: H
  printf("%c", *(name+1)); // Output: a
  printf("%c", *(name+7)); // Output: o
  char *namePtr;
  namePtr = name;
  printf("%c", *namePtr); // Output: H
  printf("%c", *(namePtr+1)); // Output: a
  printf("%c", *(namePtr+7)); // Output: o
}

Funzioni di stringa comuni