ptrci Posted November 10, 2007 at 04:54 PM Report Share #146584 Posted November 10, 2007 at 04:54 PM Ola a todos, Estou a tentar converter string para char já experimentei usar código dos post aqui do fórum mas devo estar a fazer alguma coisa mal, ou o visual studio 2005 não gosta de mim. 😛 Estou a fazer um menu usando o switch, mas queria que o programa aceita-se tudo o que introduzia para não bloquear/estourar quando um utilizador carregar enter=Nullo ou letras e números. O código que estou a criar é este: { int min = 0 ,max = 0, tabuada = 0, length = 1, p =1; char *s[100], *a; while (p != 0) { // Menu menu(); gets(s); strcpy(a,s, length); switch (*a) { case '1' : Link to comment Share on other sites More sharing options...
TheDark Posted November 10, 2007 at 05:49 PM Report Share #146597 Posted November 10, 2007 at 05:49 PM Precisas de um crash course em chars, strings, arrays e apontadores. Não é o que vou tentar fazer aqui... 😄 Em C não existe o conceito de "string". O mais que nos conseguimos aproximar disso é com um array de caracteres. Um array de caracteres é declarado escrevendo por exemplo char s[100]; código com o qual será declarado um array com espaço para 99 caracteres + 1 caracter terminador. Podes aceder a qualquer caracter do array fazendo s[indice], em que indice pode ir de 0 ao número máximo de caracteres menos um. Ou seja, no exemplo anterior indice pode ser um inteiro entre 0 e 98. Se fizeres: - s[0] vais aceder ao 1º caracter da string; - s[98] vais aceder ao último caracter; - s[99] vais aceder ao caracter terminador; - se tentares aceder a um índice maior que 99 ou menor que 0 vais estar a aceder a espaço que não foi declarado para o array, o que trará inevitavelmente problemas. Passando para o teu código, com char *s[100] estás a declarar um array de apontadores para char, que não é o que queres. Depois tentas copiar uma string para um apontador que não tem espaço alocado, que também não é algo que queres fazer. Finalmente, no switch apenas tens que colocar s[0]. Provavelmente vais deparar-te com mais problemas no código, mas vês disso quando acontecer Desaparecido. Link to comment Share on other sites More sharing options...
ptrci Posted November 11, 2007 at 02:19 AM Author Report Share #146681 Posted November 11, 2007 at 02:19 AM Sim, funciona. ( é tão fácil já não fazia programas em c há muito tempo ). Agora só falta definir que apenas aceite apenas com 1 carácter + 1 carácter terminador. Vou tentar fazer com o lenght ou com if. Link to comment Share on other sites More sharing options...
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