IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

saisir une chaine sans retour chariot [Objective-C]


Sujet :

Objective-C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut saisir une chaine sans retour chariot
    bonjour,
    je me lance dans ce langage que je ne trouve pas super simple...
    en faisant des exercices, je tombe sur un os.
    il s'agit de saisir une recherche de livre par auteur ou par titre.
    je veux faire saisir une chaine avec un fgets mais je récupère le retour chariot et ne peux comparer mes chaines, quelqu'un aurait-il une solution simple ?

    dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    NSString *typeRech;
    NSString *chaineRech;
    NSMutableArray *listeLivres=[NSMutableArray new];
    char inputbuffer[200];
    //ma bibliothèque
    BookStore* theBookNook = [[BookStore alloc] init];
    //saisir le type de recherche
    fgets(inputbuffer, 10,stdin);
    typeRech=[[[NSString alloc] initWithUTF8String:inputbuffer]uppercaseString];
    //saisir le titre du livre
    fgets(inputbuffer, 200, stdin);
    chaineRech=[[NSString alloc] initWithUTF8String:inputbuffer];
    [theBookNook findBookWithString:chaineRech ofType:typeRech inArray:listeLivres];
    dans la fonction findBookWithString:ofType:inArray:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    - (void)findBookWithString:(NSString *)whichString 
    				  ofType:(NSString *)newType
    				 inArray:(NSMutableArray *)myList{
    	Book *book;	
    	//je compare si c'est une recherche par auteur
    	if ([newType isEqualToString:@"AUTEUR"]) {
               //je parcours ma bibliothèque
    		for (NSString * key in myBookStore) {
    			book=[myBookStore objectForKey:key];
                           //si c'est le même auteur je le rajoute à mon tableau
    			if ([book.author isEqualToString:whichString]) {
    				[myList addObject:book];
    			}
    		}
    	}else {
                    //si c'est une recherche par titre, je recherche la clé
    		book=[myBookStore objectForKey:whichString];
    		if (book != nil) {
    				[myList addObject:book];
    		}		
    	}
    }

  2. #2
    Membre régulier
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Points : 85
    Points
    85
    Par défaut
    un replace de \n par rien devrait résoudre ton problème...
    Regarde la définition de la Class NSString sur la doc Apple.

    ++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    merci,
    je cherchais midi à 14h, effectivement un simple stringByReplacingOccurancesOfString:withString: résoud mon problème.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 934
    Points : 4 347
    Points
    4 347
    Par défaut
    Citation Envoyé par celeborn56 Voir le message
    merci,
    je cherchais midi à 14h, effectivement un simple stringByReplacingOccurancesOfString:withString: résoud mon problème.
    mais ridiculement inefficace…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdio.h>
     
    char *fgetln(FILE *stream, size_t *len);
    vous donne la longueur de la chaîne entrée en retour dans le paramètre len (y compris le \n) et
    (le pointeur retourné par fgetln ne vous appartient pas, voir man fgetln)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    - (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
    vous permet de créer la NSString en spécifiant la longueur du buffer (donc len-1 dans votre cas).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    merci pour cette piste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Découper une chaine sans délimiteur
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 13/04/2006, 20h26
  2. couper une chaine sans espaces
    Par djibril38 dans le forum Langage
    Réponses: 4
    Dernier message: 14/03/2006, 15h43
  3. Réponses: 9
    Dernier message: 30/11/2005, 19h18
  4. vba excel - Comment saisir une cellule sans faire entrer
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/11/2005, 18h50
  5. variable $_ sans retour chariot
    Par samipate dans le forum Langage
    Réponses: 1
    Dernier message: 11/11/2005, 18h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo