7
votes

Obtenir un personnage référencé par index dans une chaîne C

J'ai une chaîne.

a
b
c

c

8 commentaires

Est-ce que ce devoir? Écrire le code à itérer sur des caractères d'un tableau est plutôt trivial pour écrire, relativement parlant.


Donc, apparemment, vous pouvez utiliser qt4 ( Stackoverflow.com/Questtions/2044141/... ) Mais vous ne pouvez pas itérer à travers un tableau ?? Aucun moyen, ceci est une blague.


J'essaie d'apprendre c de la terre. Qt et similaires font des choses faciles pour vous. Je veux apprendre les bases (comment les choses comme Qt sont implémentées). J'ai beaucoup googlé pour cela et je ne pouvais pas le trouver. Merci


Qt4 est C ++. Je sais comment faire cela en C ++, mais pas dans C.


Je pense que vous pouvez le faire en utilisant boost ou stl ou combiner les deux


Le moyen facile (comme indiqué dans la réponse de Ninefoingers) n'est pas toujours le vrai. Il y a parfois des caractères unicodes, Multibyte Chars, Chinase Chars. L'utilisation d'une bibliothèque unique aidera à fournir un universalisme.


@Honza connaissant C n'est pas nécessairement une mauvaise chose, mais Qt est implémenté en C ++, le même C ++ que vous utilisiez. C est son prédécesseur. Cependant, si vous êtes vraiment intéressé par la compréhension C, il y a beaucoup de livres autour qui ne sont pas mauvais du tout. Rechercher ce site pour "Liste des livres de programmation".


Vous pouvez le faire en C ++ exactement comme vous le feriez dans C, le plus valide Code C est également valide CODE C ++. C'est juste un tableau de caractères, vous avez sûrement utilisé des tableaux en C ++!?


4 Réponses :


11
votes

OK, bien, c'est une question pour que je vais y répondre, mais ma réponse va être légèrement inhabituelle: xxx

ceci n'est pas le moyen le plus simple d'atteindre le résultat souhaité; Cependant, il démontre les fondamentaux de ce qu'une chaîne est dans C. Je vous laisserai de lire ce que j'ai fait et pourquoi.


7 commentaires

Je suis désolé de penser que je suis ridicule. Cette réponse est parfaite. Je pense que j'ai enfin des chaînes dans C. merci!


@HONZA POKORNY: Ce n'était pas ridicule autant que c'était inhabituel car c'est une partie fondamentale de la langue qu'il était surprenante de voir quelqu'un ne savait pas comment les chaînes sont traitées dans C et C ++. C'est généralement l'une des premières choses que vous apprenez dans C et C ++ (et probablement à peu près toutes les autres langues). Je vous suggère de prendre un bon livre C ou C ++ (en fonction de celui que vous souhaitez apprendre) et d'apprendre vraiment les fondamentaux.


@Honza exactement. Ma pensée personnelle était que vous aviez vu un trop grand nombre de questions de style «donnez-moi le code» et pensez que vous feriez une langue dans la question de la joue. Oui, obtenez un livre comme @in Silico dit. J'ai également écrit cela à l'aide des pointeurs délibérément maladroitement. Il y a une solution plus simple (pas par beaucoup) mais elle ne démontre pas quelques choses que je voulais démontrer.


@HONZA: Non La réponse n'est pas "parfaite", elle est délibérément compliquée; Cela ressemble à la première phrase et commenté précédemment.


s = & string [0] ?! Pourquoi?? J'ai vu assez de tels non-sens dans le code existant; N'enseignez pas Newbies de cette façon.


@R parce que je ne voulais pas donner la réponse directe à la question, car l'OP verra une meilleure façon de le faire dès qu'il prend un livre. Espérons que cela lui donnera la pensée de ce que cela signifie véritablement. Je pense avoir précisé que ce n'était pas la façon habituelle de s'approcher des choses. Personnellement, je n'utiliserais jamais cette méthode particulière pour imprimer une chaîne, mais j'aurais aimé l'avoir vu plus tôt que moi.


C'est bien tant que la chaîne [] n'est pas une chaîne constante.



2
votes
void main(int argc, char** argv)
{
    char foo[] = "abcdefgh"; 
    int len = strlen(foo);
    int i = 0;
    for (i=0; i < len; i++)
    {
        printf("%c\n", foo[i]);
    }
    return 0;
}

0 commentaires

0
votes

Encore une autre façon xxx


0 commentaires

0
votes

Je trouve cette méthode plus utile que d'utiliser SHLEN (). Parce que les chaînes en C se terminent par un octet nul, nous pouvons les boucler comme ceci: xxx


0 commentaires