gpt4 book ai didi

c - c中的字符串扫描

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:29 25 4
gpt4 key购买 nike

所以这是一个奇怪的问题,当:

if( x[j] == x[j++]) 然后 scanf 函数工作正常,但如果我将它更改为 if( x[ j] == x[j + 1]) 然后字符数组的 scanf 函数被无限次调用。

它发生在两个独立的 IDE 中(但 gcc 编译器)。两个看似无关的语句(for 循环和 if 语句)如何相互影响?

main( )
{
char line[10][100], *x;
int i, j, sum;

scanf("%d", &tc);
for(i = 0; i < tc; i++)
{
scanf("%s", line[i]);
}


for( i = 0; i < tc; i++)
{
j = 0;
sum = 0;
x = line[i];

while( x[j] != '\0' )
if(x[j] == x[j+1])
sum++;

printf("%d\n", sum);
}

return 0;
}

最佳答案

在这个循环中:

        while( x[j] != '\0' ) {
if(x[j] == x[j+1]) {
sum++;
}
}

你没有增加 j ,所以这是一个无限循环,在 x[0] 重复测试相同的两个字符和 x[1] .

要解决此问题,请将其更改为:

        while( x[j] != '\0' ) {
if(x[j] == x[j+1]) {
sum++;
}
j++; // <<< increment j on each iteration
}

或使用 for 使其更简洁循环:

        for (j = 0; x[j] != '\0'; ++j) {
if (x[j] == x[j+1]) {
sum++;
}
}

关于c - c中的字符串扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28938964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com