c - 为什么这个 C 程序在字符串的最后加上“v”?
问题描述
在检查字符串是否为回文时,当我打印反向字符串'v'时会自动附加到这里,这是为什么?而且,如果我删除了代码的回文检查部分,那么不会附加“v”,这是为什么呢?(可能是未定义的行为,但如何?代码似乎没问题)。我试图找出这个程序如何是未定义的行为,但我不知道出了什么问题。而且这个程序应该什么都不打印,但它会打印一些字符串,我不知道为什么会这样。
#include<stdio.h>
int main(){
int i,j;
char string[100],reverse[100];
printf("enter a string:\n");
fflush(stdin);
scanf("%s",string);
for(j=0;string[j]!='\0';j++);
for(i=0;i<=j;i++){
/* I know if here is <= (it is intetional)
it will go upto one more than the string.
If we suppose so then '\0' should be swapped in front of
the string so no sting should have been printed but it prints string. */
printf("%d\n",i);
reverse[i]=string[j-1-i];
}
printf("%s ,%d, %d",reverse,j,i);
int is_palindrome=1;
for( i=0;i<j;i++){
if(string[i]!=reverse[i]){
is_palindrome=0;
break;
}
}
if(is_palindrome){
printf("\nis palindrome");
}
else{
printf("\nis not palindrome");
}
}
解决方案
推荐阅读
- python - 如何在代码中安装 python 包
- c++ - 是否可以将概念作为模板参数传递?
- postgresql - 在 Postgresql 中打开 psql 时出现“权限被拒绝”重复出现的错误。为什么会出现此错误?如何解决?
- android-studio - 发布到内部测试轨道时,我可以使用 Android Studio 模拟器测试 Google 应用内购买吗?
- c# - 如何将旧 .dll 连接到 C# VS2019 上的项目?
- npm - 如何全局隐藏 fsevents 警告?
- mongodb - 当我知道 95% 没有使用时如何有效地查询 MongoDB 的文档
- spring - 如何在反应弹簧数据弹性搜索 api 中更改弹性搜索版本?
- angular - 基于百分比的高图背景
- ruby-on-rails - Rails Bootstrap 导航栏显示问题