Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中扫描字符串时自动分配_C - Fatal编程技术网

在C中扫描字符串时自动分配

在C中扫描字符串时自动分配,c,C,我知道asprintf会写入字符串,它也会自动分配字符串。另外,STDIN是输入缓冲区。结合这两个具体事实,我想编写一个函数,该函数接受字符串并自动分配存储空间。我也知道手动操作的替代方法。我只是好奇这是否是一种替代方法 这是我的方法 int main() { char *str; int i; __fpurge(stdin); //To clear contents of stdin asprintf(&str,"%10s"

我知道asprintf会写入字符串,它也会自动分配字符串。另外,STDIN是输入缓冲区。结合这两个具体事实,我想编写一个函数,该函数接受字符串并自动分配存储空间。我也知道手动操作的替代方法。我只是好奇这是否是一种替代方法

这是我的方法

int main()
{

    char *str;
    int i;
    __fpurge(stdin);               //To clear contents of stdin
    asprintf(&str,"%10s",stdin);   //To take only 10 characters
    if(str)
    {   printf("Read %d characters -> %s",i,str);
        free(str);
    }

 }
然而,我得到的是这样的->

阅读11个字符->//后面跟着一些胡言乱语


非常感谢您的帮助。

您的代码无效
stdin
属于
FILE*
类型,而
asprintf
需要
char*
(因为转换说明符是
%s

如果您想从
stdin
读取数据,则需要使用设计用于从

文件*
,例如
fgets
fscanf

我了解该缺陷。有没有一种方法可以让我使用asprintf从stdin读取字符串?没有,
asprintf
printf
系列的其他成员没有从文件读取的机制
getline