pointer arithmetic in C for getting a string

后端 未结 4 1621
暗喜
暗喜 2021-01-26 05:59

I want to get the elements of an array of characters, but no success at all, the problem is that I only get the first and last element and nothing more, my code is:



        
相关标签:
4条回答
  • 2021-01-26 06:38

    You are using the same character (*cad or cad[0]) for all printf's. What you need is to use the index to get the next char in each iteration. Also i needs to be a pointer to char:

    void getcharacters(char *cad)
    {
     int l;
     char *i;
     l=strlen(cad);
     for (i=&cad[0];i<&cad[l];i++){
         printf("%c\n", *i );
     }
    }
    
    0 讨论(0)
  • 2021-01-26 06:44

    Other answers have told you why it plain doesn't work, I'm wonder why you're not just iterating until the null terminator?

    void getcharacters(char *cad)
    {
     char *i;
     for (i = cad; *i; i++) {
         printf("%c\n",*i);
     }
    }
    
    0 讨论(0)
  • 2021-01-26 06:46

    Why don't you iterate from first character to the last one and accessing them as array index

    int i;
    int l=strlen(cad);
    for (i=0;i<l;i++)
    {
      printf("%c\n",cad[i]);
    }
    
    0 讨论(0)
  • 2021-01-26 06:47

    The size of an int can be as big as 4 x the size of a char, so when you do i++ you are actually skipping 3 chars.

    Also, you print out *cad instead of *i.

    To fix change i to char* and print *i instead of *cad

    0 讨论(0)
提交回复
热议问题