C Board  

Go Back   C Board > General Programming Boards > C Programming

Reply
 
LinkBack Thread Tools Display Modes
Old 09-09-2009, 05:59 AM   #1
Registered User
 
Join Date: Aug 2008
Posts: 20
How to store strings?

I made this code, to enter several data.
The variables that stored numbers work well.
But the String don't.
They always give the output "=================="

Code:
// Projeto_Veiculos.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <iostream>


// ----------------------------------------------------------------

/* Estrutura que será usada para criar os nós da lista */

typedef struct tipo_produto {
    int codigo;                 /* Codigo do produto */
    int ano;
	char marca[30];
	char modelo[30];
	char cor [30];
	double preco;                /* Preco do produto */
    struct tipo_produto *proximo;    /* Proximo elemento da lista encadeada de Produtos */
}  TProduto;

// ----------------------------------------------------------------

/* Prototipos das funcoes para inserir e listar produtos */

void inserir(TProduto **cabeca);
void listar (TProduto *cabeca);

int main()
{
    TProduto *cabeca = NULL;        /* Ponteiro para a cabeca da lista */
    TProduto *noatual;               /* Ponteiro a ser usado para percorrer a lista no momento de desalocar seus elementos*/
    char q;                          /* Caractere para receber a opcao do usuario */
    do {
        printf("\n\nOpcoes: \nI -> para inserir novo produto;\nL -> para listar os produtos; \nS -> para sair \n:");
        scanf("%c", &q);     /* Le a opcao do usuario */
        switch(q) {
            case 'i': case 'I': inserir(&cabeca); break;
            case 'l': case 'L': listar(cabeca); break;
            case 's': case 'S': break;
            default: printf("\n\n Opcao nao valida");
        }
        fflush(stdin);    /* Limpa o buffer de entrada */
    } while ((q != 's') && (q != 'S') );

/* Desaloca a memoria alocada para os elementos da lista */

    noatual = cabeca;
    while (noatual != NULL)
    {
        cabeca = noatual->proximo;
        free(noatual);
        noatual = cabeca;
    }
}
/* Lista todos os elementos presentes na lista encadeada */

void listar (TProduto *noatual)
{
    int i=0;
    while( noatual != NULL)    /* Enquanto nao chega no fim da lista */
    {
        i++;
		//std::cout << "Marca: " << noatual->marca;
		printf("\n\nProduto numero %d\nCodigo: %d \nMarca: %s \nModelo: %s \nCor: %s\nAno: %d \nPreco:R$%.2lf", i, noatual->codigo, noatual->marca, noatual->modelo, noatual->cor, noatual->ano, noatual->preco);
        noatual = noatual->proximo;     /* Faz noatual apontar para o proximo no */
    }
}
/* Funcao para inserir um novo no, ao final da lista */

void inserir (TProduto **cabeca)
{
    TProduto *noatual, *novono;
    int cod, ano;
	char marca[30];
	char modelo[30];
	char cor[30];
    double preco;
	fflush(stdin);
    printf("\n Codigo do veiculo: ");
    scanf("%d", &cod);
	fflush(stdin);
	printf("\n Marca do veiculo: ");
    gets(marca); 
	fflush(stdin);
	printf("\n Modelo do veiculo: ");
    gets(modelo);
	fflush(stdin);
	printf("\n Cor do veiculo: ");
    gets(cor);
	fflush(stdin);
	printf("\n Ano de fabricacao do veiculo: ");
	scanf("%d", &ano);
	fflush(stdin);
    printf("\n Preco vaiculo:R$");
    scanf("%lf", &preco);
    if (*cabeca == NULL)    /* Se ainda nao existe nenhum produto na lista */
    {
/* cria o no cabeca */
        *cabeca = (TProduto *) malloc(sizeof(TProduto));
        (*cabeca)->codigo = cod;
		strcmp((*cabeca)->marca,marca);
		strcmp((*cabeca)->modelo,modelo);
		strcmp((*cabeca)->cor,cor);
		(*cabeca)->ano = ano;
		(*cabeca)->preco = preco;
        (*cabeca)->proximo = NULL;
    }
    else
    {
/* Se ja existem elementos na lista, deve percorre-la ate' o seu final e inserir o novo elemento */
        noatual = *cabeca;
        while(noatual->proximo != NULL)
            noatual = noatual->proximo;    /* Ao final do while, noatual aponta para o ultimo no */
        novono = (TProduto *) malloc(sizeof(TProduto));/* Aloca memoria para o novo no */
        novono->codigo = cod;
		strcmp(novono->marca,marca);
		strcmp(novono->modelo,modelo);
		strcmp(novono->cor,cor);
		novono->ano = ano;
        novono->preco = preco;
        novono->proximo = NULL;
        noatual->proximo = novono;     /* Faz o ultimo no apontar para o novo no */
    }
}
Ervilha is offline   Reply With Quote
Old 09-09-2009, 06:30 AM   #2
Registered User
 
Join Date: Apr 2006
Location: United States
Posts: 3,202
Use strncpy.
__________________
Os iusti meditabitur sapientiam
Et lingua eius loquetur indicium

"There is nothing either good or bad, but thinking makes it so." (Shakespeare, Hamlet, Act II scene ii)

http://www.myspace.com/whiteflags99
whiteflags is offline   Reply With Quote
Old 09-09-2009, 08:22 AM   #3
DESTINY
 
BEN10's Avatar
 
Join Date: Jul 2008
Location: in front of my computer
Posts: 656
Dont use gets(), instead use fgets.
__________________
HOPE YOU UNDERSTAND.......

for( ; ; )
printf("If you can't make it good, at least make it look good");

PC specifications- 512MB RAM, Windows XP sp3, 2.79 GHz pentium D.
IDE- Microsoft Visual Studio 2008 Express Edition
BEN10 is offline   Reply With Quote
Old 09-09-2009, 10:38 AM   #4
Registered User
 
Join Date: Aug 2008
Posts: 20
thx, but still don't work, the output is always "==============="
Ervilha is offline   Reply With Quote
Reply

Tags
strings

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Programming using strings jlu0418 C++ Programming 5 11-26-2006 08:07 PM
strings in C++ elad C++ Programming 11 05-20-2006 02:27 AM
Problems with strings as key in STL maps all_names_taken C++ Programming 3 01-17-2006 11:34 AM
cin strings till eof bfedorov11 C++ Programming 2 10-15-2003 07:27 AM
Table mapping Strings to Strings johnmcg C Programming 4 09-05-2003 11:04 AM


All times are GMT -6. The time now is 08:47 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22