Durub
Moderadores-
Total de itens
788 -
Registro em
-
Última visita
Tudo que Durub postou
-
[Duvida/C] Problema com criação de vários arquivos
pergunta respondeu ao GabrielCardelli de Durub em C, C++
count é int. O segundo parâmetro deve ser uma string. (um array de char terminado em '') Faça isto, então: sprintf(nome, "Arquivos%d.ini", count); Não se esqueça de fechar o arquivo antes de sumir com o seu pointer. (Ali você simplesmente reatribui o txt, não usa um fclose nele) Abraços! -
http://www.gnu.org/software/inetutils/ O melhor para você é pegar um programa open source (no caso, baixe ali aonde ele diz download) e analisar seu código. Você não poderá copiar nada integralmente do código, já que é GPL, mas vai te servir como base. Abraços! EDIT: Não tenho certeza se é GPL, só achei por ser do gnu.org, verifique isto.
-
[Duvida/C] Como transformar todas as letras em maiúsculas
pergunta respondeu ao GabrielCardelli de Durub em C, C++
Só usar a tolower, da mesma biblioteca. Abraços. -
[Duvida/C] Como transformar todas as letras em maiúsculas
pergunta respondeu ao GabrielCardelli de Durub em C, C++
Você pode utilizar a toupper da ctype.h. Isto em cada caractere. #include <stdio.h> #include <ctype.h> int main(void) { char string[] = "ola"; int i; for(i = 0; i < 3; i++) printf("%c", toupper(string[i])); /* OLA */ return 0; } Abraços. -
Isto no Windows. No Unix/Linux não há distinção entre arquivos textos e arquivos binários. Logo abrir com "w" ou "wb" tanto faz. Já no Windows fazer isto é obrigatório. Abraços.
-
Aptdados->dado só tem uma posição. Tente alocar assim: info = (Aptdados)malloc(sizeof(tdados)); info->dados = (char*) malloc(20); Abraços.
-
Você está usando o operador igual em uma string. A forma correta de copiar é usando strcpy da string.h. strcpy(dados.descricao, descricao); Outra coisa, fica mais fácil se você informar a linha no código, com um comentário. Pois não há como ficar contando que linha é aqui. Mas em uma IDE, por exemplo, ele já mostra a linha para você. Abraços.
-
Ele vai rodar enquanto o caractere não for igual ao NULL, que é o delimitador da string. s[0] -> 'O' s[1] -> "i' s[2] -> '\ 0' int i; /* i -> 0; s[0] == 'O', executa i -> 1; s[1] == 'i', executa i -> 2; s[2] == '\ 0', para */ for(i = 0; s[i] != '\ 0'; i++) printf("%c", s[i]); /* Saída: Oi */ Abraços.
-
É um grande erro executar comparações em um for desta forma. A cada vez que o for fosse rodado, strlen seria chamado. Eu usaria a comparação s != '\ 0'. (É junto a barra e o 0) Abraços.
-
Só agora fui perceber. Você está armazenando como int. Deveria ser char. Abraços.
-
[DUVIDA / C ] Que comando usar para limpar a tela?
pergunta respondeu ao GabrielCardelli de Durub em C, C++
Só tem esta função no conio.h da Borland. Use o system mesmo, já que não há uma forma nativa de fazer isto portavelmente. (De qualquer forma, cls é só no Windows, como não estou no Ubuntu agora não posso verificar qual é o mesmo comando no Unix/Linux) Abraços. -
Arrumei, havia me confundido com gets. Na verdade, pegue esta função em vez de usar o fgets cru: char *readstring(char *dest, int num) { int i; fgets(dest, num, stdin); i = strlen(dest); if(dest[--i] == '\n') dest[i] = '\ 0'; /* RETIRE O ESPAÇO ENTRE A BARRA E O ZERO, NÃO DÁ PARA POSTAR ESSES CARACTERES JUNTOS NO FÓRUM */ return dest; } Chame-a como chamaria a fgets, só que sem o último argumento. Precisa da string.h. Abraços!
-
fgets(cli[count].end, 30, stdin); Abraços. EDIT: Me confundi com gets.
-
Você precisa alocar a memória para o char com malloc. De qualquer forma use char login[x] e char senha[x] aonde x é número de caracteres que você quer poder armazenar. Abraços.
-
http://scriptbrasil.com.br/forum/index.php?showtopic=129892 Abraços.
-
O strlen procura pelo caractere null ('\ 0'), sem o espaço. Coloque ele na última posição do array de int e tudo rodará perfeitamente. (Eu acho, não analisei a lógica) Abraços.
-
for(j=0;i<tam;j++){ Aqui está o erro: provavelmente você quer j < tam. Abraços.
-
É verdade, isalpha da ctype.h. http://www.cplusplus.com/reference/clibrar...pe/isalpha.html Abraços!
-
Ainda pode ser um símbolo ou algo assim. Fiz esta função rapidamente: int isConsonant(char key) { switch(key) { case 0x41: case 0x45: case 0x49: case 0x4F: case 0x55: case 0x61: case 0x65: case 0x69: case 0x6F: case 0x75: return 0; } if(((key < 0x41) || (key > 0x7A)) || ((key > 0x5A) || (key < 0x61))) return 0; return 1; } Primeiro ela verifica se é uma vogal, se for, retorna 0 direto. Se não, verifica se está no range dos caracteres do alfabeto (A-z). Mas como no range A-z ainda tem alguns símbolos, verifica se está neste range. Se passar em todos os testes (for uma consoante), retorna 1. Abraços.
-
Você quer passar um array ("vetor") para a soma, impossível. Cada nota (nota1, nota2, nota3, nota4) tem 30 posições. Abraços.
-
Não tem como. Um ponteiro tem o tamanho de um long (4 bytes, salvo em sistemas 64 bits). Você vai precisar colocar um NULL na última posição e usar strlen. Abraços. PS: Você não está pegando o tamanho do char, você está pegando o tamanho do ponteiro.
-
Cada variável tem um endereço na memória. Quando você passa uma variável por parametro, você faz uma cópia desta variável. Quando você passa uma variável por referência, você passa o endereço na memória. #include <stdio.h> void multiplicar(int a, int b) { a *= b; } int main(void) { int a = 5; int b = 10; multiplicar(a, b); printf("%d - %d\n", a, b); /* 5 - 10 */ multiplicar(&a, b); /* & é o símbolo para pegar seu endereço, uma referência */ printf("%d - %d\n", a, b); /* 50 - 10 */ return 0; } Veja aí se conseguiu entender. Caso não, poste que eu tento dar outra explicação. Abraços! EDIT: Demorei um tempo pra escrever o exemplo que nem vi que o Beraldo tinha postado.
-
É. Vamos verificar o que o system("pause") faz para funcionar: Suspende o seu programaChama o sistema operacionalAbre um shell do sistema operacional (inicia novamente o sistema operacional em um sub processo)Agora procura pelo programa pause.exeAloca a memória para executar o programaExecuta o programa e espera por uma teclaDesaloca a memóriaSai do sistema operacionalContinua com o programaSem contar alguns problemas como a portabilidade e caso alguém renomeie o pause.exe. O jeito é usar cin.get() ou getchar(). (C++ e C, respectivamente) Abraços.
-
a não é um array. Abraços.
-
Como assim o que há de errado nos dois printf? O que ele está imprimindo? Maior salário: Pegue o primeiro valor (dados[0].salario) e armazene em uma variável (maior_salario). Então faça um loop (for) de 1 até 19 e verifique caso o valor de dados[x].salario for maior que o atual maior_salario, armazene o valor de dados[x].salario em maior_salario. O percentual ...: Antes de tudo, você precisa saber o sexo. Não teria que colocar na struct? De qualquer forma, sabendo o sexo, crie uma nova variável (salario_maior_de_1000 - apenas para ilustração, eu recomendaria outro nome) e verifique o sexo e o salário. Se for mulher e o salário for maior que 1000, incremente a variável salario_maior_de_1000. Depois você faz o cálculo da porcentagem com o número total de mulheres (que você também pode pegar pelo método citado anteriormente, só tirando o salário) e o número de mulheres com salário maior que 1000. Abraços.