¿Cuál es la C equivalente a la declaración C++ cin
? ¿También puedo ver la sintaxis en él?¿Cuál es la C equivalente a la declaración C++ cin?
Respuesta
cin
no es una declaración, es una variable que hace referencia a la corriente de entrada estándar. Entonces, la coincidencia más cercana en C es en realidad stdin
.
Si usted tiene un C++ declaración como:
std::string strvar;
std::cin >> strvar;
una cosa similar en C sería el uso de cualquiera de una amplia variedad de funciones de entrada:
char strvar[100];
fgets (strvar, 100, stdin);
Ver an earlier answer Hoy hice una pregunta sobre una forma de hacer entradas de línea y analizar de forma segura. Básicamente está ingresando una línea con fgets
(aprovechando su protección de desbordamiento del búfer) y luego usando sscanf
para escanear la línea de manera segura.
Cosas como gets()
y ciertas variaciones de scanf()
(como cuerdas sin límites) se deben evitar como la peste, ya que son fácilmente susceptibles de amortiguar el exceso de carreras. Están bien para jugar, pero cuanto antes aprendas a evitarlos, más robusto será tu código.
Probablemente desee scanf
.
Un ejemplo del enlace: sin embargo
int i, n; float x; char name[50];
n = scanf("%d%f%s", &i, &x, name);
Nota (como se menciona en los comentarios) que scanf es propenso a buffer overrun, y hay un montón de otras funciones de entrada se puede utilizar (ver stdio.h
).
Si _debes usar 'scanf', al menos úsalo de una manera que no desborde el búfer :-) Consulta http://stackoverflow.com/questions/3723044/get-scanf-to-quit-when -it-read-a-newline/3723071 # 3723071 para una mejor manera. – paxdiablo
No recomendamos usar 'scanf'. http://c-faq.com/stdio/scanfprobs.html – jamesdlin
Creo que mi advertencia es lo suficientemente clara.El OP es obviamente bastante nuevo para C, y scanf proporciona el comienzo perfecto para aprender sobre la entrada de línea de comandos sin tener que preocuparse por complejidades adicionales. Estoy seguro de que volverá a encontrar la idea de desbordamiento del búfer antes de que se escriba cualquier código de producción. Los usuarios más experimentados que leen la pregunta deberían prestar atención a la advertencia. – sje397
En C++, cin es la corriente de entrada stdin. No hay flujo de entrada en C, pero hay un objeto de archivo, llamado stdin. Puede leer de él usando una gran cantidad de maneras, pero aquí hay un ejemplo de cplusplus.com:
/* fgets example */
#include <stdio.h>
int main()
{
char buffer[256];
printf ("Insert your full address: ");
if (fgets(buffer, 256, stdin) != NULL) {
printf ("Your address is: %s\n", buffer);
}
else {
printf ("Error reading from stdin!\n");
}
return 0;
}
ACTUALIZACIÓN
he cambiado a utilizar fgets, que es mucho más simple ya que tienes preocuparse por el tamaño de su memoria intermedia. Si también desea analizar la entrada use scanf, pero , asegúrese de usar el atributo de ancho.
-1 para incluso * mencionar * 'obtiene'. Es demasiado propenso a saturar excesos, y nunca, nunca, * nunca * debe usarse en un código nuevo. – cHao
Bien, lo arreglaré. ¿Crees que scanf es mucho mejor? : P –
Personalmente no soy fanático de eso. 'fgets' hace un trabajo similar a' gets', sin embargo, y le permite especificar la longitud del buffer. La única pega es que iirc mantiene la nueva línea en lugar de mordisquearla. – cHao
No hay equivalente cercano a cin
en C. C++ es un lenguaje orientado a objeto y cin
utiliza muchas de sus características (la orientación a objetos, plantillas, sobrecarga de operadores) que no están disponibles en C.
Sin embargo, Puede leer cosas en C usando la biblioteca estándar C, puede ver la parte relevante aquí (cstdio reference).
+1 para proporcionar una referencia vinculada en lugar de mencionar/ilustrar una sola función como si esa fuera la única opción C. @Anteater:
Tienes razón, estoy tan acostumbrado a C++ que olvidé eso en C los nombres de los encabezados son diferentes. – jbernadas
- 1. Java equivalente de cin (C++)
- 2. ¿Cuál es la JVM equivalente en C#?
- 3. ¿Cuál es el equivalente de C# a la declaración With en VB?
- 4. ¿Cuál es el C# equivalente a la instancia de Java()?
- 5. ¿Cuál es la corriente de C++ equivalente a perror?
- 6. ¿Cuál es la de C++ equivalente al C# using
- 7. C++ a C#: cin a Console.Read
- 8. C++: asignar cin a una variable ifstream?
- 9. Python equivalente a usar la declaración de C# 's
- 10. Implementando el equivalente en C++ de C# usando la declaración
- 11. ¿Cuál es el equivalente de la declaración "Dim" de VB en C#?
- 12. ¿Cuál es la frase de declaración de VB "Chr (0)" equivalente en C#?
- 13. ¿Cuál es la mejor manera de hacer la validación de entrada en C++ con cin?
- 14. ¿Cuál es el equivalente de C# de ChrW (e.KeyCode)?
- 15. VB.NET equivalente a C# usando la directiva
- 16. ¿Qué es la declaración directa en C++?
- 17. ¿Cuál es el equivalente de C# al dynamic_cast de C++?
- 18. C# usando la declaración
- 19. ¿Cuál es el equivalente de VB.NET a este código C#?
- 20. Java equivalente de C# 'usando' declaración
- 21. declaración c equivalente a mongo query db.users.find ({edad {$ gt: 3}}, {})
- 22. que es la declaración C# equivalente de delphi "clase de" (tipo de clase)?
- 23. ¿Cuál es el equivalente de C# de CType en VB.NET?
- 24. ¿Cuál es la declaración correcta de main?
- 25. Objective-C equivalente a "anular" en C#
- 26. C# equivalente a la matriz asociativa php
- 27. C# & VB6: ¿Cómo convertir la declaración 'con' a C#?
- 28. ¿Puede explicar la siguiente declaración C/C++?
- 29. C++ equivalente a la función Python len()?
- 30. ¿Cuál es el equivalente de la palabra clave 'var' de C# en Java?
Creo que sería justo interpretar que la pregunta significa 'equivalente a un enunciado usando cin' – sje397