在反向中打印字符串值

时间:2012-11-24 03:11:48

标签: c string printing reverse

当我尝试以相反的顺序打印字符串值时,我的控制台屏幕中出现空白输出。如果我使用for循环打印String值是打印,但是当我只使用%s打印时,它不打印?为什么呢?

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

void main()
{
    char name1[10],name2[10];
    int i,len,j;

    clrscr();

    printf("\nEnter the string that u want to get reversed:");
    scanf("%s",&name1);
    for(i=0;name1[i]!='\0';i++);
    len=i;

    j=i;

    for(i=0;i<=len;i++)
    {
        name2[i]=name1[j];
        j--;
    }

    printf("\nThe reversed string is:");
    printf("%s",name2);
    getch();
}

3 个答案:

答案 0 :(得分:3)

您通过将原始的nullchar终结符作为第一个char来启动您的反向字符串。因此,就printf()而言,它是一个空字符串(零长度)。

除此之外,还需要严重的代码审核。诚然这不是它的地方,因为对适当论证的审查可能会重写整个事情(除了可能是开始scanf()和结束printf()。我强烈建议你在调试器中逐步运行,以查看代码运行时发生的情况。

答案 1 :(得分:1)

给你的一些注意事项:

  • 在发布之前正确格式化您的代码
  • 您使用了太多“printf”来查看变量值。 这意味着你不知道如何正确调试你的代码 请谷歌如何调试代码+“你正在使用的IDE名称” (fe。如何调试代码视觉工作室)
  • 始终将代码添加到您的代码中
  • 在发布类似的内容之前先请GOOGLE! “反向字符串”问题是典型的“编程生成”分配 并且为此找到示例代码并不难。在开始代码研究更多 有用的不仅仅是随机输入一些bulshit代码
  • 你应该给你的变量更有意义的名字 F.E.在你的情况下'src'和'target'是比name1和name2更好的选择 当然,在这么简短的代码中,它并不重要但是习惯了它
  • 在开始编码之前,首先尝试在纸上解决这些问题以进行可视化
  • 由于您尝试通过读取用户的输入来处理动态字符串内容,因此使用动态分配(即malloc()/ free()比使用修复数组更好。

答案 2 :(得分:0)

您始终可以使用标准string.h库中的strrev函数