我试图通过使用strlen() & strcmp()字符串函数来解决C中的这个回文字符串问题。我的想法是将字符串复制到另一个新字符串,然后比较这两个字符串。
对于复制,我使用了For循环。
我想问题就在这里。在大多数情况下,我复制的字符串中有2-3个额外字符.我在挠我的耳朵一段时间。这应该是一个简单的问题,但由于我刚开始解决问题,这需要很多时间。
#include<stdio.h>
#include<string.h>
int main()
{
char my_string1[100], my_string2[100];
int i=0, c;
int j;
scanf("%s",&my_string1);
c= strlen(my_string1);
j=c;
for( i=0; i<c; i++){
j=j-1;
my_string2[i]=my_string1[j];
}
printf("\n\nString1: ");
puts(my_string1);
printf("String1's length: ");
printf("%d\n\n",c);
printf("String12: ");
puts(my_string2);
printf("String2's length: ");
printf("%d\n",strlen(my_string2));
if(strcmp(my_string1,my_string2)==0)
{
printf("\n\nYES");
}
else
printf("\n\nNO");
}样本输出
aba
String1: aba
String1's length: 3
String12: abaO
String2's length: 5
NOString1: abcdse
String1's length: 6
String12: esdcba
String2's length: 6
NO发布于 2019-09-17 10:18:10
你应该试试这样的方法:
#include<stdio.h>
#include<string.h>
#include <stdbool.h>
int main()
{
char my_string1[100];
int i=0, c;
scanf("%s",my_string1);
c= strlen(my_string1);
bool equal = true;
for( i=0; i<c/2; i++) { // compare first half and the second half of the string
if( my_string1[i] != my_string1[c-i-1] ) {
equal = false;
break;
}
}
printf("\n\nString1: ");
puts(my_string1);
printf("String1's length: ");
printf("%d\n\n",c);
if( equal ) {
printf("\n\nYES");
} else {
printf("\n\nNO");
}
}https://stackoverflow.com/questions/57971999
复制相似问题