gpt4 book ai didi

c - 堆栈 : not able to push a couple of characters into array

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:48 24 4
gpt4 key购买 nike

我有一个使用数组实现堆栈的代码,这里是完整的代码: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) {
^

我的问题是:有什么解决办法吗?

最佳答案

在 C 中,'' 中的任何内容都是一个字符(使用 char 声明),"" 中的任何内容都表示一个字符串,它是char 的空终止数组。

您不能将 char 数组分配给单个 char 变量,因此您会看到警告。

警告的解释:

警告:传递 'push' 的参数 1 从指针生成整数而无需强制转换

为了解释起见,假设编译器在说 int 时表示 char,那么基本上它是在提示您正在尝试分配 char 数组类型转换为 char,而不明确告诉编译器您想要这样做。

做你正在尝试的事情的正确方法:

将字符串一个字符一个字符地传递给在循环内调用的 push 函数。

关于c - 堆栈 : not able to push a couple of characters into array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38653932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com