J'ai seulement accès à 'C' et j'ai besoin de remplacer les caractères dans un tableau de caractères. Je n'ai pas trouvé de solutions propres pour cette procédure relativement simple.Supprimer les caractères d'une chaîne dans C
Je suis passé un tableau de caractères, par exemple:
char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";
J'ai besoin de modifier ce tampon pour remplacer toutes les &
avec &
. Le tampon résultant n'a pas à remplacer strBuffer (un nouveau tampon peut être créé).
Des suggestions?
Edit:
Dans le passé, je l'ai fait la fonction strstr dans une boucle, mais était à la recherche d'une solution plus simple, peut-être l'équivalent C à la méthode String.Replace.
Edit:
Pour mes besoins immédiats, ce qui suit est tout ce que je dois.
char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";
char strTemp[1024];
char *s = (char*)strBuffer;
int i=0;
while (*s)
{
strTemp[i++] = *s;
if (strncmp(s,"&",5) == 0)
{
s += 5;
}
else
s++;
}
strTemp[i] = 0;
modifications futures:
- créer une fonction utilitaire pour stocker cette fonction.
- Transmettez la chaîne de recherche en tant que paramètre.
- Déterminer la longueur de la chaîne de recherche, de sorte que les 5 codés en dur peuvent être supprimés.
- Allouer dynamiquement la variable strTemp.
- Erreur lors de la vérification des chaînes vides et des caractères non trouvés.
EDIT:
I créé un blog en détail les étapes et fournir une solution plus souple:
http://www.solutionmaniacs.com/blog/2012/11/25/c-removereplace-characters-in-a-string.html
Est-ce que ce sont les devoirs? (Tout va bien si c'est le cas, il suffit de le marquer comme '[devoirs]' si approprié.) –
Toute méthode 'String.Replace' dans un langage de niveau supérieur va vraiment se résumer à' strstr() 'dans une boucle à le niveau C C ne concerne pas des idéaux si élevés comme «l'abstraction» et «la facilité d'utilisation». –
Merci à tous ceux qui m'ont aidé avec cette solution. Je suis un peu gâté en C# et je oublie comment faire une manipulation de chaîne relativement simple dans C. –