当我尝试以相反的顺序打印字符串值时,我的控制台屏幕中出现空白输出。如果我使用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();
}
答案 0 :(得分:3)
您通过将原始的nullchar终结符作为第一个char来启动您的反向字符串。因此,就printf()
而言,它是一个空字符串(零长度)。
除此之外,还需要严重的代码审核。诚然这不是它的地方,因为对适当论证的审查可能会重写整个事情(除了可能是开始scanf()
和结束printf()
。我强烈建议你在调试器中逐步运行,以查看代码运行时发生的情况。
答案 1 :(得分:1)
给你的一些注意事项:
答案 2 :(得分:0)
您始终可以使用标准string.h库中的strrev函数