gpt4 book ai didi

c - 指针由于某种原因显示垃圾

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

我的指针有问题。我有一个 void 函数,我想返回一些东西。准确地说是一个主题。所以,我使用指针。问题是当我要求用户输入主题然后调用我的函数时,我的指针返回垃圾以及给定的主题。就像,“一些奇怪的角色”ava,而不是 Java。我怀疑我在 announc 函数中的 scanf 有问题,但我真的不知道为什么我的主题不正确。

void announc(char day1[10], char day2[10], char date1[5], char date2[5], int class1, int class2, char *subject);
int main()
{
char day1[10], day2[10], date1[5], date2[5];
char subject[10];
int class1, class2;
scanf("%s %s %s %s %d %d", day1, date1, day2, date2, &class1, &class2);
announc(day1, day2, date1, date2, class1, class2, subject);
printf("subject: %s\n", subject);
return 0;
}
void announc(char day1[10], char day2[10], char date1[5], char date2[5], int class1, int class2, char *p)
{

printf("something");
*p = scanf("%s", p);

}

最佳答案

*p = scanf("%s", p);

不确定您的意图。 scanf 返回填充的参数数量(即 1)。然后将该结果分配给 p 的第一个元素。打印时,您会看到终端尝试打印 ASCII 值为 1 的字符(后跟字符串的其余部分,不受影响)。

千万不要那样做!您需要执行的操作,将字符串输入到 p 指向的对象中,无需触及返回值即可实现:

scanf("%s", p);

每个 scanf 参数(格式字符串除外)实际上是一个“out argument”。它必须以这种方式工作,因为可以(而且通常是!)不止一件事要阅读,但您只能从函数返回一个值。

关于c - 指针由于某种原因显示垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54463399/

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