UnKnowN Posted May 15, 2006 at 09:38 AM Report #27480 Posted May 15, 2006 at 09:38 AM Estou a dar os primeiros passos em C, hj lembrei-me disto lol 😛 O que é que se encontra mal neste code ? #include<stdio.h> main() { int a, char *b; a=1; b="Olá"; printf("%s és o %dº jogador", a, b); return 0; { Obrigado, Fikem Bem 😉
entering Posted May 15, 2006 at 10:16 AM Report #27484 Posted May 15, 2006 at 10:16 AM char *b?! no maximo char b isso apenas permite armazenar um caracter para armezanar um conjunto de caracteres (string) seria: char b[n]; ex: int a; char b[100]; para copiar uma string para b nao podes usar uma simples atribuiçao mas sim copiares caracter a caracter ou usar a funçao strcpy que faz isso strcpy(b,"Olá"); e tens que por um #include <string.h> ou como alternativa quando a declaras char a[]={".."}; algo deste genero nem o printf esta correcto! seria algo do genero: printf("%s és o %dº jogador", b, a); %s - string %d ou %i - inteiro argumentos separados por vírgulas "O que é que se encontra mal neste code ?" A pergunta deveria ser o que se encontra bem neste code?!
untouchables Posted May 15, 2006 at 11:44 AM Report #27495 Posted May 15, 2006 at 11:44 AM acho que so falta dizer que no fim abres chavetas, mas isso ta mal. tens de as fechar 🙂
UnKnowN Posted May 15, 2006 at 11:53 AM Author Report #27496 Posted May 15, 2006 at 11:53 AM char *b?! no maximo char b isso apenas permite armazenar um caracter para armezanar um conjunto de caracteres (string) seria: char b[n]; ex: int a; char b[100]; para copiar uma string para b nao podes usar uma simples atribuiçao mas sim copiares caracter a caracter ou usar a funçao strcpy que faz isso strcpy(b,"Olá"); e tens que por um #include <string.h> ou como alternativa quando a declaras char a[]={".."}; algo deste genero nem o printf esta correcto! seria algo do genero: printf("%s és o %dº jogador", b, a); %s - string %d ou %i - inteiro argumentos separados por vírgulas "O que é que se encontra mal neste code ?" A pergunta deveria ser o que se encontra bem neste code?! Obrigado pela explicação como disse comecei hj de manha ... acho que so falta dizer que no fim abres chavetas, mas isso ta mal. tens de as fechar 🙂 ya isso foi 1 erro Lamme :|
UnKnowN Posted May 15, 2006 at 12:06 PM Author Report #27498 Posted May 15, 2006 at 12:06 PM Como nao percebi uma data de coisas que o entering disse tentei por mim, com o que sei, fazer o projecto... ao compilar (usando Dev-C++) nao deu erro mas ao tentar executar dá erro, um daqueles erros chatos a perguntar se eu quero enviar ou não relatório... o code é este : #include <string.h> #include <stdio.h> main() { int a=1; char* b="Ola"; printf("%s es o %dº jogador", a, b); return 0; }
untouchables Posted May 15, 2006 at 12:41 PM Report #27502 Posted May 15, 2006 at 12:41 PM char b[4]; strcpy (b,"ola"); substitui isto pelo que tens em char* b="Ola";
UnKnowN Posted May 15, 2006 at 12:54 PM Author Report #27503 Posted May 15, 2006 at 12:54 PM char b[4]; strcpy (b,"ola"); substitui isto pelo que tens em char* b="Ola"; Pk [4] e nao [3] ? ola só tem 3 palvaras... :\ E o que é o strcpy ?
entering Posted May 15, 2006 at 01:47 PM Report #27515 Posted May 15, 2006 at 01:47 PM a funçao strcpy permite copiar uma string para outra char *strcpy (char *arg1, char *arg2) Copia a string arg2 para a arg1 Esta definida na biblioteca string.h Quanto ao facto de ser 4 e não 3 é porque em C uma string termina sempre em \0 Por exemplo a funçao strcpy seria algo deste genero: char *strcpy (char *arg1, char *arg2) { int cont; for (cont=0; arg2[cont]!='\0';++cont) arg1[cont]=arg2[cont]; arg1[cont]='\0'; return arg1; } Como ves é necessario uma posiçao para o \0 Ou seja sempre que pensas numa string tem que ter mais uma posiçao para o \0 ----------- Tu nao tens noçoes nenhumas do que é uma string foi deixar aqui uma definiçao geral: Em c as strings não são um tipo de dados básico, logo a única forma de representar strings é usando um conjuntos de caracteres isto é um vector (de caracteres). ---------- Quanto ao que tu queres fazer nao precisas de usar o strcpy, mas tens erros no code $ gcc -Wall teste2.c teste2.c:4: warning: return type defaults to `int' teste2.c: In function `main': teste2.c:7: warning: format argument is not a pointer (arg 2) teste2.c:7: warning: int format, pointer arg (arg 3) Para já estas a devolver um valor com o return no entanto antes do main nao tens o int! Não estas a usar nenhuma funçao de strings logo nao precisas da biblioteca string.h E tens o printf errado! printf("%s es o %dº jogador", a, b); a variavel a é um inteiro logo %d ou %i e nao %s de string code correcto: #include <stdio.h> int main(void) { int a=1; char* b="Ola"; printf("%s es o %dº jogador", b, a); return 0; }
UnKnowN Posted May 15, 2006 at 04:25 PM Author Report #27538 Posted May 15, 2006 at 04:25 PM Muito Obrigado pela explicação 🙂 Tu nao tens noçoes nenhumas do que é uma string foi deixar aqui uma definiçao geral: Em c as strings não são um tipo de dados básico, logo a única forma de representar strings é usando um conjuntos de caracteres isto é um vector (de caracteres). 1º Erraste, pk sim eu tenho noçoes do que são strings 2º Faz sentido o que escreveste aí 🙂 code correcto: #include <stdio.h> int main(void) { int a=1; char* b="Ola"; printf("%s es o %dº jogador", b, a); return 0; } Podes tu ou alguém explicar-me o que é o void ? E depois, então o que é o char* b, se é string pkek disseste que tinha de declarar um vector de caracteres ? Obrigado []
maiden Posted May 15, 2006 at 04:37 PM Report #27544 Posted May 15, 2006 at 04:37 PM Ao contrário de Pascal, onde tens um tipo de dados String predefinido, var nome:string em C tens de criar o tal vector de caracteres para escreveres texto. char nome[10] Este vector escreve um caracter em cada elemento e tem 10 elementos, ou seja, podes escrever 10 caracteres. O void (se o Inglês não me falha) significa vácuo,vazio. Neste caso, significa que a função não tem parâmetros (penso que é assim). Espero ter ajudado. Cumps,
UnKnowN Posted May 15, 2006 at 04:44 PM Author Report #27549 Posted May 15, 2006 at 04:44 PM Ao contrário de Pascal, onde tens um tipo de dados String predefinido, var nome:string em C tens de criar o tal vector de caracteres para escreveres texto. char nome[10] Este vector escreve um caracter em cada elemento e tem 10 elementos, ou seja, podes escrever 10 caracteres. O void (se o Inglês não me falha) significa vácuo,vazio. Neste caso, significa que a função não tem parâmetros (penso que é assim). Espero ter ajudado. Cumps, Mas o que quero então saber é pkek o entering usou a "função" char*
saramgsilva Posted May 17, 2006 at 03:14 PM Report #27848 Posted May 17, 2006 at 03:14 PM Estou a dar os primeiros passos em C, hj lembrei-me disto lol 😛 O que é que se encontra mal neste code ? #include<stdio.h> main() { int a, char *b; a=1; b="Ola"; printf("%s és o %dº jogador", a, b); return 0; } Obrigado, Fikem Bem 😉 bem andei a ler o que escreveram e que confusão aqui não vai... mas ja vi que o autor ja percebeu...mas vou deixar aqui o que achei ( +- ) disto... tens erro aqui: main() { (...) return 0; } como fazes return 0; deve ter int main , ou seja devias ter int main() { (...) return 0; } depois outro erro int a, mas sim int a; outro erro: printf("%s es o %d jogador", a , b); deves ter : printf("%s es o %d jogador", b, a); primeiro les a string, b aponta para o inicio de uma string ( notar que char* b; quer dizer que b é um ponteiro do tipo char e fazer char a[3]; a[0]='o', a[1]='l' , a [2]='a' é o mesmo que ter b=&a[0] ou ainda b=a .... b aponta para o endereço de memoria do 1 caracter da string e como 1 string tem as endereços de memorias seguido e termina com '\0'' o programa sabe quando temina a string apontada por b ) e segundo vai ler o digito.... atenção que não deves usar acentos, ª , º, .... porque depois aparecem caracteres estranhos.. o programa final sera: #include<stdio.h> int main() { int a; char *b; a=1; b="Ola"; printf("%s es o %d jogador\n", b,a); return 0; } www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
entering Posted May 17, 2006 at 04:29 PM Report #27862 Posted May 17, 2006 at 04:29 PM disse isso tudo, e não é uma questão de confusão esta lá tudo para quem quiser ler claro que nao faço a 'papinha' toda desta vez até fiz bastante citação code correcto: #include <stdio.h> int main(void) { int a=1; char* b="Ola"; printf("%s es o %dº jogador", b, a); return 0; } resulta! quanto ao teu code tofas: alem do mais usar o system("PAUSE"); é uma estupidez para nao falar que falta o stdlib.h que suporta a funçao system se tivesses num concurso de programaçao o code ja nao passava pois com a flag -Wall do gcc emite um warning
saramgsilva Posted May 17, 2006 at 05:02 PM Report #27877 Posted May 17, 2006 at 05:02 PM quanto ao teu code tofas: alem do mais usar o system("PAUSE"); é uma estupidez para nao falar que falta o stdlib.h que suporta a funçao system se tivesses num concurso de programaçao o code ja nao passava pois com a flag -Wall do gcc emite um warning nao era para colocar isso.... esqueci-me :dontgetit: ja modifiquei... 😛 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
UnKnowN Posted May 17, 2006 at 08:48 PM Author Report #27936 Posted May 17, 2006 at 08:48 PM Obrigado, o C foi mais para ver como era.., e nao consegui ver bem como era ... inda estava numa fase de escolhas e acabei por optar pelo Python 👍 É facil e de simples uso para terem 1 noçao da facilidade deixo aki 1 code com o objectivo de impressão de nºs pares de 1 a 100 o code é este: >>> for i in range(1,101): if i % 2 == 0: print i
TheDark Posted May 18, 2006 at 12:59 AM Report #27971 Posted May 18, 2006 at 12:59 AM Em que é que isso é mais fácil que for (i=1; i<101; ++i) if (i%2==0) printf("%d", i); Isto pra não falar em c++, onde não é preciso formatação esquisita. Conhecendo minimamente a linguagem, tudo se faz. Onde é preciso velocidade, o python morre. Desaparecido.
saramgsilva Posted May 18, 2006 at 10:23 AM Report #28021 Posted May 18, 2006 at 10:23 AM Em que é que isso é mais fácil que for (i=1; i<101; ++i) if (i%2==0) printf("%d", i); Isto pra não falar em c++, onde não é preciso formatação esquisita. estava mesmo para dizer o mesmo que tu.... mas força!! 👍 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
UnKnowN Posted May 18, 2006 at 01:02 PM Author Report #28044 Posted May 18, 2006 at 01:02 PM Em que é que isso é mais fácil que for (i=1; i<101; ++i) if (i%2==0) printf("%d", i); Isto pra não falar em c++, onde não é preciso formatação esquisita. Conhecendo minimamente a linguagem, tudo se faz. Onde é preciso velocidade, o python morre. Morre ? Porquê ?
TheDark Posted May 19, 2006 at 12:27 AM Report #28202 Posted May 19, 2006 at 12:27 AM estava mesmo para dizer o mesmo que tu.... mas força!! 😉 Estou farto de ver toda a gente a curvar-se sob a superioridade do python. Está na altura de lhe fazer frente nos campos onde o c/c++ é forte! 😛 Ou seja: dimensão de código, velocidade, e ausência de interpretador. Pode ser um pouco mais complicado escrever um certo e muito específico tipo de algoritmos, mas a que custo? Morre ? Porquê ? Porque python é uma linguagem interpretada e c/c++ é compilada. Nunca uma linguagem interpretada pode ter aspirações a ser tão rápida como uma linguagem compilada. Isto está a ficar off-topic, mas ainda assim... tentei aprender um mínimo de python para fazer um teste de velocidades entre python e c/c++, mas não consegui. Também não me esforcei muito... :😄 Desaparecido.
UnKnowN Posted May 19, 2006 at 11:32 AM Author Report #28266 Posted May 19, 2006 at 11:32 AM Morre ? Porquê ? Porque python é uma linguagem interpretada e c/c++ é compilada. Nunca uma linguagem interpretada pode ter aspirações a ser tão rápida como uma linguagem compilada. Isto está a ficar off-topic, mas ainda assim... tentei aprender um mínimo de python para fazer um teste de velocidades entre python e c/c++, mas não consegui. Também não me esforcei muito... :😛 Ok Obrigado por me escalreceres ... inda tá para vir o teste 😉
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