gpt4 book ai didi

c - 消除通过参数传递数组后的警告(C语言)

转载 作者:行者123 更新时间:2023-11-30 20:33:35 44 4
gpt4 key购买 nike

以下代码将数组作为参数从 main 进程(称为 process )传递到另一个进程(称为 subprocess )。它模拟我想在自己的代码中实现的行为:subprocess用正确的字符串填充字符串数组,然后将它们返回到 process用于...处理。

#include <stdio.h>
#include <string.h>

void preprocess(char input[10][10]) {
int i;
char temp[10];
for (i = 0; i < 10; i++) {
scanf("%s", &temp);
strcpy(input[i], temp);
}
}

void process() {
int i;
char strings[10][10];
preprocess(strings);
for (i = 0; i < 10; i++) {
printf("%s\n", strings[i]);
}
}

int main() {
process();
return 0;
}

我的问题:这段代码会生成一个警告,但我对此不是 100% 确定。有人可以帮我删除警告并清除这段诱杀装置代码吗?

编辑:警告是:

warning: format '%s' expects argument of type 'char *', but argument 2 has type 'char (*)[10]'

最佳答案

您传递给scanf的参数不正确。 %s 格式说明符需要一个指向 char 数组的第一个元素的指针。您传入的是数组的地址。

scanf 调用中删除地址运算符 &。当数组传递给函数时,它会衰减为指向第一个元素的指针。

scanf("%9s", temp);

格式说明符中的数字给出了要读取的最大字符数。这可以防止 temp 潜在的缓冲区溢出。

关于c - 消除通过参数传递数组后的警告(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815544/

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