我有一个程序可以从命令行使用 argv 接受字符输入。我使用 strcpy 将输入 argv[1] 复制到已分配内存的名为 structptr 的指针(它从 struct 转到 structptr->words)。然后,我从指针 structptr 指向另一个指针的内存中逐个字符地复制该指针,该指针指向已分配的内存。在我复制了一个字符后,我打印该元素 [c] 以确保它已被正确复制(它具有)。然后我完成了所有字符的复制并将结果返回给一个字符指针,但由于某种原因它是空白/空。每次复制字符后,我都会检查前面的元素是否正确,但它们不再显示([c-2]、[c-1]、[c])。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct StructHolder {
char *words;
};
typedef struct StructHolder Holder;
char *GetCharacters(Holder *ptr){
int i=0;
char *words=malloc(sizeof(char));
for(i;i<strlen(ptr->words);i++){
words[i]=ptr->words[i];
words=realloc(words,sizeof(char)+i);
}
words[strlen(ptr->words)]='\0';
return words;
}
int main(int argc, char **argv){
Holder *structptr=malloc(sizeof(Holder));
structptr->words=malloc(strlen(argv[1]));
strcpy(structptr->words, argv[1]);
char *charptr;
charptr=(GetCharacters(structptr));
printf("%s\n", charptr);
return 0;