![](/img/trans.png)
[英]C char pointer vs pointer to char array, increment dynamic allocation
[英]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.