为什么这个C程序没有';t给出给定字符串的倒数?

为什么这个C程序没有';t给出给定字符串的倒数?,c,reverse,c-strings,pointer-arithmetic,function-definition,C,Reverse,C Strings,Pointer Arithmetic,Function Definition,为什么这个程序没有给出给定字符串的倒数(computer),尽管length()函数工作正常(当我注释其他代码并仅运行该部分时),并给出正确的输出,但第二个reverse()函数没有给出任何输出 #include <stdio.h> #include <string.h> int length(char *); char *reverse(char *, int); int main() { char word[] = "COMPUTER";

为什么这个程序没有给出给定字符串的倒数(
computer
),尽管
length()
函数工作正常(当我注释其他代码并仅运行该部分时),并给出正确的输出,但第二个
reverse()
函数没有给出任何输出

#include <stdio.h>
#include <string.h>

 int length(char *);
 char *reverse(char *, int);

int main()
{
char word[] = "COMPUTER";
int count;

count = length("COMPUTER");

printf("%s", reverse(word, count));

}

int length(char *p)
{
int count;
for (count = 0; *(p + count) != '\0'; count++);
    
 return (count);
 }

 char *reverse(char *p, int count)
 {
char temp;
for (int i = 0; i < count / 2; i++)
{
    temp = *(p + i);
    *(p + i) = *(p - (count - 1) - i);
    *(p - (count - 1) - i) = temp;
}
return (p);
 }
#包括
#包括
整数长度(字符*);
字符*反向(字符*,整数);
int main()
{
字符字[]=“计算机”;
整数计数;
计数=长度(“计算机”);
printf(“%s”,反向(字,计数));
}
整数长度(字符*p)
{
整数计数;
对于(count=0;*(p+count)!='\0';count++);
返回(计数);
}
字符*反向(字符*p,整数计数)
{
焦炭温度;
对于(int i=0;i
这些表达式语句

*(p + i) = *(p - (count - 1) - i);
*(p - (count - 1) - i) = temp;
不正确,

看来你是说

*(p + i) = *(p + ( count - 1 ) - i);
*(p + (count - 1) - i) = temp;
也不是这个说法

count = length("COMPUTER");
这样写在逻辑上会更加一致

count = length( word );
这是一个演示程序

#include <stdio.h>

size_t length( const char * );
char * reverse( char *, size_t );
 
int main(void) 
{
    char word[] = "COMPUTER";
    size_t count = length( word );

    puts( reverse( word, count ) );

}

size_t length( const char *p )
{
    size_t count = 0;

    while ( *( p + count ) != '\0' ) ++count;
    
    return count;
}

char * reverse( char *p, size_t count )
{
    for ( size_t i = 0; i < count / 2; i++ )
    {
        char temp = *( p + i );
        *( p + i ) = *( p + count - 1 - i );
        *( p + count - 1 - i ) = temp;
    }
    
    return p;
}

阅读有关调试代码的提示。您的
-(count-1)
s不应该是
+(count-1)
?进行基本调试。在调试器中运行程序。查看
count
值,查看每一步交换的字符,转储
p
内容,等等。通过一些适度的调试,这应该是显而易见的。也许以
p[i]
p[count-i-1]
的形式编写会让它更清晰。
RETUPMOC