Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558

    [C] - Lunghezza stringhe byte

    Sto implementando un filesystem in C sotto linux per un progetto universitario.
    Mi serve di sapere la lunghezza di una stringa espressa in byte.
    C'è qualche funzione del linguaggio che restituisce , passandogli una stringa o un puntatore a srtinga , la lunghezza della stessa espressa in byte?
    Il mio problema pratico da risolvere è che data una stringa, devo controllarne la lunghezza in byte(1 char=1byte?)che deve essere < o = a 10.
    Grazie a tutti

  2. #2
    Puoi usare la funzione strlen.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Aggiungo che l'equazione:

    1 char = 1 byte

    è verificata solo se usi encodings a 1 byte, tipo ASCII o Latin1: occhio.

  4. #4
    Be', se consideri anche il problema 1 char = ? byte puoi sempre moltiplicare il risultato dato da strlen per la dimensione in byte di un carattere della stringa.
    codice:
    size_t byteSize;
    char stringa[]="Babù pensaci tu.";
    byteSize = strlen(stringa) * sizeof(*stringa);
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Originariamente inviato da MItaly
    Be', se consideri anche il problema 1 char = ? byte puoi sempre moltiplicare il risultato dato da strlen per la dimensione in byte di un carattere della stringa.
    Mi sono espresso male. L'equazione incriminata è:

    1 carattere = 1 byte

    Il problema sono gli encodings a lunghezza variabile, particolarmente l'UTF8 (che va per la maggiore). In UTF8 l'equazione è:

    1 carattere = 1..6 bytes

    In questo caso, il problema è molto più complesso.

  6. #6
    Hai ragione, ma se usi la strlen certamente vai a lavorare su stringhe da 1 carattere = 1 char (e se anche un char non è uguale ad un byte questo viene considerato dal metodo che ho proposto). Certamente comunque se lavori con stringhe multibyte le cose si complicano molto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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