gpt4 book ai didi

c - 如何扫描 ("%[^\n]",sbuf.mtext);在下面的代码中工作?为什么我们不像 %d 或 %f 那样在 '&' 之前使用 'var'?

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

代码包含一个结构,其中包含两个数据成员mtypemtextMAXSIZE 是该变量的最大大小。我想将数据插入到 mtext 中。我也有代码,但我不知道 scanf("%[^\n]",sbuf.mtext); 是如何工作的。如果还有其他方法,请告诉我。

struct msgbuf{
long mtype;
char mtext[MAXSIZE];
}sbuf;

scanf("%[^\n]",sbuf.mtext);

最佳答案

scanf("%[^\n]",sbuf.mtext);

  1. 如果第一个字符是 '\n',则无法将任何内容扫描到 sbuf.mtext 中。 scanf() 返回 0。

  2. 将无限数量的字符扫描到 sbuf.mtext 中,直到遇到 '\n' 并将其留在 stdin 中,然后附加一个 '\0'。缓冲区可能溢出。如果未发生溢出,scanf() 返回 1。如果发生溢出,则为未定义行为。

  3. 最好使用 fgets() 读取用户输入行。

    if (fgets(sbuf.mtext, sizeof sbuf.mtext, stdin) == NULL) Handle_EOF();
    sbuf.mtext[strcspn(sbuf.mtext, "\n")] = '\0'; // drop potential \n
  4. “为什么我们不像在 %d 或 %f 中那样在‘var’之前使用‘&’?”一次一个问题。

关于c - 如何扫描 ("%[^\n]",sbuf.mtext);在下面的代码中工作?为什么我们不像 %d 或 %f 那样在 '&' 之前使用 'var'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510404/

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