Duda ultranovato, programa en C

Buenas :) no se si esto tiene cabida en este subforo, pero me parecio el mas adecuado para mi pequeña duda.
Mi pregunta es simple, como seria un programa escrito en C en el que el programa te hace una pregunta y segun lo que escribas haga una cosa o otra, pero con respuestas de texto, osea con numeros se hacerlo por que pones if (a=2) haz tal etc etc pero if (a = "culo") como se hace para que acepte algo asi?

Esto es mas o menos lo que la logica y falta conocimiento me trae a la mente, pero obviamente algo asi no funciona.
#include <stdio.h>
int main()
{
   char si;
   
   printf("blablabla?\n");
   scanf("&c", si);
   if (si="ble")
   printf ("blublublublu");
   else
   printf ("blibliblibli");

   }


No me mateis, y muchas gracias =)
Deberías de ir por pasos. Veo un error en:

if (si=="ble")

(tenias que poner un = (igual) mas)

Para decir que una variable es igual a otra, se usa ==, sin embargo si lo que quieres es asignarle a una variable un valor se usa =.

Para hacer lo que tu quieres hacer, así no se puede, deberías de mirarte esta página:

http://www.conclase.net/c/librerias/index.php

y mas concretamente:

http://www.conclase.net/c/librerias/lib ... lib=string

y mas concretamente las funciones strcmp y strcpy

Salu2!!
Hola,

Lo primero lo que dice Puyover, para comparar se utiliza ==, sin embargo en este caso estas comparando strings (cadenas de caracteres) y esa comparación de C solo admite comparaciones entre enteros, reales, caracteres y poco mas (seguro que algo me dejo) pero no strings. Por tanto tienes que hacer uso de la librería string.h para ello añades al codigo:
#include <string.h>


Luego para comparar cadenas, usas la función strcmp(cadena1, cadena2), si la función devuelve 0 esque son iguales (tienen 0 caracteres diferentes).
Por otro lado, si no me equivoco, tu declaración de char si; solo declaras un caracter, no una cadena (solo podrías almacenar 'a' o 'b' etc) para almacenar una cadena tienes que usar lo siguiente:

char cadena[100]; // seria una cadena de hasta 100 caracteres, la forma facil.
char *cadena2; // Luego deberias reservar memoria para los caracteres que quieras con malloc (mucho complicar me parece)

// en el main
cadena2 = (char *)malloc(sizeof(char) * numero_de_caracteres_que_quieres_meter);

// al final tendrias que liberar memoria
free(cadena2);


Además para leer de la entrada estandar una cadena deberías usar lo siguiente:

scanf("%s", cadena); // el %s significa que lees un string y lo metes en cadena que es un array (el de antes)


Bueno espero haberme explicado algo, al final la cosa debería quedar asi:

#include <stdio.h>
#include <string.h> // para manejo de strings

int main()
{
   char si[100];  // es una cadena no solo un caracter
   
   printf("blablabla?\n");
   scanf("%s", si);
   if (strcmp("ble", si) == 0)
   printf ("blublublublu");
   else
   printf ("blibliblibli");

   }



Espero haberte servido de ayuda y si me he pasao explicando algo lo siento, pero se hace lo que se puede, si necesitas algo más ya sabes,

un saludo!

Para mas ayuda yo uso esta web: http://www.cplusplus.com en ingles si, pero es genial.
Muchimas gracias a los dos, por responder, en especial a mikel snake, me ha servido mucho =)
3 respuestas