【发布时间】:2021-11-26 21:33:27
【问题描述】:
所以我有一个程序,其中有用户输入字符串(char 数组),我需要使用分配内存的指向 char 数组的指针将所有奇数索引元素复制到另一个数组。
(charPointer 需要分配给使用 malloc 所需的确切空间量)
char charArray[16];
printf("Enter string: ");
scanf("%16s", charArray);
char *charPointer = malloc((sizeof(charArray) / 2 ));
char *d = charPointer;
for (char *p = charArray; *p != '\0'; p++) {
// Calculates odd-index element using bit operator
if ((p - charArray) % 2 != 0){
// Shows which elements should be copied
printf("%c", *p);
// Copy *p value to charPointer
charPointer[p-charArray] = *p;
charPointer++;
}
}
while(*d != '\0')
printf("%c\n",*d++);
但是我得到了奇怪的结果,比如 charPointer 它只复制第一个奇数索引而不是其余的。我以为我理解指针,但这真的让我很困惑。感谢您的帮助!
【问题讨论】:
-
charPointer++;如果你也在索引它,我不认为你想要那个。 -
似乎过于复杂:
for (int i = 1, j = 0; i < strlen(charArray); i += 2) { charPointer[j++] = charArray[i]; } -
您是否可以发布一个最小且完整的示例。如果我们无法编译代码,就不可能得到你奇怪的结果。请阅读How to create a Minimal, Reproducible Example 了解如何操作。
标签: c for-loop pointers char c-strings