NSString et fin de chaà®ne

RocouRocou Membre
07:03 modifié dans API AppKit #1
J'essaie d'afficher un NSString de la façon suivante:

NSString *machaine=@toto;

NSLog(@cette chaine %@ est bien curieuse", machaine);

A l'exécution j'obtiens:
cette chaine toto

le reste ("est bien curieuse") n'apparaà®t pas. y aurait-il un caractère parasite en fin de chaà®ne 'machaine'?



Pour info, machaine n'est pas initalisé comme ci-dessus (c'est pour ne pas surcharger ma question).
Voici le code:

//bout de code
[popClient removeAllItems]; //popClient est un NSPopupButton

NSString *query = @SELECT clients.nom FROM clients ORDER BY clients.nom;
NSDictionary *leDico;

PGSQLRecordset *rs = [connection open:query];
if (rs != nil) {
if (![rs isEOF])
{
NSInteger i=0;
while (![rs isEOF])
{
leDico=[rs dictionaryFromRecord];

[popClient insertItemWithTitle:[leDico valueForKey:@nom] atIndex:i];
i=i++;
[rs moveNext];
}   

}
}

//Autre bout de code
NSMenuItem *litem = [popClient selectedItem];

NSString * machaine =[litem title];

NSLog(@cette chaine %@ est bien curieuse", machaine);

Réponses

  • Philippe49Philippe49 Membre
    février 2009 modifié #2
    Tu as essayé de faire écrire les caractères un à  un dans une boucle ?
    fprintf(stderr,"\n");
    for(NSUInteger i=0;i<[machaine length];i++)
       fprintf(stderr,":%d %c:",[machaine characterAtIndex:i],[machaine characterAtIndex:i]);
    fprintf(stderr,"\n");
  • RocouRocou Membre
    février 2009 modifié #3
    dans 1234369148:

    Tu as essayé de faire écrire les caractères un à  un dans une boucle ?
    fprintf(stderr,"\n");
    for(NSUInteger i=0;i<[machaine length];i++)
       fprintf(stderr,":%d %c:",[machaine characterAtIndex:i],[machaine characterAtIndex:i]);
    fprintf(stderr,"\n");


    Je viens de tester (merci pour le code tout fait  8--) )

    Dans machaine il devrait y avoir "Alice"
    Voici ce que j'obtiens avec ton code: (ce qui est fabuleux, c'est que tout ce que j'écris dans CE message après mon copier-coller du résultat disparaà®t! En outre après le zéro il y a deux point ":" qui s'obstinent à  disparaitre dés que je publie le message...
    :65 A::108 l::105 i::99 c::101 e::0
  • Philippe49Philippe49 Membre
    07:03 modifié #4
    Le 0='\0' final explique tout : Le caractère de fin de chaà®ne en C (\0') arrête l'écriture lors du NSLog, qui n'est qu'un printf ...
    A la saisie il n'est pas éliminé comme il le devrait, il faut donc éliminer ce dernier caractère.
  • RocouRocou Membre
    07:03 modifié #5
    dans 1234370248:

    Le 0='\0' final explique tout : Le caractère de fin de chaà®ne en C (\0') arrête l'écriture lors du NSLog, qui n'est qu'un printf ...
    A la saisie il n'est pas éliminé comme il le devrait, il faut donc éliminer ce dernier caractère.

    Génial! Un grand merci.
    Je ne sais pas, par contre pourquoi ma chaà®ne contient cet '\0'
  • RocouRocou Membre
    07:03 modifié #6
    dans 1234374373:

    Je ne sais pas, par contre pourquoi ma chaà®ne contient cet '\0'

    J'ai ma réponse: ma version du framework était buggée. Je l'ai mise à  jour et tout roule.
    D'autres bugs ont été corrigés et notamment un gros problème avec la méthode isEOF de la classe PGSQLRecordset.
Connectez-vous ou Inscrivez-vous pour répondre.