很久很久没有写C程序了,C++已经深入骨髓。写起C来居然还是非常吃力。
比如在C中,数组和字符串是不能互相赋值的。这可难为了。输出一个数组还要一个一个输出,
下面是一个下例子,就是将一个字符串反转。
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 1024
static char revbuf[MAXLINE];
void *reverse(char * buf,int len)
{
int i,n;
if(len > MAXLINE || len < 0)
{
printf("length is error\n");
}
i = 0;
n = len;
while(i < len)
{
revbuf[i++] = *(buf+(--n));
}
revbuf[i] = '\n';
}
int main()
{
char *buf = "OK,I am test";
reverse(buf,strlen(buf));
fwrite(revbuf,1,strlen(buf)+1,stdout);
}
为什么C中字符串不能当数组使用呢?
在另外一个地方似乎找到了答案:
In C arrays are non-modifiable lvalues, you can't change what they point to since they don't point anywhere in the first place.