Desidero che l'utente inserisca una stringa e quindi assegni l'input a una NSString. In questo momento il mio codice è simile al seguente:Utilizzo di scanf con NSStrings
NSString *word;
scanf("%s", &word);
Desidero che l'utente inserisca una stringa e quindi assegni l'input a una NSString. In questo momento il mio codice è simile al seguente:Utilizzo di scanf con NSStrings
NSString *word;
scanf("%s", &word);
scanf
non funziona con qualsiasi tipi di oggetti. Se si dispone di una stringa C e si desidera creare una NSString, utilizzare -[NSString initWithBytes:length:encoding:]
.
La funzione scanf legge in una stringa C (in realtà un array di char), in questo modo:
char word[40];
int nChars = scanf("%39s", word); // read up to 39 chars (leave room for NUL)
È possibile convertire un array di caratteri in NSString come questo:
NSString* word2 = [NSString stringWithBytes:word
length:nChars
encoding:NSUTF8StringEncoding];
Tuttavia scanf funziona solo con programmi di console (riga di comando). Se stai cercando di ottenere input su un dispositivo Mac o iOS, scanf non è quello che desideri utilizzare per ottenere input da parte dell'utente.
'Scanf' funziona con' char * '? Non voglio limitare l'input usando un array di caratteri fisso. – raffian
@SAFX: sì, ma ci sono dei rischi nell'utilizzo di scanf, vedere [dettagli qui] (http://stackoverflow.com/q/2430303/154803). Ecco perché ho usato un buffer di dimensioni fisse e limitato la lunghezza in scanf. – progrmr
@progrmr Forse questo è fuori moda? Ricevo 'No know class method' per la chiamata stringWithBytes. – sunny
sì, ma sscanf sì, e può essere una buona soluzione per l'analisi complessa NSString.
Ecco come lo farei:
char word [40];
scanf("%s",word);
NSString * userInput = [[NSString alloc] initWithCString: word encoding: NSUTF8StringEncoding];
NOTA: non è necessario inserire '&' Poiché la parola non è un puntatore ed è la matrice di caratteri effettiva. – ManOx
scanf non funziona con NSString come scanf non funziona sugli oggetti. Funziona solo su tipi di dati primitivi come:
Cosa fare?
Tecnicamente una stringa è costituita da una sequenza di singoli caratteri. Quindi, per accettare l'input da stringa, puoi leggere la sequenza di caratteri e convertirla in una stringa.
uso:
[NSString stringWithCString:cstring encoding:1];
Ecco un esempio di lavoro:
NSLog(@"What is the first name?");
char cstring[40];
scanf("%s", cstring);
firstName = [NSString stringWithCString:cstring encoding:1];
Ecco una spiegazione del codice di cui sopra, commento di commento:
eseguire il progetto.; se inserisci una parola e premi Invio, il programma dovrebbe stampare la stessa parola che hai digitato. Assicurati solo che la parola abbia meno di 40 caratteri; se entri di più, potresti causare il crash del programma: sei libero di provarlo tu stesso!:]
Tratto da: RW.
Probabilmente è meglio capire se si usa 'NSUTF8StringEncoding' come opzione di codifica, non come' 1'. –
Come gestire la nuova linea e gli spazi bianchi? – anoop4real
Simple Solution è
char word[40];
scanf("%39s", word);
NSString* word2 = [NSString stringWithUTF8String:word];
Forse questo sarà il lavoro per voi, perché accetta stringa con spazi pure.
NSLog(@"Enter The Name Of State");
char name[20];
gets(name);
NSLog(@"%s",name);
La classe NSFileHandle è un wrapper orientato agli oggetti per un descrittore di file. Per i file, puoi leggere, scrivere e cercare all'interno del file.
NSFileHandle *inputFile = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [inputFile availableData];
NSString *word = [[NSString alloc]initWithData:inputData encoding:NSUTF8StringEncoding];
Come si crea una stringa c? Puoi modificare il mio codice per mostrarmi come. – Omar
Una stringa C è un array di caratteri per cui devi semplicemente scrivere 'char word [100]'. –