c - 反转字符串数组

标签 c arrays string

我正在尝试反转一个字符数组并将其放入一个新数组中。它似乎没有返回任何东西。这是下面的代码,我不知道哪里错了。任何指针? (没有双关语意)

void getReverse(char dest[], char src[])
{
    int i;
    int j=0; 
    int length = strlen(src);
    printf("%d\n", length);

    for(i=length-1; i>=0; i--, j++)
        //for(j=0; j<length; j++)
        {
            dest[j]=src[i];
            putchar(j);
            j++;
        }
        dest[j] = '\0';
}

main()
{
    char dest[MAX_SIZE];
    char src[MAX_SIZE];
    int i = 0;
    int count;
    int c = getchar();

    count = 0;

    while ((count < MAX_SIZE) || (c != EOF))
    {
        src[count] = c;
        ++count;
        //putchar(c);
        c = getchar();  

    }

    getReverse(dest, src);
    printf("%s", dest);     
}

最佳答案

错误:

  1. 正如@Bill 所说,j++ 在 getReverse() 的循环中执行了两次。

  2. getReverse() 中的 putchar(j) 会导致输出困惑,因为 j 很小,它们可能是不可打印的字符。如果真的要监控j的值,就用printf("%d\n",j);

  3. 正如@jarmod 所说,您在 src[] 中错过了一个 '\0'。您应该添加“src[count] = '\0';”在 while() 循环之后和 main() 中的 getReverse() 之前。

此外,如果 *src 和 *dest 指向同一地址,您的 getReverse() 将无法工作。虽然您已经声明函数“反转字符数组并将其放入新数组”,但请考虑当你写一个更常见的函数时,这是。

关于c - 反转字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16703740/

相关文章:

Java - 如何查看一个字符是否与多个字符匹配?

javascript - "push()"方法返回数组而不是数组的长度(JavaScript)

python - 计算数组中特定字母的数量

ios - 在结构上使用 userdefaults

python - 如何从 python 中的字符串中删除 ANSI 转义序列

c - C 中的计算函数/程序流程中的错误

c - 为什么网络程序将IP地址存储在IP地址结构中

c - C中的内存消耗

c - 记录每个 C 函数调用的所有参数值

c - 如何替换文件中特定人物的字符串