Passando um char por referencia

Galera não estou conseguindo atribuir o char por referencia.

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct ponto{
 int x, y;
 char nome[30];
};
void atribuiSemSeta(struct ponto *p){
 printf("Digite X: ");
 scanf("%d",&(*p).x);
 //(*p).x = 10;
 printf("Digite Y: ");
 scanf("%d",&(*p).y);
 //(*p).y = 20;
 printf("Digite um nome:");
 gets(p->nome);
 //strcpy(p->nome,"Israel");
 printf("\n");
 printf("Ponto referencia SEM seta\nx: %d\ny: %d\nNome: %s\n", (*p).x, (*p).y, p->nome);
 getchar();
}
void atribuiComSeta(struct ponto *p){
 p->x = 10;
 p->y = 20;
 printf("Ponto referencia COM seta\nx: %d\ny: %d\n", p->x, p->y);
}
int main(){
struct ponto p1;
atribuiSemSeta(&p1);
//atribuiComSeta(&p1);

}

Como fazer?

o seu problema parece ser misturar gets ( que é uma forma insegura do fgets ) com scanf

http://c-faq.com/stdio/scanfprobs.html

use scanf em tudo ou gets/fgets em tudo. eu sempre tive problemas nao triviais por conta de ler um \n perdido

1 curtida