Imaginez que j'ai deux chaînes, l'une d'elles est une URL comme "/sdcard/test.avi" et l'autre est "/sdcard/test.mkv". Je veux écrire une instruction si vous recherchez si les quatre derniers caractères de la chaîne sont ".avi" ou non dans C. Comment puis-je faire cela? Utiliser STRCMP ou quoi et comment? P>
6 Réponses :
Si vous avez un tableau pointeur à caractère, vous donnera un pointeur aux quatre derniers caractères de la chaîne. . Vous pouvez ensuite utiliser str code>, alors ceci:
strcmp () code>. Notez que vous aurez besoin de faire face au cas où
(len <4) code>, auquel cas, ce qui précède ne sera pas valide. P> p>
Merci.it a fixé le problème.
Sa solution simple. Je viens d'avoir besoin de ça aujourd'hui! Merci.
dans pure c Vous pouvez également recourir à un comparaison manuelle:
Il suffit d'effectuer Assurez-vous que les deux chaînes ont au moins 4 caractères. p> si (STRCMP (STR1 + SHLEN (STR1) -4, STRI2 + SHLEN (STRI2) -4) == 0) {} code>. p>
Vous avez besoin peut-être & str1 [SHLEN (STR1) -4] code> etc.
Les arithmétiques du pointeur ont travaillé pour être mieux que Strlen - offset] code>
Voici une fonction générique pour tester:
int EndsWithTail(char *url, char* tail) { if (strlen(tail) > strlen(url)) return 0; int len = strlen(url); if (strcmp(&url[len-strlen(tail)],tail) == 0) return 1; return 0; }
Vous manquez une parenthèse finale pour votre première instruction si
#include <dirent.h> #include <string.h> int main(void) { DIR *dir; struct dirent *ent; char files[100][500]; int i = 0; memset(files, 0, 100*500); dir = opendir ("/sdcard/"); if (dir != NULL) { /* Print all the files and directories within directory */ while ((ent = readdir (dir)) != NULL) { strcpy(files[i], ent->d_name); if(strstr(files[i], ".avi") != NULL) { printf("\n files[%d] : %s is valid app file\n", i, files[i]); i++; } } closedir (dir); } return 0; }
Bienvenue dans le débordement de la pile! Plutôt que de publier uniquement un bloc de code, veuillez expliquer pourquoi ce code résout le problème posé. Sans explication, ce n'est pas une réponse.
Que diriez-vous ...
if (!strcmp(strrchr(str, '\0') - 4, ".avi")){ //The String ends with ".avi" }