在scanf中使用符合c ansi标准的malloc

伏努普

我想读取用户的输入并保存。我现在拥有的工作正常,但是我需要知道scanf的合法性(遵循ansi标准-c90)是scanf在为输入分配内存之前首先分配了变量“ length”,还是仅是编译器的一个怪癖。

#include <stdio.h>
int main()
{
    char* text;
    int length = 0;
    scanf("%s%n", text = malloc(length+1), &length);

    printf("%s", text);

    return 0;
}  
dbush

这将无法正常工作。

在您呼叫时malloclength其值仍为0,因此您只分配了一个字节。length直到scanf返回后才更新因此,任何非空字符串都将超出分配的缓冲区的边界写入,从而调用undefined behavior

尽管并不完全相同,但是您可以使用use getline,前提是您正在POSIX系统(例如Linux)上运行。此函数读取一行文本(包括换行符)并为该行分配空间。

char *text = NULL;
size_t n = 0;
ssite_t rval = getline(&text, &n, stdin);

if (rval == -1) {
    perror("getline failed");
} else {
    printf("%s", text);
}
free(text);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

功能和结构名称的命名约定,并符合ANSI C标准

来自分类Dev

是否符合Oracle Equi-joins ANSI标准

来自分类Dev

在Visual Studio 2015中强制执行ANSI C标准

来自分类Dev

使用ANSI编码标准创建实例化视图

来自分类Dev

C:在malloc()中使用getpagesize()

来自分类Dev

-序列点警告-这是什么意思,并且违反ANSI C标准吗?

来自分类Dev

是否有用于在ansi C中制作抽象数据类型的标准方法?

来自分类Dev

如果我使用-std = c89为ANSI C指定标准,我是否甚至需要-pedantic?

来自分类Dev

MSVC 2010是否符合C ++ 11标准

来自分类Dev

为什么C标准不公开要获取malloc块大小的函数?

来自分类Dev

在c中使用malloc时的自由变量

来自分类Dev

在C中使用malloc保留内存

来自分类Dev

在C中使用malloc不起作用

来自分类Dev

何时在 C 中使用 calloc 或 malloc

来自分类Dev

在C中使用标准函数名称

来自分类Dev

使用ʻA <int> :: template B <int> x;`定义变量是否符合C ++标准?

来自分类Dev

使用-O选项的g ++浮点行为不是严格符合C ++ 11标准的共形吗?

来自分类Dev

视觉c ++ std :: isfinite()标准是否符合标准?

来自分类Dev

UVa在线判断带有scanf的ANSI C运行时错误,但与sscanf结合使用

来自分类Dev

Joel指的是哪个ANSI标准?

来自分类Dev

在使用C malloc的C ++构造函数中使用new

来自分类Dev

在malloc中使用sizeof

来自分类Dev

在Pthread中使用malloc

来自分类Dev

如何在ANSI C中使用strsignal和WCOREDUMP?

来自分类Dev

在C中使用scanf匹配常规字符

来自分类Dev

在C中使用scanf()函数处理空格

来自分类Dev

对齐的malloc和标准malloc之间的区别?

来自分类Dev

如何使 C 代码符合 MISRA C:2012 标准?

来自分类Dev

C标准库中的函数可以在C ++中使用吗?

Related 相关文章

  1. 1

    功能和结构名称的命名约定,并符合ANSI C标准

  2. 2

    是否符合Oracle Equi-joins ANSI标准

  3. 3

    在Visual Studio 2015中强制执行ANSI C标准

  4. 4

    使用ANSI编码标准创建实例化视图

  5. 5

    C:在malloc()中使用getpagesize()

  6. 6

    -序列点警告-这是什么意思,并且违反ANSI C标准吗?

  7. 7

    是否有用于在ansi C中制作抽象数据类型的标准方法?

  8. 8

    如果我使用-std = c89为ANSI C指定标准,我是否甚至需要-pedantic?

  9. 9

    MSVC 2010是否符合C ++ 11标准

  10. 10

    为什么C标准不公开要获取malloc块大小的函数?

  11. 11

    在c中使用malloc时的自由变量

  12. 12

    在C中使用malloc保留内存

  13. 13

    在C中使用malloc不起作用

  14. 14

    何时在 C 中使用 calloc 或 malloc

  15. 15

    在C中使用标准函数名称

  16. 16

    使用ʻA <int> :: template B <int> x;`定义变量是否符合C ++标准?

  17. 17

    使用-O选项的g ++浮点行为不是严格符合C ++ 11标准的共形吗?

  18. 18

    视觉c ++ std :: isfinite()标准是否符合标准?

  19. 19

    UVa在线判断带有scanf的ANSI C运行时错误,但与sscanf结合使用

  20. 20

    Joel指的是哪个ANSI标准?

  21. 21

    在使用C malloc的C ++构造函数中使用new

  22. 22

    在malloc中使用sizeof

  23. 23

    在Pthread中使用malloc

  24. 24

    如何在ANSI C中使用strsignal和WCOREDUMP?

  25. 25

    在C中使用scanf匹配常规字符

  26. 26

    在C中使用scanf()函数处理空格

  27. 27

    对齐的malloc和标准malloc之间的区别?

  28. 28

    如何使 C 代码符合 MISRA C:2012 标准?

  29. 29

    C标准库中的函数可以在C ++中使用吗?

热门标签

归档