C 为什么赋值j=i+;第二个for循环中的1不';我不能正常工作
我得到了一个奇怪的行为:在下面的C 为什么赋值j=i+;第二个for循环中的1不';我不能正常工作,c,C,我得到了一个奇怪的行为:在下面的for-循环中,我会在字符串文本中找到相同的字符并将它们聚集在一起(例如“bdsabgs”->“bbssdga”)。我遇到的问题是在的第二个循环中,在第二次迭代中,当I=1时,j值不是从2开始的,而是从一些嘲笑值开始的(例如2860)。有人能解释一下原因和可能的解决办法吗?提前谢谢你 for (int i = 0; text[i+1] != '/0'; i++) { for (int j = i + 1; text[j] != '
for
-循环中,我会在字符串文本中找到相同的字符并将它们聚集在一起(例如“bdsabgs”->“bbssdga”)。我遇到的问题是在的第二个循环中,在第二次迭代中,当I=1
时,j
值不是从2开始的,而是从一些嘲笑值开始的(例如2860)。有人能解释一下原因和可能的解决办法吗?提前谢谢你
for (int i = 0; text[i+1] != '/0'; i++)
{
for (int j = i + 1; text[j] != '/0'; j++)
{
if (text[i] == text[j])
{
temp = text[j];
text[j] = text[i + 1];
text[i + 1] = temp;
break;
}
}
}
好的,你的代码中有一些问题
这项工作:
int main()
{
char text[20]="bdsabgs";
char temp;
for (int i = 0; text[i+1] != '\0'; i++)
{
for (int j = i + 1; text[j] != '\0'; j++)
{
if (text[i] == text[j])
{
temp = text[j];
text[j] = text[i + 1];
text[i + 1] = temp;
break;
}
}
}
printf("%s\n", text);
return 0;
}
结果:bbssdga
另一方面,在可能不满足终止条件的情况下运行循环是不好的做法。我建议您在{…}
时使用,同时使用'\0'
和sizeof(text)
作为终止条件,或者先在文本上运行strlen
,然后使用它。您的/0
符号就是错误的。它应该是\0
,然后一切都应该按预期工作:
#include <stdio.h>
int main()
{
char text[] = "this is my text";
int i,j,temp;
for (i = 0; text[i+1] != '\0'; i++) {
for (j = i + 1; text[j] != '\0'; j++) {
if (text[i] == text[j]) {
temp = text[j];
text[j] = text[i + 1];
text[i + 1] = temp;
break;
}
}
}
printf("my text: %s", text);
return 0;
}
#包括
int main()
{
char text[]=“这是我的文本”;
int i,j,温度;
对于(i=0;文本[i+1]!='\0';i++){
对于(j=i+1;文本[j]!='\0';j++){
如果(文本[i]==文本[j]){
温度=文本[j];
文本[j]=文本[i+1];
文本[i+1]=温度;
打破
}
}
}
printf(“我的文本:%s”,文本);
返回0;
}
输出:my text:tttssii mhexy
'/0'
不是空终止符int j=i+1循环中的code>将把j
设置为比i
多1,直到int中的数字用完为止,您的问题在别处。请同时提供文本数组的定义。否则,您的示例将无法完全重现。而且temp
未定义。是的,就是“\0”!谢谢你!