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将把
j
设置为比
i
多1,直到int中的数字用完为止,您的问题在别处。请同时提供文本数组的定义。否则,您的示例将无法完全重现。而且
temp
未定义。是的,就是“\0”!谢谢你!