-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Linux - Executar comando no prompt utilizando a linguagem C
pergunta respondeu ao Marco Andres de vangodp em C, C++
A função system(" strace -o output.txt ") o algo assim. Deves fazer o include da biblioteca stdlib.h -
Se fizer o que bem entender vai sair do seu jeito, mas se fizer como eu disse nunca irá lhe sair bem. #include "stdio.h" void foo( char frase[]){ printf("Em foo: %d", sizeof(frase)); } int main(){ char frase [100]; printf("Em main: %d", sizeof(frase)); foo(frase); return 0; } Sei o que digo, não me questione.
-
Mesmo assim você não aportou nada novo ao tema. Se você Conhece as boas praticas de programação, sabe que em algum momento de sua, esperamos que longa vida, ele irá dividir seu código em funções, por enquanto estiver usando o main como única função, tudo bem, isso eu já falei também, mas quando usar o sizeof em outra função vai dar erro. já provou usar o sizeof para memória alocada com malloc? É mais ou menos a mesma coisa. Sempre e quando você souber o que esta fazendo, muito bem, mas tenha claro que sizeof não sempre é a melhor solução. Se você Conhece as boas praticas de programação, sabe que em algum momento de sua, esperamos que longa vida, ele irá dividir seu código em funções, por enquanto estiver usando o main como única função, tudo bem, isso eu já falei também, mas quando usar o sizeof em outra função vai dar erro. já provou usar o sizeof para memória alocada com malloc? É mais ou menos a mesma coisa. Sempre e quando você souber o que esta fazendo, muito bem, mas tenha claro que sizeof não sempre é a melhor solução.
-
Ta desculpado >_<. Mesmo porque se nota que você não leu minha resposta, ou de haver lido talvez não tenha entendido. Vou lhe refrescar a memória. "Entendo... porem he de dizer que isto não é possível, pois o sizeof vai lhe retornar, no main, o tamanho completo do vetor, porem em outras funções você vai obter somente o tamanho do ponteiro a char, teria de ser feito por você dita função, pois não existe, ou simplesmente ignoro sua existência." você está me dizendo a mesma coisa que eu falei.
-
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Procure arrumar esses pontos do seu programa, caso não consiga, podemos trabalhar nas partes mais criticas que são alterar e ler desde o arquivo, acredito que lhe ajudando nessas partes você seja capaz de terminar o programa. -
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Por isso você precisa saber qual estrutura vai ter o arquivo. Alguns pontos como: Onde guardo os dados referentes a um depósito? No mesmo arquivo? Em um arquivo diferente? Lembre que você pode usar um segundo arquivo com a seguinte estrutura: +10 -5 +55.67 ... Ou inclusive pode estar no mesmo arquivo. Outro ponto que não acho bem é que o usuário escolha o numero da sua conta, isso deveria ser automático. E nem que os arquivos tenham a contra senha como nome, pois podem dar-se casos de repetir 2 contrassenhas, mas nunca se repetirá por exemplo, o numero de conta+agencia, ou a carteira de identidade, cpf, etc. você pode criar um arquivo com os dados tipo nome numero senha cpf arquivo raul 001 007 123.456.789-0 raul 123.456.789-0.txt marcos 002 123 123.456.790-0 marcos 123.456.790-0.txt Ao buscar um usuário, por exemplo raul, lhe remitiria a um arquivo tipo: raul 123.456.789-0.txt +5 -10 +100.98 -55.10 O primeiro arquivo se chama arquivo de índices, e facilita na busca de dados. são somente ideias claro... só para ter uma base. Sorte. são somente ideias claro... só para ter uma base. Sorte. -
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Os modos de abertura também influenciam muito como atua os "filepointers": dependendo de como você abre o arquivo ele vai ter um comportamento diferente dependendo de como você abre o arquivo ele vai ter um comportamento diferente -
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Seu programa tem uns quantos erros que por desgraça para corrigir me obrigaria a praticamente reescrever-lhe por completo. Não está mal o conceito, da para entender claramente o que você quer fazer, mas tem varios falhos tanto quanto a funcionalidade se refere como em lógica. Outro grande problema que tem é a falta de organização que tem. Não deve ser escrito tudo dentro de main, melhor usar funções(por não dizer classes), separar o código fica mais fácil encontrar erros pois são menores as porcões de código. Vou lhe comentar o maior problema que você tem. Ao abrir um arquivo, logo depois de escrever nele ou ler, ou realizar qualquer operação nele, tenha de costume fechar o arquivo com com a função close, pois ela atua como o "salvar dados" dos editores. mesmo que você tenha que abrir o arquivo para cada operação, é recomendado fechar o arquivo, se tiver que inserir dados para 10 usuários, você precisa abrir editar e fechar dez vezes. É totalmente errado você abrir um arquivo com open editar e voltar a abrir com open sem ter fechado o anterior arquivo. -
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Nossa! >_< Seu código é extenso hehe Por favor... use o botão <> para dar formato ao texto ou pode conter erros, pois a pagina usa certas combinações de caracteres que coincidem com partes do código em c e podem desaparecer. Ademais o código é mais fácil de entender, coisa que lhe ajudará a obter ajuda mais rápido. -
Como armazenar valores diferentes de uma mesma variável em C++?
pergunta respondeu ao RodrigoAraIF de vangodp em C, C++
Exponha o código para que seja possível analisar. -
Imprima com uma série de dígitos, separados por dois espaços
pergunta respondeu ao jeandemira de vangodp em C, C++
receba o numero como um int, faça a comparação para cer si esta entre 1 e 32767. Logo use a função sprintf para transformar o int em um string. Passo seguido imprima char a char com os 2 espaços. Exemplo. int someInt = 368; char str[12]; sprintf(str, "%d", someInt); str é uma string com o "368". -
Dificilmente você conseguirá ajuda colando o que você precisa fazer no fórum, e não me refiro somente a este, se não que em qualquer fórum. Normalmente os usuários somente respondem duvidas concretas sobre uma parte do seu programa. Tente fazer o que lhe estão pedindo, e nas partes que tiver duvida, faça a consulta. Como vamos saber em que partes do seu programa você tem duvidas?
-
Como resolver este exercicio de Strings em C++
pergunta respondeu ao AlexandreJesus de vangodp em C, C++
Pega uma frase ou palavra como "lobo", para este exemplo, e incrementa cada uma das letras conforme a tabela asc2 deixando "lobo" como "mpcp". cada uma das letras incrementadas em 1 valor fica como na ilustração abaixo: l+1 = m o+1 = p b+1 = c o+1 = p Para provar o anteriormente dito, aqui tem um exemplo: #include <stdio.h> #include <string.h> char *Codifica(char *strOut, char *strIn) { strcpy(strOut, strIn); //Copia o que está em strIn em strOut char *strAux = strOut; //Faz strAux apontar a strOut (copia o ponteiro strOut) while( *strAux ) { //Por enquanto não encontrar o nulo no final da string continua rolando *strAux = (*strAux)+1; //copia a seguinte letra para a anterior. Tipo se tenho farinha pega a e copia na f, algo assim f<-arinha ficando aarinha *strAux++; } return strOut; } int main() { char in[100] = "lobo"; //Troque lobo por outras frases, ou palavras, para comprovar. Não ultrapasse 99 letras. char out[100] = ""; //fazendo uso da função printf("%s", Codifica( out, in)); return 0; } Se tiver alguma duvida pergunte. -
Não! Em ponteiros e strings definitivamente não se põe o & adiante.
-
O problema é a causa de que você está esperando um ponteiro simples quando deveria estar esperando um ponteiro duplo na sua função alocar. #include <stdio.h> #include <stdlib.h> void Alocar(char **p, int c) { *p = ( char* ) malloc( c * sizeof(char) ); } int main() { int i, j, x; printf("Digite o tamanho da string: "); scanf("%d", &x); char *ptr = NULL, vogais[10]= "aeiouAEIOU", nada[1]=""; Alocar( &ptr, x ); if(ptr==NULL) { printf("FAIL"); exit(1); } printf("Digite sua string com %d caracteres (espaço conta como caractere): \n", x); scanf(" %[^\n]s", ptr); printf("\n"); printf("\n"); printf("*****String sem vogais*****\n"); printf("\n"); for(i=0; i<x; i++) { for(j=0; j<10; j++) { if(ptr[i]==vogais[j]) { ptr[i]=nada[0]; } } printf("%c", ptr[i]); } free(ptr); ptr=NULL; return 0; } Quando eu tenho uma função como esta: void alocar(char *p) ...e paso isso: char * ptr; alocar (ptr); ...é como si tivesse fazendo isso em realidade: char *ptr; char *p; p = ptr; primeiro entender que ptr é uma variável "selvagem"(aponta a qualquer lugar) pois não foi inicializada. Quando eu faço a chamada da função alocar (ptr) e passo ptr, é como si estivesse fazendo p = ptr, agora p pasa a ser uma copia de ptr, e portanto aponta ao mesmo lugar que ptr. E O MAIS IMPORTANTE!!!! Se manipular p você ESTA MANIPULANDO UMA CÓPIA DE PTR E NÃO REALMENTE A PTR, que é p pois ptr não foi passado por referencia e sim por cópia!!! Não lhe falei que fazer alocar(ptr) é o mesmo que fazer p = ptr? Então! você esta fazendo uma copia do que aponta p, mas em realidade ao modificar p dentro da função, p sim vai receber a nova direção do malloc onde o array foi alocado, porem ptr continuará apontando para onde apontava, para um lugar qualquer da memória. Por isso seu programa falha. Para manipular uma variável indiretamente eu preciso de um ponteiro certo? E para manipular um ponteiro indiretamente que necessito? UM PONTEIRO DUPLO!!!! Por isso sua função deve estar esperando um ponteiro por referencia. É algo complicado de entender porem é assim. Somente pense que se eu preciso passar char *ptr a função precisa esperar char **p, se eu quero passar char **ptr a função deve esperar char ***ptr, e assim sucessivamente, se não eu estou alterando uma copia, e não a original. Isso é o principio básico dos ponteiros, se quero alterar uma variável dentro de outra função devo passar essa variável por referencia. Lembra? Se continuar com dificuldades para entender pergunte. Se continuar com dificuldades para entender pergunte.
- 4 respostas
-
- c
- funçãofree
- (e %d mais)
-
Depende Provavelmente seja a melhor opção. No caso de um ponteiro a char que aponte a uma literal tem alguns usos, porem não é muito indicada em alguns outros casos, como os que necessitem ser modificado em tempo de execução. Em C++ por exemplo está desaconselhado. Essas seriam 2 formas de fazer algo parecido a um cast. char* frase = "Isso é uma literal apontada por um ponteiro a char"; char vetor1[100] = frase; Ou char* frase = "Isso é uma literal apontada por um ponteiro a char"; char vetor2[100]; strcpy(vetor2, frase);
- 1 resposta
-
- linguagem c
- strings
-
(e %d mais)
Tags:
-
A resposta é a causa dos operadores sobrecarregados. Em c++ podemos sobrecarregar praticamente qualquer operador. Provavelmente isso não exista em java, mas você verá isso em c++ pois a orientação a objetos é muito mais potente em c++. De uma olhada aqui: https://pt.wikibooks.org/wiki/Programar_em_C%2B%2B/Sobrecarga_de_operadores Logo investigue mais sobre o assunto. Quando entender... a resposta é que o próprio linguagem já traz alguns operadores sobrecarregados.
-
pode trocar: scanf("%s", nome1); scanf("%c", &limparBuffer); // Essa linha é ignorada pelo compilador. Serve para limpar o buffer de entrada Por scanf("%[^\n]*c", nome1); >_<
-
cadastrar_notas_bimestrais esta como privada, não podes ter acesso a ela. Mude cadastrar_notas_bimestrais para acesso publico e prove.
-
Isto é um projeto de codeblocks ou devc++? Ou simplesmente você está usando o console para compilar? Ao parecer o comando " pai@demas:~/Projetos/C++/projeto03$ g++ -o prog estudante.cpp main.cpp estudante.cpp:" parece estar errado já que repete estudante.cpp duas vezes. Não seria um .h e um .cpp?
-
Bom exercício para praticar. Qual é sua duvida?
-
Isso não existe struct (agenda *v, int n, char* elem){ Está errado, isso tem erros de syntax Está errado, isso tem erros de syntax
-
?? que é isso?
-
Qual o uso que você quer dar para isso? As vezes pode não existir soluções devido a que o uso seria nulo pela maioria dos programadores, nesse caso deveria ser implementado pelo próprio programador, pense se realmente é necessário o que você quer, ou se é possível usar outras soluções. Outro ponto é que em C você pode usar variaveis como int32 etc, isso garante que você terá 4 bytes em todo momento, 1 byte é igual a 8 bits, 8 bits multiplicados por 4 é igual a 32, por isso int32, é um inteiro de 32 bits, ou o que vem a ser o mesmo, int de 4 bytes. ;)
-
Se você tem 10 intens.... this->nomeItem[0]="cerveja"; this->nomeItem[1]="pinga 51"; this->nomeItem[2]="caipirinha"; this->nomeItem[3]="agua"; this->nomeItem[4]="coca"; this->nomeItem[5]="salgado"; this->nomeItem[6]="cigarro"; this->nomeItem[7]="amendoim"; this->nomeItem[8]="aperitivo"; this->nomeItem[9]="agua com gas"; Como é que reserva memória somente para 9? string nomeItem[9]; int itens[9]; O certo seria: string nomeItem[10]; int itens[10]; O problema é que você está estourando o vetor de strings escrevendo na 10 posição que não existe. Cuidado com isso!!