计算变量中的字符数

 收藏

你好

我需要在ansi c中进行

目前似乎无法使其正常工作。

unsigned char *s

    scanf("%x", &s);

然后,我想根据变量s中包含的字符数量来执行if语句。最简单的方法是什么? s中包含的内容示例为“ 4200FF”,提示用户插入十六进制地址。

printf(“ \ n十六进制的内容为%lx \ n”,十六进制“);

正确显示我要计算的数量

谢谢

回复
  • 沫沫浅言 回复

    但是如果您尝试使用此代码,它甚至会计算字符中的空格数,因此请使用或尝试以下操作

    int numofcharacters=0,c;
    printf("enter the character: ");
    fgets(ch,sizeof(ch),stdin);
    for(int i=0;ch[i]!='\0';i++)
    {
    if(ch[i]==32)
    {
    c++;\\counts the number of spaces
    
    }
    else
    {
    numofcharacters++;\\ counts the number of charatcer
    }
    printf("%d",numofcharacters);
    

  • 没文化 回复

    您要问两件事,希望将它们融合在一起。另外,您最初的期望是错误的。

    %x是数字而不是字符。unsigned char * s是指向字符的指针,但实际上并不指向一个。它指向某个地方,但没人知道。4200FF是3个字符,而不是单个字符。 s或* s的内容是4200FF吗?

    s中包含的内容示例为“ 4200FF”,提示用户插入十六进制地址。

    为什么4200FF定义“用户提示”?我认为这只是一个未初始化的指针而已。

  • miure 回复

    number = 420068;
                while(number) 
                {
                digits ++;
                number /= 10;
                }
    
                printf("\n Digits: %i\n", digits);
    

    这一直有效,直到变量号中使用十六进制字母为止,因为我同时将数字和数字都设置为int。我得到的输出为6-正确

    如果我做数字= s;

    由于某种原因,我得到的输出为7?

    谢谢

  • UFO 回复

    喔喔喔喔换一种说法:

    我想输入一个十六进制值。然后分析该值并确定该值包含多少个十六进制对。

    六角对可以容纳的最大价值是多少? 只需将这个数字除以一个循环就可以了,就像您对10进行的操作一样。

  • 若弱C 回复

    您好-对不起,我模棱两可,我也有点迷茫。

    我所知道的是

    printf("\nPlease enter the start address (hex) for data to be written: ");
                scanf("%x", &s);
    

    填充s。

    printf("\nTest %lx\n", s);
    

    显示我要计数的内容(在测试中,我将4200FF放入提示中,并打印回给我。

    在那种情况下,是的,我想将其计为3,因为它们是十六进制对。我怎样才能做到这一点?

  • ueaque 回复

    int numofcharacters=0;
    printf("enter the character: ");
    fgets(ch,sizeof(ch),stdin);
    for(int i=0;ch[i]!='\0';i++)
    {
    numofcharacters++;
    }
    printf("%d",numofcharacters);