【发布时间】:2014-01-04 14:43:52
【问题描述】:
我对 char 指针有一个奇怪的行为。根据我对指针的了解,我应该能够通过向 char 指针的每个指向字符添加一个来移动它,因为 char 是一个字节。然而,情况似乎并非如此,使用增量运算符 +=、++,甚至将 char 指针设置为等于自身加一。这些似乎都没有像人们想象的那样影响指针。如果我只是简单地将一个数字或一个变量添加到我的 char 指针中,它就会像预期的那样完美地工作。
这不起作用:
void getNextWord(FILE * pFile)
{
char * w = (char *)malloc(MAX_WORD_SIZE * sizeof(char *));
char c;
while(c != ' ')
{
c = fgetc(pFile);
if(c != ' ')
{
*(w++) = c;
}
}
*(w++) = '\0';
printf("%s",w);
}
这确实有效:
void getNextWord(FILE * pFile)
{
char * w = (char *)malloc(MAX_WORD_SIZE * sizeof(char *));
int i = 0;
char c;
while(c != ' ')
{
c = fgetc(pFile);
if(c != ' ')
{
*(w + i) = c;
i++;
}
}
*(w + i) = '\0';
printf("%s",w);
}
有人知道为什么会这样吗?
【问题讨论】:
-
自增运算符实际上是在做你所期望的。问题出在你最后的
printf语句中。