gpt4 book ai didi

复制 argv 并检查它是否为回文

转载 作者:行者123 更新时间:2023-11-30 18:15:45 25 4
gpt4 key购买 nike

我正在编写一个程序来检查回文。我最近选择了 C,想知道是否有什么原因导致我对它的看法行不通?这是否与我使用直接将 argv 复制到 char 数组有关

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

int main(int argc,char *argv[]){
int i;
int a;
int size;


for(a = 1; a < argc; a++){
char *reverseThis = argv[a];
char *normal = argv[a];
size = strlen(reverseThis);
for(i = 0; i < size; i++){
reverseThis[i] = normal[size - i - 1];
}
for(i = 0; i < size; i++){
reverseThis[i] = tolower(reverseThis[i]);
normal[i] = tolower(normal[i]);
}
if(strcmp(reverseThis,normal)==0){
printf("\"%s\": on palindromi\n",argv[i]);
}
else
printf("\"%s\": ei ole palindromi\n",argv[i]);
}
return 0;
}

最佳答案

在您的代码中,您没有复制字符串,而是将 normalreverseThis 分配给同一个字符串 argv[a]。分配内存后需要复制argv[a]。只需修改 for 循环中的代码即可:

for(a = 1; a < argc; a++){

char *normal = argv[a];
size = strlen(normal);
char *reverseThis = (char*)malloc((size+1)*sizeof(char));
int j=0;
for(i = size-1; i >= 0; i++){
reverseThis[j++] = normal[i];
}
reverseThis[j]='\0';
.
.

关于复制 argv 并检查它是否为回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46748078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com