![]() |
| | #1 |
| Registered User Join Date: Aug 2008
Posts: 20
| How to store strings? 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 | |
| | #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 | |
| | #3 |
| DESTINY 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 | |
| | #4 |
| Registered User Join Date: Aug 2008
Posts: 20
| thx, but still don't work, the output is always "===============" |
| Ervilha is offline | |
![]() |
| Tags |
| strings |
| Thread Tools | |
| Display Modes | |
|
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 |