char *p = " woohoo";
int condition = /* some calculation applied to p */
/* to look for all 0x20/blanks/spaces only */
if (condition)
{
}
else
{
printf("not ");
}
printf("all spaces\n");
2
A
Répondre
8
One-liner:
int condition = strspn(p, " ") == strlen(p);
Un peu plus optimisé:
int condition = p[strspn(p, " ")] == '\0';
1
Si vous voulez un moyen rapide pour ce faire, la meilleure chose qui me vient à l'esprit est d'écrire votre propre fonction (je suppose que vous ne recherchez que des caractères).
int yourOwnFunction(char *str, char c) {
while(*str != '\0' && *str != c) {
str++;
}
return *str == '\0';
}
Alors il vous suffit de tester
if(yourOwnFunction(p,' ')) {
...
} else {
...
}
-moi si je mal compris quelque chose :) Btw
Je n'ai pas testé, mais cela devrait être dans le pire des cas aussi vite comme l'autre méthode proposée. Si vous voulez juste une solution (élégante) de strager à un seul revêtement est la voie à suivre!
+0
C'est sympa en ce qu'il court-circuite, quand un non vide est rencontré. – EvilTeach
Questions connexes
- 1. Quelles sont les options disponibles pour VisualSVNServerHooks.exe?
- 2. Quelles sont les bonnes techniques pour tester les performances des parties Web et des contrôles SharePoint?
- 3. Quelles sont les techniques pour créer des zones de défilement?
- 4. Quelles techniques d'analyse informataion sont disponibles pour l'analyse qualitative des données générées par les utilisateurs?
- 5. Java P2P - quelles sont les options disponibles?
- 6. Quelles sont les stratégies d'intégration disponibles?
- 7. Quelles sont les polices disponibles sur Android?
- 8. Quelles sont les stratégies pour tester un planificateur à l'unité?
- 9. Quelles sont les options disponibles pour tester flex/flash avec Perl?
- 10. Quelles icônes sont disponibles pour afficher une notification avec libnotify?
- 11. Quelles méthodes sont disponibles pour afficher les fichiers sur iPhone?
- 12. Quelles sont les extensions PHP disponibles pour TCP Socket Networking?
- 13. Modélisation des processus métiers, quelles sont les techniques?
- 14. Regex pour tester si une chaîne d'entrée contient un certain nombre de caractères
- 15. Quelles autres API sont disponibles pour les hôtels?
- 16. Quelles sont les méthodes disponibles pour stocker des fichiers séquentiels?
- 17. Quelles sont les différentes techniques de mémoisation en Java?
- 18. Quelles sont les techniques d'évaluation pour les projets HCI (sans impliquer les utilisateurs, ou un psychologue)?
- 19. Quelles sont les exigences techniques et le format de base raisonnable pour une icône de l'iPhone?
- 20. Objective-C - Quelles sont les techniques/objets utilisés
- 21. Quelles sont les fonctionnalités de sécurité disponibles dans Struts?
- 22. Quelles sont les bonnes techniques pour organiser JS inclut pour un grand site Web?
- 23. quelles sont les techniques actuellement impliquées pour accélérer la prochaine génération de moteurs JavaScript?
- 24. Quelles sont les options disponibles pour accepter les paiements par carte de crédit via un iPhone?
- 25. Apache Velocity: Quelles sont les variables disponibles dans les templates?
- 26. Quelles sont les nouvelles fonctionnalités du navigateur disponibles aujourd'hui?
- 27. Quelles sont les options disponibles pour un développeur vb.net lors de l'utilisation de Fluent NHibernate?
- 28. Tester les 3 premiers caractères dans une chaîne looong (efficacement)
- 29. Quelles bibliothèques tierces sont disponibles pour le développement de l'iPhone?
- 30. Quelles sont les techniques pour limiter les dépendances de compilation dans les projets C++?
+1 Le second est * significativement * optimisé plutôt que * légèrement *, cependant, pour les raisons discutées ici: http://www.joelonsoftware.com/articles/fog0000000319.html – Clifford
ya, il fait logiquement un passage sur le chaîne au lieu de 2. Que diriez-vous d'une chaîne vide? – EvilTeach
Ya. Cela fonctionne pour ma situation. Une chaîne vide renvoie true, ce qui me dit qu'il n'y a pas d'informations utiles dans la chaîne de caractères. – EvilTeach