[英]reversing a string array within a 2D array using pointer in c
我需要编写一个 function ,它需要一个二维字符串数组,获取每个字符串并在数组中反转它。
所以如果有:
{"first", "second", "third", "fourth"}
它会将其更改为:
{“tsrif”、“dnoces”、“driht”、“htruof”}
但它需要在不返回不同副本的情况下执行此操作,换句话说,我必须使用指针重新排列它。
方法签名如下所示:
void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH]){
char *ptr = &strings[0][0];
}
到目前为止,我有这个:
char* reverseOneString(char s[STRING_LENGTH]){
char temp;
char *p = &s[0];
while(*p != '\0'){
p++;
}
return p;
}
void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH]){
printf("reversing strings\n");
char *ptr = &strings[0][0];
for(int i= 0; i < NUM_STRINGS; i++){
char *nptr = reverseOneString(strings[i]) - 1;
while(nptr >= ptr){
char temp = *ptr;
*ptr = *nptr;
*nptr = temp;
nptr--;
ptr++;
while(*ptr == "\0"){
ptr++;
}
}
printf("\n");
}
}
但它并没有真正起作用
这就是我要找的,如果我解释得不好,请见谅
char* reverseOneString(char s[STRING_LENGTH]){
char temp;
char *p = &s[0];
while(*p != '\0'){
p++;
}
p--;
printf("one reverse is sending back %c\n", *p);
return p;
}
void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH])
{
char *ptr = &strings[0][0];
printf("reversing strings\n");
printf("First pointer is pointing to: %c\n", *ptr);
for (int i = 0; i < NUM_STRINGS; i++) {
int counter = 0;
char* nptr = reverseOneString(strings[i]);
while (nptr > ptr) {
printf("ptr: %c nptr: %c\n", *ptr, *nptr);
char temp = *ptr;
*ptr = *nptr;
*nptr = temp;
nptr--;
counter++;
ptr++;
while(*ptr == '\0'){
++ptr;
}
}
ptr += STRING_LENGTH - counter;
printf("this is the process value of ptr %c\n", *ptr);
printf("\n");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.