Ir ao conteúdo
  • Cadastre-se

Duvida Usar Scanf de outra função


Ir à solução Resolvido por isrnick,

Posts recomendados

Boa noite, gostaria de saber como usar o scanf de uma função secundaria na função principal, por exemplo

 

int funcao2(variavelsecundaria)

{

 scanf(%d, variavelsecundaria);

}

int main()

{

 int variavelprimaria;

 funcao2(variavelprimaria);

 printf(%d, variavelprimaria);

}

 

grato

Link para o comentário
Compartilhar em outros sites

Ta faltando & (ecomercial) no scanf e se você quiser modificar a variável não apenas dentro da função você precisa usar ponteiro.

Realmente esqueci o & mas esse código foi so um exemplo o que eu quero fazer é um pouco mais complexo e envolve registro, você pode me dar um exemplo de aplicação de ponteiro para resolver o problema do código citado acima?

Link para o comentário
Compartilhar em outros sites

  • Solução

A declaração da função está errada, você precisa dizer o tipo de valor da variável que a função vai receber como entrada.

 

Você definiu a função como sendo do tipo int, portanto ela espera que você retorne um valor inteiro quando a função for finalizada. Então uma maneira seria fazer a função retornar a resposta do scanf. 

 

int funcao2(){    int var;    scanf("%d", &var);    return(var);}int main(){    int variavelprimaria;    variavelprimaria = funcao2();    printf("%d", variavelprimaria);    return(0);}
Note que a função não recebe nenhum valor de entrada nesse caso. E lembre-se que como main() é do tipo int também deve retornar algum valor, por isso tem o return(0) no final. (E você também esqueceu de colocar as aspas "" no %d nas funções scanf e prinf.)

 

 

Outra opção seria usar ponteiros:

void funcao2(int *variavelprimaria){    scanf("%d", variavelprimaria);}int main(){    int variavelprimaria;    funcao2(&variavelprimaria);    printf("%d", variavelprimaria);    return(0);}
Aqui a função é do tipo void, ou seja ela não retorna valor algum ao ser finalizada, e ela recebe como entrada um ponteiro de uma variável inteira, e então o scanf armazena o valor recebido na posição da memória indicada pelo ponteiro.

E no main a variável inteira é criada e a referência (= ponteiro) desta variável inteira é usada na função, assim quando a função fizer alterações no local da memória apontado por esta referência estará em efeito alterando diretamente o valor desta variável.

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

Se você quer criar um registro segue o código mastigado pra você =) . . . O código abaixo funciona tanto no windows 7 quanto no windows xp e versões da mesma linha  . . . E outra coisa, execute isso como administrador se você estiver usando windows 7, se não vai ter uma "Permission denied".
 

#include <windows.h>#include <winreg.h> int main(int argc,char *argv[]){    HKEY Chave;    BYTE path[] = "C:\\arquivo.exe";    RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &Chave);    RegSetValueExA(Chave, "arquivo.exe", 0, REG_SZ, path, sizeof(path));    RegCloseKey(Chave); }

OBS: Antes de brincar com winreg.h aconselho que você pegue bem o conceito de ponteiros e funções, se não você vai ter muita dor de cabeça pra lidar com o winreg.

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

Visitante
Este tópico está impedido de receber novas respostas.

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!