gpt4 book ai didi

c - 如何在c中填充数组? (赋值从指针生成整数,无需强制转换)

转载 作者:行者123 更新时间:2023-11-30 14:33:16 26 4
gpt4 key购买 nike

我正在尝试用字符填充多维数组。

任务是:我需要在数组中填充30个名称,每个名称不能超过20个。

char names_arr[NAME_BUF_SIZE][MAX_NAME_LENGTH];

所以,我写了这样一个方法:

void read_from_input(char arr[][MAX_NAME_LENGTH])
{
unsigned r = 0;
int i = 0, j = 0;
char tmp[MAX_NAME_LENGTH];

for (i = 0; i < NAME_BUF_SIZE /*30*/; i++)
{
for (j = 0; j < MAX_NAME_LENGTH /*20*/; j++)
{
if((r = scanf("%s", tmp) != EOF) && (r != 0))
{
arr[i][j] = tmp;
}
}
}
}

这样我想用名称填充我的数组。

但问题是我收到了这样的警告

main.c: In function ‘read_from_input’:
main.c:31:27: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
arr[i][j] = tmp;
^

我做错了什么?

最佳答案

也许这就是您想要做的:

for (i = 0; i < NAME_BUF_SIZE; i++) {
if((r = scanf("%19s", tmp) != EOF) && (r != 0)) {
strcpy(arr[i], tmp);
}
}

首先,在原始代码中,您尝试将 tmp (char *) 分配给 arr[i][j](字符)。如果 arr 是单词数组,则每个 a[i] 将是一个单词 (char*),每个 a[ i][j] 将是一个字母 (char)。不仅如此,这也不是复制字符串的正确方法。

这是在 C: 中复制字符串的方法

strcpy(arr[i], tmp);

希望这有帮助!

关于c - 如何在c中填充数组? (赋值从指针生成整数,无需强制转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436318/

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