Analyser une Chaîne de caractères en C
En utilisant simplement C
Je voudrais analyser une chaîne de caractères et:
- compter les occurrences d'un caractère dans une chaîne de caractères (par exemple, compter tous les
'e'
s dans un passé dans la chaîne) - Une fois compté (ou même que je suis de comptage) remplacer le " e " avec 3
et la question est ....?
est-ce un travail?
Les sons comme des devoirs. Vous devriez essayer de résoudre le problème vous-même - c'est très facile - et ensuite poser des questions ici si vous ruiner dans des problèmes spécifiques.
il pourrait être bon de demander avant d'en assumer les devoirs.
si ce n'est en effet devoirs et vous ne voulez pas la solution, veuillez étiqueter comme tel. Étant donné les solutions ne sera pas vous aider dans le long terme. Et vous devriez au moins essayer d'abord, vous aurez plus de les aider de cette façon (et à apprendre plus vite).
est-ce un travail?
Les sons comme des devoirs. Vous devriez essayer de résoudre le problème vous-même - c'est très facile - et ensuite poser des questions ici si vous ruiner dans des problèmes spécifiques.
il pourrait être bon de demander avant d'en assumer les devoirs.
si ce n'est en effet devoirs et vous ne voulez pas la solution, veuillez étiqueter comme tel. Étant donné les solutions ne sera pas vous aider dans le long terme. Et vous devriez au moins essayer d'abord, vous aurez plus de les aider de cette façon (et à apprendre plus vite).
OriginalL'auteur | 2009-05-29
Vous devez vous connecter pour publier un commentaire.
OK, vous êtes paresseux, ou coincé, en supposant coincé.
Vous avez besoin d'une fonction comportant une signature à quelque chose comme
À l'intérieur de la fonction, vous devez
occurrences
la chaîne à la fin de l'
vérifier le courant char la
charToFind,
les occurrences et d'effectuer le
remplacement
le décompte des occurrences
OriginalL'auteur Binary Worrier
Cette fonction prend une chaîne de caractères, remplacer tous les " e " par "3", et renvoie le nombre de fois où il a effectué la substitution. C'est sûr, c'est propre, c'est rapide.
Parce que c'est une solution pour des devoirs à faire à la question, je pense (non, je n'étais pas le downvoter). L'affichage fonctionne réellement code de solutions pour les devoirs encourage simplement mauvais comportement sur une partie des gens paresseux 🙂
Upvoting depuis les devoirs de la balise n'était pas dans la question d'origine, il a été ajouté par quelqu'un d'autre.
Si les devoirs de la balise est là ou pas, il n'est pas utile à tout le monde (includingb l'interlocuteur) pour donner des réponses à ces "post da codez pleez" type de questions.
aussi, la solution est fausse, je suppose, qu'est-ce que la chaîne est de type char * s = "Nom"; dans ce cas, *p=3 donnera une erreur comme "Nom" de la constante de chaîne
OriginalL'auteur Dietrich Epp
Voici un shell pour obtenir vous avez commencé. Demander ici si vous avez besoin d'aide.
OriginalL'auteur Stefan Mai
En général, il vaut mieux utiliser une fonction de la bibliothèque plutôt que de rouler votre propre. Et, comme il arrive, il n'y est une fonction de la bibliothèque standard qui recherche une chaîne de caractère, et renvoie un pointeur vers elle. (Il s'agit d'une chaîne de caractères, donc les chercher parmi les fonctions qui ont le préfixe "str") (une fonction de La bibliothèque sera presque certainement être optimisé pour l'utilisation d'spécialisés CPU opcodes pour la tâche, qui écrit à la main le code ne serait pas)
Mis un temp pointeur (dire "ptr") au début de la chaîne.
Dans une boucle, faire appel à la fonction ci-dessus en utilisant ptr en tant que paramètre, et la valeur de la valeur de retour.
Incrémenter un compteur.
Définir le caractère au niveau du pointeur de "3" pause quand 'e' n'est pas trouvé.
OriginalL'auteur James Curran
Certains d'entre vous les gars êtes débutant dans le milieu.
Un meilleur départ serait
Je serais intéressé de savoir pourquoi cela pourrait être le cas. À tout le moins, les tests de préciser ce que la routine est à faire, et confirme qu'il ne sorte
Je pense que les tests sont utiles, mais je pense que la douleur de les écrire et de les travailler à partir de zéro est plus dans C que chez les non-pointery langues et donc le bénéfice du TDD est diminuée. Si elle ne parvient pas non correctement, il est beaucoup plus difficile de savoir pourquoi. Si elle passe, elle peut encore avoir perturbé des choses pour les autres tests.
Je ne peux pas dire que mon expérience, mais peut-être que cela dépend de ce genre de code est en cours d'écriture
J'ai fait quelques TDD dans C, et il fonctionne parfaitement bien. Je pense que si vous avez travaillé dans C, on apprend à être prudent avec NULLE et non initialisé les variables locales. Vous allez faire beaucoup de "AssertNotNull()" dans vos tests. Ensuite, vous vous inquiétez surtout sur les boucles infinies et de la marche, à la fin de tampons. L'ancien serrures de votre suite de tests dans une autre langue; le dernier est un crash en C au lieu de une exception, mais ce n'est pas vraiment commun.
OriginalL'auteur David Sykes