我有一个使用数组实现堆栈的代码,这里是完整的代码:here
这就是为什么我不能推多个角色,但是
只有一个角色?
但我一直在点击一些变量,使用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) {
^
发生编译错误时:
base_data['stemmed_stop_comments'] = []
if 'stemmed_comments' in base_data:
base_data['stemmed_stop_comments'] = [word for word in base_data['stemmed_comments'] if not (word in stopWords)]
我的问题是:任何解决方案?
答案 0 :(得分:2)
在C中,char
内的任何内容都是一个字符(使用""
声明),char
内的任何内容都表示一个字符串,它是char
s的空终止数组
您无法将char
的数组分配给单个warning: passing argument 1 of 'push' makes integer from pointer without a cast
变量,因此您会看到警告。
警告说明:
char
为了便于说明,假设编译器在int
时表示char
,那么基本上它正在抱怨您正在尝试将char
数组类型分配给{{1}没有明确告诉编译器你想这样做。
正确地做你正在尝试的方式:
将字符串逐个字符传递给循环内部调用的push
函数。
答案 1 :(得分:1)
首先,您应该尝试更多地关注代码缩进,我们会更容易阅读它。
现在,针对您的问题:'c'
和"c"
之间的C存在巨大差异。第一个是一个字符,第二个是空终止的字符数组,这是完全不同的。
当您致电push("aa", "bb", "cc");
时,您需要为需要3个字符的函数提供3个字符数组,这就是您的代码不起作用的原因。
要绕过此功能,您可以使用字符数组的所有不同字符多次调用您的函数:
char *str = "foo";
while (*str)
push(*(str++));
这样,while
将在您的字符串中循环,并调用push()
函数将str
中的所有字符调用。