Olá,
Veja o primeiro exercício (funciona):
#include <stdio.h>
int main (void)
{
char s[] = "teste de string para ponteiros";
char *p = NULL;
p = s+9;
while (*p != '\0' && *p != ' ')
{
printf("%c",*p);
p++;
}
puts("");
return 0;
}
Agora veja a confusão. Espero que os comentários
estejam claros:
#include <stdio.h>
#include <string.h>
int main (void)
{
char n_completo[1000];
char *p = NULL;
int i;
printf("digite um nome completo:" );
fgets(n_completo,1000,stdin);
__fpurge(stdin);
while(n_completo[i] != '\0')
{
if (n_completo[i] == ' ')
{
++i;
// printf("%d\n",i);
// printf("%c\n",*(n_completo+i));
/* aqui não funciona */
/* p = n_completo + i;*/
break;
}
i++;
}
p = n_completo + i;
printf("tam p: %d\n",strlen(p));
// aqui p++ funciona
printf("%c",*p);
p++;
printf("%c",*p);
p++;
printf("%c",*p);
p--;
p--;
puts("");
i=0;
/* por que não p++ aqui ?
* atenção com linha a mais */
while(*(p+i) != '\0' && *(p+i) != ' ')
//while(*p != '\0' && *p != ' ')
{
printf("%c",*(p+i));
i++;
//printf("%c",*p);
//p++;
}
puts("");
return 0;
}
Nesse segundo exercício a operação com ponteiro
não está funcionando dentro do loop. A primeira
tentativa de atribuir ao ponteiro um endereço na
string também não funciona. Acho que não estou
vendo algo que deve ser claro. O programa está uma
bagunça.
Alguém consegue ver ?
abraço,
Herbert
Veja o primeiro exercício (funciona):
#include <stdio.h>
int main (void)
{
char s[] = "teste de string para ponteiros";
char *p = NULL;
p = s+9;
while (*p != '\0' && *p != ' ')
{
printf("%c",*p);
p++;
}
puts("");
return 0;
}
Agora veja a confusão. Espero que os comentários
estejam claros:
#include <stdio.h>
#include <string.h>
int main (void)
{
char n_completo[1000];
char *p = NULL;
int i;
printf("digite um nome completo:" );
fgets(n_completo,1000,stdin);
__fpurge(stdin);
while(n_completo[i] != '\0')
{
if (n_completo[i] == ' ')
{
++i;
// printf("%d\n",i);
// printf("%c\n",*(n_completo+i));
/* aqui não funciona */
/* p = n_completo + i;*/
break;
}
i++;
}
p = n_completo + i;
printf("tam p: %d\n",strlen(p));
// aqui p++ funciona
printf("%c",*p);
p++;
printf("%c",*p);
p++;
printf("%c",*p);
p--;
p--;
puts("");
i=0;
/* por que não p++ aqui ?
* atenção com linha a mais */
while(*(p+i) != '\0' && *(p+i) != ' ')
//while(*p != '\0' && *p != ' ')
{
printf("%c",*(p+i));
i++;
//printf("%c",*p);
//p++;
}
puts("");
return 0;
}
Nesse segundo exercício a operação com ponteiro
não está funcionando dentro do loop. A primeira
tentativa de atribuir ao ponteiro um endereço na
string também não funciona. Acho que não estou
vendo algo que deve ser claro. O programa está uma
bagunça.
Alguém consegue ver ?
abraço,
Herbert