我需要循环一个const char,我使用了一个简单的string循环示例:
const char *str;
for(int i = 0; i < 10; ++i)
{
str += " ";
}但当我试图编译时,我得到了这样的信息:
ubuntu@eeepc:~/Test_C_OS$ gcc -o内核.o -c kernel.c -Wall -Wextra -nostdlib -nostartfiles -nodefaultlibs kernel.c:26: error:“for”循环初始声明在C99模式之外使用 kernel.c:28:错误:对二进制+无效的操作数 ubuntu@eeepc:~/Test_C_OS$
我该怎么办?
发布于 2010-01-20 20:48:17
您的第一个错误是因为您已经完成了:
for (int i = 0; ...而不是:
int i;
for (i = 0; ...)(或者,你可以撇开这一点,在gcc的选择中加入-std=gnu99 )。
第二个错误是因为行:
str += " ";尝试添加两个指针值。在C中没有任何定义的语义--这没有任何意义。这里您想要做的事情甚至不太清楚--也许您想从一个空字符串开始,然后将字符串" "的10个副本附加到其中?如果是这样,则需要将其更改为以下内容:
char str[100]; /* Allocate space for a 99 character string, plus terminator */
int i;
str[0] = '\0'; /* Start with empty string */
for (i = 0; i < 10; i++)
{
strcat(str, " ");
}但是,在这种特殊情况下,因为您总是循环10次,所以根本不需要循环--您只需使用10个空格的字符串:
char str[100];
strcpy(str, " "); /* 10 spaces */( str[0] = '\0';是不必要的,因为我们现在使用的是strcpy,而不是strcat)。
发布于 2010-01-20 20:41:19
C89不支持在for表达式的第一部分中声明循环计数器。C99是这样的,但是大多数编译器都需要和显式选项(gcc的-std=c99)来打开它。做:
int i;
for ( i = 0; i < 10 ; ++i ) ...此外,不要在字符指针中添加字符:)
发布于 2010-01-20 20:46:45
你这里有两个问题
1) C89标准不允许声明在循环中
for(int i = 0; i < 10; ++i)应:
int i
for(i = 0; i < 10; ++i)2)您正在尝试添加两个指针值:
str += " ";这里应该做什么取决于您到底要用字符串str做什么。
https://stackoverflow.com/questions/2104739
复制相似问题