【发布时间】:2014-02-12 14:37:08
【问题描述】:
我的目标是为我的数据结构创建一个推送函数。
我正在尝试做的事情:
- 要求客户输入三个字符的 obj 词,例如。盒子
- 然后将 obj 名称传递给 push 函数(现在头尾指针为空)
- 然后计算机会为此分配内存,然后函数会返回一个内存地址
- 然后我将使用该地址将 obj 名称存储到我的对象数组中。
我正在尝试逐步完成此数据结构,目前我似乎无法将 obj 名称保存到 objArray。可以不返回指针吗?
#include <stdio.h>
#include <string.h>
char *push(char element, char *head, char *tail){
char *dq;
dq = (char*)malloc(4*sizeof(char));
head=dq;
return head;
}
int main(){
char input[7];
char command[7];
char objArr;
char objname[4];
char *head;
char *tail;
while(printf("Choose from the ff operations by typing:\npush\npop\ninject\neject\nexit\nInput Command: ")&&fgets(input, 6, stdin)){
sscanf(input, "%s", command);
if(strcmp(command, "exit")==0){
break;
}
if(strcmp(command, "push")==0){
printf("Input an object name to push: ");
fgets(objname, 4, stdin);
head = push(objname, *head, *tail);
objArr[head] = objname;
printf("%s", objArr[head]);
break;
}
if(strcmp(command, "pop")==0){
break;
}
if(strcmp(command, "inject")==0){
break;
}
if(strcmp(command, "eject")==0){
break;
}
}
}
【问题讨论】:
-
很难解决这个问题,这里有很多错误。实际上,该程序中对数组和指针的每次使用都是不正确的,例如
objArr不是一个数组,但您将其视为一个数组并尝试使用指针对其进行索引,您永远不会在您的push()函数中复制字符串,您为dq分配内存但从不初始化它,objname是一个数组,但你将它传递给一个需要char的函数。这是一次勇敢的尝试,但除了复习基础知识并再次尝试之外,很难提出任何建议。 -
这个编译是否没有警告,所有警告都打开(gcc options
-Wall -Wextra -pedatnic)?
标签: c pointers data-structures