我在不使用内置函数的情况下反转String。它扭转了每一个角色,但缺少了最后一个角色
这是程序
#include<stdio.h>
void main()
{
char str[10],rev[10];
int i,j,k;
clrscr();
printf("enter the string \n");
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
k=i-1;
for(j=0;j<=i-1;j++)
{
rev[j]=str[k];
k--;
}
rev[j]='\0';
printf("reverse=%s",rev);
getch();
}
我不知道为什么最后一个Char缺失
答案 0 :(得分:2)
k = i;
你错了。
您的表达式k = i-1;
不会为整个反向字符串留出空间。
答案 1 :(得分:2)
计算字符串长度的代码缺少分号:
编译器将其解释为
for(i=0;str[i]!='\0';i++)
k=i-1;
虽然意图可能已经
for(i=0;str[i]!='\0';i++)
;
k = i - 1;
现在代码是&#34;工作&#34;,您应该修复可能导致未定义行为的错误:将输入的长度限制为scanf
中的9个字符,如下所示:
scanf("%9s", str);
如果没有9,用户可以通过输入超过9个字符来导致未定义的行为,并溢出您的10字节缓冲区。