rickfelix Posted April 28, 2009 at 09:34 AM Report #259653 Posted April 28, 2009 at 09:34 AM Boas, Estou com um problema a passar uma string como argumento. tenho dois ficheiros, um chamado biblio.h e outro teste.c /* biblio.h */ #include <stdio.h> extern testestring(char string1[], char *string2){ //para o caso só interessa o string1[] int i=1; for(i=0; i < strlen(string1); i++){ printf("na posicao %d esta %s\n", i, &string1[i]) //apenas para mostrar o que está em cada posição do array da string } } teste.c #include "biblio.h" main(){ testestring("xpto", "yada"); } O problema é que quando no biblio.h quando imprime em vez de me mostrar: x na posição 0 p na posição 1 t na posição 2 o na posição 3 o print feito mostra: xpto na posição 0 pto na posição 1 to na posição 2 o na posição 3 Alguém me consegue dizer onde estou a errar no código? ? Desde já obrigado! 😛
TheDark Posted April 28, 2009 at 10:07 AM Report #259666 Posted April 28, 2009 at 10:07 AM printf("na posicao %d esta %s\n", i, &string1[i]); %s mostra uma cadeia de caracteres, a partir do apontador que passas como parâmetro, até encontrar o caracter nulo ('\0'). Como estás a passar o endereço do caracter com índice i, ele escreve toda a string a partir dessa posição. O que tu queres mesmo é mostrar um caracter (%c), e passá-lo por valor (string1[ i ]) em vez do seu endereço (&string1[ i ]). Desaparecido.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now