【发布时间】:2016-12-03 21:11:01
【问题描述】:
我有一个使用数组实现堆栈的代码,这里是完整的代码:here
这就是为什么我不能推送多个字符的原因,但是
只有一个字符?
但我一直在点击一些变量,使用struct 为她的推送进行初始化
数组形式的一些字符:
struct stackMhs {
char nama[10];
char npm[10];
char telp[10];
int size;
};
struct stackMhs stackMhsbaru;
这是push()函数,其参数将是函数main()中的数据内容:
void push(char nm, char np, char tel) {
if(stackMhsbaru.size != 10) {
stackMhsbaru.nama[stackMhsbaru.size + 1] = nm;
stackMhsbaru.npm[stackMhsbaru.size + 1] = np;
stackMhsbaru.telp[stackMhsbaru.size + 1] = tel;
stackMhsbaru.size++;
}
else {
printf("stack is full!");
}
}
问题是当我使用' 填充数据时,push() 函数中只有一个字符,如push('a','b','c');,编译时没有错误,但是当我使用" 如push("aa","bb","cc"); 时编译时发生错误:
main.c: In function 'main':
main.c:60:6: warning: passing argument 1 of 'push' makes integer from pointer without a cast [-Wint-conversion]
push("aa", "bb", "cc");
^
main.c:23:6: note: expected 'char' but argument is of type 'char *'
void push(char nm, char np, char tel) {
^
main.c:60:12: warning: passing argument 2 of 'push' makes integer from pointer without a cast [-Wint-conversion]
push("aa", "bb", "cc");
^
main.c:23:6: note: expected 'char' but argument is of type 'char *'
void push(char nm, char np, char tel) {
^
main.c:60:18: warning: passing argument 3 of 'push' makes integer from pointer without a cast [-Wint-conversion]
push("aa", "bb", "cc");
^
main.c:23:6: note: expected 'char' but argument is of type 'char *'
void push(char nm, char np, char tel) {
^
我的问题是:任何解决方案?
【问题讨论】:
-
你的推送函数需要“char”参数,你必须用char*或字符串数据类型替换它
-
size在哪里初始化?