私はパリンドロームをチェックするプログラムを書いています。私は最近Cを取り上げて、それがうまくいかない理由があるのだろうかと疑問に思っていました。 argvをchar配列に直接コピーするのと何か関係がありますか?argvをコピーしてパリンドロームを確認する
#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;
}
どちらもない 'のchar * reverseThis = ARGV [A];'や 'のchar *ノーマル= ARGV [A];'コピー、あなたは同じ文字列/ 'char'配列で両方のポインタを指している - コピーが行われます['strcpy'](http://en.cppreference.com/w/c/string/byte/strcpy)関数を介して – UnholySheep