Ir ao conteúdo
  • Cadastre-se

C string de arquivos em C


Posts recomendados

Como posso fazer para o fopen abrir um nome de arquivo variável ou como fazer a string do nome ser variável? O meu programa deve solicitar ao usuário um número e então meu programa deve abrir o arquivo com esse numero correspondente porém nao sei fazer, sei que posso usar if para testar de arquivo em arquivo qual arquivo será aberto pelo meu programa porém nao posso fazrer isso por que são muitos arquivos. Gostaria que meu programa fosse direto no arquivo selecionado pelo usuário, alguem pode me ajudar pf? sou novo em programacao

 

estou fazendo um programa de integração por quadratura gaussiana

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Gabriel Amâncio Hoerning    faça como @Asrety    disse , porém para que funcione certo precisa também acrescentar   o tipo de arquivo , então se for tipo txt , você precisa usar o strcat para concatenar esse tipo ao nome do arquivo pego no scanf  assim :

printf("\nNome do arquivo: ");
scanf("%s", arq);
strcat(arq,".txt");

 

Link para o comentário
Compartilhar em outros sites

Deu certo @devair1010 e @Asrety, minha unica duvida agora é tipo:

o usuario entra com o numero que deve ser correspondido a um arquivo, mas eu preciso usar esse numero que o usuario entra para algumas condicionais, porém num eu preciso de variavel char e outra de variavel int, entao estou tendo que solicitar 2x o numero do usuario. tem alguma forma de eu corrigir isso?

 

meu programa até agora:

 

include<stdio.h>
#include<stdlib.h>
#include<math.h>

float f(float x)
{
    return(pow(((6 * x) - 5), 0.5));

}

int main(void)
{
    float limInf, limSup, coefLinear, coefAngular, *A, *t, soma = 0, area;
    int n, i;
    FILE *arqOrdem;
    char nOrdem[50];

    //Introdução do Programa
    printf("Este programa resolve a integral da f(x) = (6x-5)^0.5 pelo metodo da Quadratura Gaussian. \n\n\n");

    //Entrada de dados
    printf("Entre com o limite inferior de integracao\n");
    scanf("%f", &limInf);
    printf("Entre com o limite superior de integracao\n");
    scanf("%f", &limSup);
    printf("Entre com o numero de pontos\n");
    scanf("%d", &n);
    printf("\nNome do arquivo: ");
    scanf("%s", nOrdem);
    strcat(arq,".txt");

    //Alocação de Memória
    A = malloc(n * sizeof(float));
    t = malloc(n * sizeof(float));

    //Correlação de A's e t's para o n definido
    arqOrdem = fopen(nOrdem, "r");
    for (i = 0; i <= n - 1; i++ ) {
        fscanf(arqOrdem, "%f", &t[i]);
        printf("\n%f\n",t[i]);
        fscanf(arqOrdem, "%f", &A[i]);
        printf("\n%f\n",A[i]);
    }
    fclose(arqOrdem);

    //Calculo do coeficiente linear e angular
    coefAngular = (limSup - limInf) / 2;
    coefLinear = (limInf + limSup) / 2;

    //Calculo da área
    for (i = 0; i <= n - 1; i++)
    soma = soma + (A[i] * coefAngular * f((coefAngular * t[i]) + coefLinear));

    //Conclusão do programa
    area = soma;
    printf("\nA area da funcao (6x-5)^0.5 para %d pontos e A = %f\n", n, area);

    //Liberação de memória
    free(A);
    free(t);
    printf("\n");
    system("Pause");
    return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Gabriel Amâncio Hoerning     você pode converter a string em valor decimal , usando a função atoi  assim :

#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<math.h>
#include <string.h>

printf("Entre com o limite superior de integracao\n");
scanf("%f", &limSup);
printf("Entre com o numero de pontos\n");
scanf("%d", &n);
printf("\nNome do arquivo: ");
scanf("%s", nOrdem);
for(n=0;n<strlen(nOrdem);n++){
    if( ! isdigit(nOrdem[n])){
        strcpy(nOrdem,"11");/*se houver letras será transformadas em número 11 */
    }
}
int a = atoi( nOrdem ) ;
printf("valor de nOrdem %d",a);getch();
strcat(nOrdem,".txt");

//Alocação de Memória
    A = malloc(n * sizeof(float));
    t = malloc(n * sizeof(float));

//Correlação de A's e t's para o n definido

mas se for digitado algum caractere que não seja os dígitos de zero a 9 então dará erro e isso pode ser resolvido usando a função isdigit com ela você  verifica cada caractere da string se é digito ou não e toma as providencias de acordo .

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!