gpt4 book ai didi

c - 使用 strcpy 从整数生成指针而不进行强制转换

转载 作者:行者123 更新时间:2023-12-04 18:19:52 25 4
gpt4 key购买 nike

我无法弄清楚我做错了什么。如果这显然是错误的,我正在学习 C 很抱歉,但我正在尝试使用 uthash制作股票及其价格的哈希图。但是当我将股票添加到我的哈希图中时,我得到了上述错误。

我所做的是从他们的网站上获取示例并运行它以确保它正常工作,一旦它按预期工作,我更改了值以适应我的问题。在原始代码中,变量 id在结构中是一个整数,但我将其更改为一个字符(而不是数字,我想使用股票代码作为键),然后我开始出现以下错误:

../src/stackCsamples.c:87: warning: passing argument 1 of '__builtin_object_size' makes pointer from integer without a cast
../src/stackCsamples.c:87: warning: passing argument 1 of '__builtin_object_size' makes pointer from integer without a cast
../src/stackCsamples.c:87: warning: passing argument 1 of '__builtin___strcpy_chk' makes pointer from integer without a cast
../src/stackCsamples.c:87: warning: passing argument 1 of '__inline_strcpy_chk' makes pointer from integer without a cast
../src/stackCsamples.c:89: warning: passing argument 1 of 'strlen' makes pointer from integer without a cast
../src/stackCsamples.c:89: warning: passing argument 1 of 'strlen' makes pointer from integer without a cast
../src/stackCsamples.c:89: warning: passing argument 1 of 'strlen' makes pointer from integer without a cast

问题似乎在于这里的两行(87),即 strcpy(s->id, user_id); (89) 即: HASH_ADD_STR( users, id, s );
我如何使用这两个错误?我查看了 strcpy ,它看起来需要 3 个项目,但是当我添加大小时,我仍然得到错误。

以下是我认为相关的部分片段:
#include <stdio.h>   /* gets */
#include <stdlib.h> /* atoi, malloc */
#include <string.h> /* strcpy */
#include "uthash.h"

struct my_struct {
char id; /* key */
float price;
UT_hash_handle hh; /* makes this structure hashable */
};

struct my_struct *users = NULL;

void new_stock(char *user_id, float price) {
struct my_struct *s;

s = (struct my_struct*)malloc(sizeof(struct my_struct));
strcpy(s->id, user_id);
s->price = price;
HASH_ADD_STR( users, id, s ); /* id: name of key field */
}

int main() {
printf("starting..");
new_stock("IBM", 10.2);
new_stock("goog", 2.2);
return 0;
}

最佳答案

有了这条线:

strcpy(s->id, user_id);

您正在尝试将字符串复制到字符上。注意 strcpy 的两个参数都是 指针 转字符: char * .

此外,请注意,您还需要在内存中为 s->id 腾出一些空间,如 char[]。或 char * .提示:你已经为结构腾出空间,但只包含足够的空间来存放 单个字符 对于 id .

如果你想使用 C,那么你应该得到一份 K&R 的副本。 ,但如果做不到这一点,您可能会花一些时间查看 this .

关于c - 使用 strcpy 从整数生成指针而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891012/

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