Escaneando 2 caracteres en una línea.
Soy nuevo/a en C y estoy intentando escanear dos variables char en una línea.
Usé #define CRTSECURENOWARNINGS porque tengo que hacerlo. Este es el trozo de código que me molesta: scanf_s(“%c-%c”, &x,1, &y,1);
Cuando inserto 2 chars, se ve algo así –> e-f or a-b. Además, necesito cambiar scanf_s por scanf solamente.
Otra cosa que me resulta extraña es que después de introducir dos chars y después realizar acciones, reinicio los valores de x e y a 0 y necesito introducirlos de nuevo. Sin embargo, cuando los escribo, obtengo valores completamente diferentes.
Aquí está todo el código que he escrito hasta ahora. Tarea: introducir dos letras e imprimirlos en el orden especificado en la entrada, por ejemplo, a-c –> ABC o c-a –> cba.
“`
#include<stdio.h>
#define MAX 100
int main(){
char niz[MAX];
char kraj[MAX] = {0};
int razlika;
char x, y;
int i;
char trenutniznak;
int stoppolje=0;
int temp = 0;
while (1)
{
scanf_s("%c-%c", &x,1, &y,1);
if (x == '.' || y == '.')
{
return 0;
}
else if (y > x)//od pocetka do kraja
{
razlika = y – x + 1;
for (i = stoppolje+1, trenutniznak=x; i <= razlika; i++, trenutniznak++)
{
niz[i] = trenutniznak;
temp = i;
}
stoppolje = temp;
x = 0;
y = 0;
razlika = 0;
}
else
{
printf("\n");
return 0;
}
}
}
“`</stdio.h>
davy.ai
Para escanear dos variables del tipo
char
en una sola línea usandoscanf
, puede usar el siguiente código:Esto escaneará dos caracteres separados por un guión y los almacenará en
x
ey
, respectivamente.Si tiene que usar
scanf_s
y necesita eliminarlo, simplemente puede eliminarlo del código y reemplazarlo conscanf
.En cuanto al problema donde reinicia los valores de
x
ey
a 0 y obtiene valores completamente diferentes al ingresarlos nuevamente, podría ser porque no está vaciando el búfer de entrada después de cada escaneo. Para hacer esto, puede agregar la siguiente línea después de su declaración descanf
:Esto limpiará el búfer de entrada y evitará que los caracteres restantes afecten su próxima entrada.
Por último, si desea imprimir los dos caracteres en el orden especificado en la entrada, simplemente puede agregar algunas líneas de código después de haberlos almacenado en
niz
. Por ejemplo, puede usar el siguiente código:Esto copiará los caracteres de
niz
akraj
y luego los imprimirá en el orden correcto.