Você está aqui: C ::: Dicas & Truques ::: Arquivos e Diretórios |
Escrevendo palavras ou textos em um arquivo usando a função fputs()Quantidade de visualizações: 14260 vezes |
A função fputs() do header stdio.h é útil quando precisamos escrever palavras ou frases em um arquivo. Esta função aceita uma matriz de caracteres e um ponteiro para um objeto FILE representando o arquivo no qual queremos escrever. Se o texto for escrito com sucesso um valor inteiro diferente de zero é retornado. Se houver erro na escrita, o valor EOF é retornado. Veja um trecho de código no qual escrevemos duas frases em um arquivo chamado dados.txt. Note a quebra de linha entre as duas frases: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ FILE *arquivo; char texto[] = "Gosto muito de Java"; // vamos abrir o arquivo para escrita arquivo = fopen("dados.txt", "w"); if(arquivo != NULL){ fputs(texto, arquivo); // conteúdo da variável fputs("\nTambém gosto de C++", arquivo); // um texto direto fclose(arquivo); } puts("Tentei escrever no arquivo. Veja se funcionou."); puts("\n\n"); system("PAUSE"); return 0; } |
Link para compartilhar na Internet ou com seus amigos: |
C ::: Fundamentos da Linguagem ::: Estruturas de Controle |
Apostila C para iniciantes - Como usar o laço for em CQuantidade de visualizações: 38689 vezes |
O laço for é usado quando queremos executar um bloco de instruções um determinado número de vezes. Este laço é composto de três partes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- for(inicialização; teste; incremento/decremento){ bloco de instruções } Na parte inicialização nós definimos o valor inicial da variável de controle. Na parte teste nós usamos o valor da variável de controle para testar a continuidade ou interrupção do laço. Finalmente, na parte incremento/decremento nós alteramos o valor da variável de controle para cima ou para baixo. Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int main(int argc, char *argv[]) { int i; for(i = 1; i <= 10; i++){ printf("%d ", i); } printf("\n\n"); system("PAUSE"); return 0; } O incremento/decremento da variável de controle não precisa ser necessariamente em 1. Podemos usar qualquer expressão. Veja um trecho de código que exibe os números pares de 0 à 10: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int main(int argc, char *argv[]) { int i; for(i = 0; i <= 10; i += 2){ printf("%d ", i); } printf("\n\n"); system("PAUSE"); return 0; } Observe que "i += 2" é o mesmo que "i = i + 2". Com exceção da parte de testes, podemos inserir múltiplas expressões nas demais partes de um laço for. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i, x; for(i = 0, x = 2; i <= 10; printf("%d ", i * x), i++); printf("\n\n"); system("PAUSE"); return 0; } Este último código é um pouco exótico, mas muito fácil de ser encontrado por aí. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9Quantidade de visualizações: 9939 vezes |
Em algumas situações precisamos verificar se uma string contém apenas dígitos de 0 a 9, ou seja, é um valor numérico inteiro válido. Para isso podemos usar a função personalizada em C que mostro nesta dica. Veja que o segredo é passar todos os caracteres individualmente para a função isdigit(). Veja o código:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> // função personalizada que permite verificar se uma // string contém apenas dígitos de 0 a 9 int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito. Se não // for nós marcamos res como 0 e retornamos while(*str){ if(!isdigit(*str)){ res = 0; break; } // vamos passar para o próximo caractere str++; } return res; } int main(int argc, char *argv[]){ char valor[20]; // vamos guardar o valor digitado aqui // vamos ler o valor informado pelo usuário printf("Digite qualquer coisa e tecle ENTER: "); gets(valor); // vamos verificar se o usuário informou uma string // que contém apenas dígitos de 0 a 9 if(is_numeric(valor)) printf("Voce informou uma string numerica"); else printf("Voce NAO informou uma string numerica"); puts("\n\n"); system("PAUSE"); return 0; } E, antes que perguntem como é possível verificar se a string contém um valor fracionário válido, a seguinte alteração pode ser feita: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- int is_numeric(const char *str){ int res = 1; // passou no teste // vamos percorrer todos os caracteres da string // e testar se cada um é um dígito ou uma vírgula. Se não // for nós marcamos res como 0 e retornamos while(*str){ if((!isdigit(*str)) and (*str != ',')){ res = 0; break; } // vamos passar para o próximo caractere str++; } return res; } |
C ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de Dados em C - Como inserir antes de um determinado nó em uma lista encadeada simples usando CQuantidade de visualizações: 1822 vezes |
Em algumas situações nós precisamos inserir o novo nó antes de um determinado nó na lista encadeada simples. Veja, por exemplo, uma lista com o seguintes valores: 45 | 3 | 98 | 47 Suponha que queremos inserir o valor 50 antes do 98, então o novo conteúdo da lista será: 45 | 3 | 50 | 98 | 47 Observe que neste exemplo eu tratei o caso de inserir antes do primeiro nó, ou seja, antes do 45, mas não tratei a lista vazia. Há também a questão do laço infinito caso o usuário queira inserir antes de um nó não existente (não tratada). Veja o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó // função que permite exibir os valores de // todos os nós da lista void exibir(struct No *n){ if(n != NULL){ do{ printf("%d\n", n->valor); n = n->proximo; }while(n != NULL); } else printf("A lista esta vazia\n\n"); } // função que permite inserir um novo nó // antes de um determinado valor struct No *inserir_antes_valor(struct No *n, int v, int v_antes){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // guarda o nó antes do valor que procuramos struct No *anterior = NULL; struct No *temp = n; // aponta para o início da lista // enquanto for diferente do valor que estamos procurando while(temp->valor != v_antes){ anterior = temp; // anterior recebe temp // e temp recebe o seu próximo temp = temp->proximo; } // ATENÇÃO: não estamos tratando a condição // de lista vazia. Para isso veja minha dica // sobre como inserior no início da lista // devemos inserior no início da lista? if(anterior == NULL){ // o próximo do novo nó é o início da lista novo->proximo = n; n = novo; // início da lista é o novo nó } else{ // o proximo do anterior é o novo nó anterior->proximo = novo; // e o próximo do novo nó é temp novo->proximo = temp; } return n; } // função que permite inserir nós no // final da lista. // veja que a função recebe o valor a ser // armazenado em cada nó e um ponteiro para o // início da lista. A função retorna um // ponteiro para o início da lista struct No *inserir_final(struct No *n, int v){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // verifica se a lista está vazia if(n == NULL){ // é o primeiro nó...não deve apontar para // lugar nenhum novo->proximo = NULL; return novo; // vamos retornar o novo nó como sendo o início da lista } else{ // não está vazia....vamos inserir o nó no final // o primeiro passo é chegarmos ao final da lista struct No *temp = n; // vamos obter uma referência ao primeiro nó // vamos varrer a lista até chegarmos ao último nó while(temp->proximo != NULL){ temp = temp->proximo; } // na saída do laço temp aponta para o último nó da lista // novo será o último nó da lista...o campo próximo dele deve // apontar para NULL novo->proximo = NULL; // vamos fazer o último nó apontar para o nó recém-criado temp->proximo = novo; return n; // vamos retornar o início da lista intacto } } int main(int argc, char *argv[]) { // declara a lista struct No *inicio = NULL; // vamos inserir quatro valores no final // da lista inicio = inserir_final(inicio, 45); inicio = inserir_final(inicio, 3); inicio = inserir_final(inicio, 98); inicio = inserir_final(inicio, 47); // vamos exibir a lista puts("Valores atuais:\n"); exibir(inicio); // vamos inserir o valor 50 antes do 98 inicio = inserir_antes_valor(inicio, 50, 98); // vamos exibir a lista novamente puts("\nValores agora:\n"); exibir(inicio); puts("\n\n"); system("pause"); return 0; } |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares intermediários O projeto estrutural é conduzido por várias normas, sendo uma delas a NBR 6118 (projetos de estrutura de concreto), que define prescrições a serem obedecidas durante as etapas de dimensionamento e detalhamento de pilares com o intuito de considerar diversos fatores com influência direta nessas etapas de projeto e execução. Nos pilares, a armadura mínima é necessária para absorver esforços de flexão não considerados no dimensionamento que podem surgir na sua vida útil. No projeto das estruturas de um hotel feito de concreto armado, foram dimensionados pilares intermediários de seção retangular 30 x 30cm, com aço CA-50, para suportar uma carga vertical de cálculo de 800kN. Como parte do dimensionamento, deve-se verificar a área mínima de armadura longitudinal, cujo valor é: A) 3,6cm2. B) 2,76cm2. C) 5cm2. D) 4,2cm2. E) 2,74cm2. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Locação da obra Quais equipamentos são considerados de grande importância para a locação de uma obra? A) Colher de pedreiro, óculos de proteção, protetor auricular e luvas. B) Trena de plástico, capacete, cimento e calculadora digital. C) Colher de pedreiro, trena de plástico e régua metálica. D) Régua metálica, teodolito e trena de plástico. E) Teodolito, nível de mangueira, trena metálica, linha de náilon e prumo. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Dimensionamento de pilares de extremidade É importante detalhar as armaduras longitudinais e transversais de um pilar de extremidade durante a concretagem dessas estruturas, evitando futuras patologias. Para isso, é importante que o projetista atenda aos requisitos normativos desse detalhamento. Sobre o detalhamento de armaduras de pilares de extremidade, assinale a alternativa correta. A) O máximo espaçamento permitido entre as barras longitudinais corresponde a 500mm. B) O espaçamento mínimo permitido entre as barras transversais corresponde a 5mm. C) O diâmetro da armadura transversal deve ser maior ou igual a 5mm ou 1/4 do diâmetro da barra longitudinal. D) O diâmetro máximo da barra longitudinal corresponde a 12,5mm e a 1/8 da barra transversal. E) Para armaduras de aço CA-50, o espaçamento vertical corresponde a 25 vezes o diâmetro da barra transversal. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
Como é chamada a área de relevo mais elevado entre cursos de água contíguos e que serve para delimitação das bacias hidrográficas? A) Vale fluvial. B) Colúvio. C) Interflúvio. D) Planalto. E) Planície pluvial. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Fases de uma obra A camada de argamassa executada sobre uma base, que pode ser a parte de baixo de uma laje de piso pré-fabricada ou uma parede, é denominada: A) Acabamento. B) Contrapiso. C) Fundação. D) Pavimento. E) Concreto. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |