繁体   English   中英

递增字符数组指针

[英]Increment Char Array Pointer

是否可以像 char 指针一样递增/推进 char 数组?

例如,我可以为字符指针执行此操作:

while (*cPtr) 
   printf("c=%c\n", *(cPtr++));

但我无法做到这一点:

// char cArray[] = "abcde";
while (*cArray)
   printf("c=%c\n", *(cArray++));  // Compile error: 19 26  [Error] lvalue required as increment operand

目的是当我不知道数组的长度时能够迭代一个字符数组。 我的想法是,除非有更简单的方法,否则我只想前进直到找到一个空字符为止?

char a[] = "abcde";
int index = -1;

while (a[++index]) 
   printf("c=%c\n", a[index]);

是否可以像 char 指针一样递增/推进 char 数组?

与指针不同,数组不是左值,您不能修改它。 这是数组和指针之间的主要区别。

做这样的事情:

char cArray[] = "abc def";
char *p = &cArray[0];

while (*p)
   printf("c=%c\n", *(p++));

你可以做:

for(int i = 0; i < 5; i++) // if you know the length
    printf("c=%c\n", a[i]);

或使用 sizeof() 获取大小并将i < 5替换为i < size

int size = (sizeof(a) / sizeof(*a))

我在 keil uVision 下成功使用了它:

char buffer[512];
uint8_t var[512];  // uint8_t = integer 8bit
for(int i = 0; i < 128; i = i + 4)
sprintf(&buffer[i],"%03d,", var[y]); //this will put 4 bytes in buffer

更好的方法来做到这一点:

char       buffer[128];
uint8_t int_buffer[24];  // gets updated in an interrupt - some sensors values
uint8_t          i = 0;
uint8_t  PrintSize = 0;

while(/*myFile is smaller than 1Mb..*/)
   {
    PrintSize = 0;
    i = 0;
    while(i < 23)
        {
        PrintSize += sprintf(buffer + PrintSize,"%01d,",int_buffer[i]);
        i++;
        }
        PrintSize += sprintf(buffer + PrintSize,"%01d\n", int_buffer[23]);

    //write buffer to a file in my app
   }

文件内容是这样的:

41、1、210、243、120、0、210、202、170、0、14、28、0、0、0、1、85、0、5、45、0、0、0、1 40、1、215、255、119、0、215、255、1403、7 ,0,1,85,0,5,46,0,0,0,1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM