只从函数返回一个字符,而不是c中的字符数组



我试着写一个程序来反转字符串而不使用strrev()函数。

我得到的问题是,当我运行程序时,我只得到'd'作为输出,而不是整个反向字符串'dlroW olleH'请帮我得到整个字符串。

#include<stdio.h>
#include<String.h>
char reverse(char s[])
{
int c, i, j;
for(i = 0,j = strlen(s) - 1; I < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
return *s;
}
void main()
{
char str[12] = "Hello World";
char result = reverse(str);
printf("%c", result);
}

程序中有几个问题:

  1. 没有这样的头文件String.h,但是string.h

  2. 因为您想要返回整个字符串,而不是单个字符。将reverse()函数的返回类型从char改为char*,并从其返回语句中删除解引用操作符,即return s;

  3. 在编辑后替换:

    char result = reverse(str);
    printf("%c", result);
    

    :

    char *result = reverse(str);
    printf("%s", result);
    

整个程序应该是这样的:

#include <stdio.h>
#include <string.h> // Fixed the possible typo
// Prototype fixed
char* reverse(char s[]) {
int c, i, j;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
return s; // Proper return statement
}
// main() must return an integer to the OS
int main(void) {
char str[12] = "Hello World";
char* result = reverse(str);
printf("%sn", result);
return 0;
}

这是一个演示。

你想要这个:

#include <stdio.h>
#include <string.h>
char *reverse(char s[])    // return a char* and not a char
{
int c, i, j;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
return s;    // return a char* and not a char. return *s would return the 1st char only
}
void main()
{
char str[12] = "Hello World";
char* result = reverse(str);    // result must be a char* and not a single char
printf("%s", result);           // use %s for char*
}

相关内容

  • 没有找到相关文章

最新更新