C> lien> Définir une chaîne et accéder à l'index> * dstPtr ++ = "0123456789ABCDEF" [nibble];

[Commentaire] de @SaitoAtsushi (http://qiita.com/7of9/items/92f5a0850370d3f3e558#comment-4cd1207dc70f48f1020d).

*dstPtr++ = "0123456789ABCDEF"[nibble];

Ce sera un article lié pour une recherche future.

Peut-il être détourné vers autre chose que la séquence de 0 à F?

Code associé

Un exemple de l'échec d'utilisation ci-dessus a été publié dans stackoverflow.

http://ideone.com/LoFO3r

#include<stdio.h>

char *convert(unsigned int num, int base)
{
    static char buff[33];
    char *ptr;

    ptr=&buff[sizeof(buff)-1];
    *ptr='\0';
    do
    {
      *--ptr="0123456789abcdef"[num%base];
      num/=base;
    } while(num!=0);
    return(ptr);
}

int main(){

    puts(convert(65,8));
    puts(convert(65,10));
    puts(convert(65,16));
    
	printf("%s = %s = %sn", convert(65,8), convert(65,10), convert(65,16));    

    return 0;
}

résultat


101
65
41
101 = 01 = 01n

~~ Il semble que vous deviez faire attention ici. ~~

Je pense que le problème ci-dessus est causé par autre chose que l'écriture «" 0123456789ABCDEF "[nibble];`.

http://ideone.com/0yHNQ0

Recommended Posts

C> lien> Définir une chaîne et accéder à l'index> * dstPtr ++ = "0123456789ABCDEF" [nibble];
Quelle est la différence entre les liens symboliques et les liens durs?
RDKit définit le modèle de réaction avec SMARTS et produit un réactif