gpt4 book ai didi

c - Sprintf 和 Scanf

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:53 26 4
gpt4 key购买 nike

我一直在尝试使用本文中的示例找出 sprintf 和 scanf:https://www.udemy.com/blog/sprintf-c/#respond

// example 1
#include <stdio.h>

int main() {
char *stringa = “We Are Dismantling a String”;
char *one, *two, *three, *four, *five;
sscanf(stringa, “%s %s %s %s %s”, one, two, three, four, five);

return(0);
}

//  Example 2
#include <stdio.h>

int main() {
char *stringa[30];
int *fingers = 5;
sprintf(stringa, "Number of fingers making up a hand are %f", fingers);
puts(stringa);

return(0);
}

我无法在示例 1 中初始化变量,示例 2 返回了整个错误列表。我可以使用一些帮助来弄清楚为什么这些代码行不起作用。

最佳答案

对于您的第一个程序,指针只是指针,并且由于它们未初始化,因此它们的值(即它们指向的位置)是不确定的。使用它们,尤其是作为写入目标,会导致 undefined behavior .

要解决这个问题,您要么需要分配内存并分配给指针,要么使用足够长度的数组。


关于你的第二个程序,fingers 是一个指针,你告诉编译器将它指向 address 5,而不是 < em>值 5

然后您告诉 printf 打印一个浮点值,并将指针作为参数提供给它。这将再次导致未定义的行为,因为 printf 会将指针视为 double 值而不是指针。

要解决此问题,请不要将fingers 声明为指针,并使用正确的printf 格式"%d"(对于signed十进制整数)。


我还建议您阅读该函数的一些引用资料,如下所示:

关于c - Sprintf 和 Scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972101/

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