포인터를 사용하여 문자열을 뒤집고 싶습니다. 세분화 오류가 발생했습니다. 그것에 관한 어떤 생각? 세부 사항은 코드에 나와 있습니다. 그건 그렇고,이게이 물건을 구현하는 올바른 방법일까요?배열과 포인터를 사용하여 문자열을 뒤집기
고맙습니다.
게르하르트!
내 CODE : 당신이 포인터를 얻고있는이
for (c = 0; c < len; c += 1) {
last += 1;
}
으로 문제가 해결되지 것
void copy_and_reverse(char* output, char* input) {
int c = 0;
int len = 0;
char *begin;
char *last;
len = strlen(input);
len -= 1;
begin = input;
last = output;
for (c = 0; c < len; c += 1) {
last += 1;
}
len += 1;
for (c = 0; c < len; c +=1, begin += 1, last -= 1 {
temp = *begin;
*last = *begin; // Here is my problem. Why am I not allowed to access this storage? I have no Idea about that!
}
}
int main(int argc, char **argv) {
int i = 0;
int leng = 0;
char *input[999] = {0}; // input gets the string of the argument, the string should stay in the right order
char *output[999] = {0}; // output should get the reversed string
if (argc == 1) {
printf("Too few arguments.");
return -1;
}
for (i = 0; i < argc; i += 1, argv += 1) {
if (strlen(*argv) > 100) {
printf("Maximum string length exceeded.");
return -2;
}
}
argv -= i; //Unnecessary stuff
*argv += 1;
argv += 1;
argc -= 1;
for (i = 0; i < argc; i += 1, argv += 1) {
*input = *argv;
copy_and_reverse(*output, *input);
}
return 0;
}
이 문자 입력을 좋아한다면 [999] = {0}; char 출력 [999] = {0}; .. 어떻게 배열 (문자열) 인수를 줄 수 있습니까? 이것을 할 기회가 없습니다 : * input = * argv; , 더 이상, 그렇지 않습니까? – MrShow
아, 네가 할 수 있습니다. char input [999]; * input *은 실제로는 (char *)이므로 포인터처럼 취급 할 수 있습니다. [] 연산자를 사용할 때 입력 [3]이라고하면 * (입력 + 3)을 수행하는 것과 동일합니다. 또한, 포인트를 고려해야합니까 @ 마이크 S. 제기! – kostas