与C++ cin语句相当的C是什么?

rec*_*gle 14 c c++

与C++ cin语句相同的C是什么?我也可以看到它的语法吗?

pax*_*blo 18

cin它不是一个语句,它是一个引用标准输入流的变量.所以C中最接近的匹配实际上是stdin.

如果你有一个C++语句,如:

std::string strvar;
std::cin >> strvar;
Run Code Online (Sandbox Code Playgroud)

C中类似的东西是使用各种输入函数:

char strvar[100];
fgets (strvar, 100, stdin);
Run Code Online (Sandbox Code Playgroud)

请参阅我今天给出的一个问题的早期答案,其中一个方法是安全地进行线路输入和解析.它基本上输入一条线fgets(利用其缓冲区溢出保护),然后使用sscanf安全扫描线.

喜欢的东西gets()某些变化scanf()(如无界的字符串)应避免瘟疫一样,因为他们容易受到超支缓冲.它们适合玩耍,但是越早学会避免它们,代码就会越强大.

  • 我认为将这个问题解释为"等同于使用cin的陈述"是公平的 (4认同)

sje*_*397 9

你可能想要scanf.

链接的一个例子:

int i, n; float x; char name[50];
n = scanf("%d%f%s", &i, &x, name);
Run Code Online (Sandbox Code Playgroud)

但是请注意(如注释中所述)scanf容易出现缓冲区溢出,并且您可以使用许多其他输入函数(请参阅参考资料stdio.h).

  • 我认为我的警告很清楚.OP对于C来说显然是相当新的,而scanf提供了学习命令行输入的完美开始,而无需考虑其他复杂性.我确信在编写任何生产代码之前,他/她会再次遇到缓冲区溢出的想法.阅读问题的更有经验的用户应该留意警告. (3认同)
  • 如果你_must_使用`scanf`,至少以非缓冲区溢出的方式使用它:-)请参阅http://stackoverflow.com/questions/3723044/get-scanf-to-quit-when-it- read-a-newline/3723071#3723071更好的方法. (2认同)
  • 可以说是一个真正的问题?它们没有任何理由在comp.lang.c常见问题解答中包含3个问题; 他们经常被问到.它们也是人们经常遇到的问题.而IMO更容易学习使用`fgets`和`sscanf`而不是学习`scanf`的小陷阱.(另外,当然,人们应该知道什么是坏习惯*,但不应鼓励他们*采用*他们.) (2认同)