C 控制变量的位置对回路体的影响
错误C 控制变量的位置对回路体的影响,c,string,C,String,错误 #包括 #包括 内部主(空) { char*str=“世界各地”; 字符删除空间[256]=“\0”; printf(“%s\n”,str); 对于(大小i=0;str[i]!='\0';++i) { 尺寸j=0; 如果(str[i]!='') { delu空间[j]=str[i]; ++j; } } printf(“%s”,del_空格); 返回0; } 正确的 #include<stdio.h> #include<string.h> int main(voi
#包括
#包括
内部主(空)
{
char*str=“世界各地”;
字符删除空间[256]=“\0”;
printf(“%s\n”,str);
对于(大小i=0;str[i]!='\0';++i)
{
尺寸j=0;
如果(str[i]!='')
{
delu空间[j]=str[i];
++j;
}
}
printf(“%s”,del_空格);
返回0;
}
正确的
#include<stdio.h>
#include<string.h>
int main(void)
{
char *str = " H el l o, Wor ld ";
char del_space[256] = "\0";
printf("%s\n",str);
for (size_t i = 0;str[i] != '\0';++i)
{
size_t j = 0;
if (str[i] != ' ')
{
del_space[j] = str[i];
++j;
}
}
printf("%s",del_space);
return 0;
}
#包括
#包括
内部主(空)
{
char*str=“世界各地”;
字符删除空间[256]=“\0”;
printf(“%s\n”,str);
对于(大小i=0,j=0;str[i]!='\0';++i)
{
如果(str[i]!='')
{
delu空间[j]=str[i];
++j;
}
}
printf(“%s”,del_空格);
返回0;
}
为什么第一条路错了,第二条路对了?我只是移动了一个控制变量的位置,但是第一种方法中del_空间的值是错误的?我使用的编译器是GCC8.2.3。这有什么特殊原因吗?第一个编译器每次通过循环设置
j=0
。第二个只设置j=0
,这是第一次通过循环。因为,在第一个示例中,j
在每次循环迭代时被重置为零,所以所有非空格字符都将放入delu空格[0]
(即j++
实际上是一个无操作)。最后一个字符串将只有一个非空格字符[如果str
有任何非空格字符]。反之亦然。@TheDark true。现已修复:-)
#include<stdio.h>
#include<string.h>
int main(void)
{
char *str = " H el l o, Wor ld ";
char del_space[256] = "\0";
printf("%s\n",str);
for (size_t i = 0,j = 0;str[i] != '\0';++i)
{
if (str[i] != ' ')
{
del_space[j] = str[i];
++j;
}
}
printf("%s",del_space);
return 0;
}