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