ótima pergunta cara. C não controla se você está tentando acessar um endereço de memória que exceda os limites de um vetor. De acordo com o padrão da Linguagem C o comportamento de tal programa é indefinido. você poderia sim receber um erro no programa caso o programa tentasse acessar um espaço de memória que o programa não tenha permissão.. mas como dito o comportamento é indefinido.
Eu não precisei no gcc colocar caractere nulo (\0), ocultamente em cinco exemplos de vetores automaticamente deu \0 e se formar uma frase, esse \0 serve como uma luva caso use letra por letras {'A'}.
Queria dar-lhe os parabéns pelas suas aulas. Uma duvida : int main() char ola[1]; int tam; printf("Introduza o nome: "); scanf("%s", ola); printf("%c",ola[7]); return 0; No codigo acima o a string tem o tamanho 1, logo não devia imprimir o caracter na posição 7 certo?
Professor, estou usando um compilador online (GDB), fiz os dois primeiros exemplos de declaração mas não ocorreu o erro do caractere nulo. #include int main() { char nome[]={'R','o','d','r','i','g','o',}; printf("%s ", nome); return 0; } Imprime "Rodrigo" normalmente.
Oi professor, em 10:20 vc afirma que o caractere \0 é considerado como um único caractere, mas o sistema de C não começa de 0, 1, 2, 3,...? Não seria o caractere \0 considerado como 2 caracteres? B R A S I L \ 0 0 1 2 3 4 5 6 7 MUITO BOA SUAS AULAS, vlw
+lucas cardoso grillo Um vetor[7] significa que ele vai do vetor[0] ao vetor [6], já que a contagem começa a partir do 0; char palavra[7] = {"Brasil\0"}; palavra[0] = 'B'; - 1º termo; palavra[1] = 'r'; - 2º termo; palavra[2] = 'a'; - 3º termo; palavra[3] = 's'; - 4º termo; palavra[4] = 'i'; - 5º termo; palavra[5] = 'l'; - 6º termo; palavra[6] = '\0'; - 7º termo; Quando você menciona: "B R A S I L \ 0 0 1 2 3 4 5 6 7" está dizendo algo errado. Note que "0, 1, 2, 3, 4, 5, 6, 7" totalizam 8 termos. Logo, o correto seria de 0 a 6, com o \0 sendo o caractere de posição 7 do vetor, o qual é vetor[6]. Eu sei que faz um ano esse comentário e provavelmente você já entendeu, mas é para tirar dúvidas caso alguém tenha a mesma aqui.
Muito show suas aulas, pena que não tem c++ aqui no seu canal. Uma dúvida: A aula 98, que é a última, ela termina todos os assuntos de c? Ou seja, essas 98 aulas é um tutorial completo de c?
Professor tenho uma duvida e gostaria de sua ajuda Seguindo seu exemplo: char palavra[ ] = "Brasil"; printf("%s ", palavra); agora neste momento gostaria de mudar o texto da String para "Alemanha" mais usando o vetor de caractere palavra. Como eu faço isso? palavra = "Alemanha"; ? ou palavra [ ] = "Alemanha"; Poderia me ajudar? Obrigado
char selecionarCasa [4] [ ] = {"GrifinoriaCode", "CorvinalCookie", "SonserinaGiris", "Lufa-LufaProdigy"}; erro, por que? Mas quando eu ponho 20 no segundo vetor ele da certo, só que acho que quando ele for ler (printf) ele vai aparecer os lixos nas demais posições!
podemos atribuir o conteúdo da string quando declaramos ela. Mas não intendo porque não dá certo quando eu tento alterar a string do vetor: EX char vetor[ ]; **mais codigos** vetor= "novo string"
Tem um erro cara, você deve falar qual o número de caracteres no char vetor[]; só não precisa colocar quando está indicado oq contém na variável logo após criá-la, o professor fala disso na segunda aula de strings, depois da uma olhada q vc entenderá melhor. Caso não tenha entendido, um exemplo: char vetor[] = {'a','b'}; assim pode pois o compilador vai ver quantos caracteres há. no seu caso não, deveria ser: char vetor[*numero de caracteres da sua string*]
Vou dizer o que eu entendi estudando aqui: O "caractere" nulo, é formado por dois caracteres. Tal qual o de quebra de linha ( ), o de tabulação (\t), etc. Se BRASIL tem 6 caracteres, ele está contido em um vetor de CINCO caracteres que vai de 0 a 5 (a primeira posição é 0, lembram?). Se ele possui SETE, é por que reserva DOIS caracteres para criar o tal "caractere" nulo.
+Samuel C. Um vetor[7] significa que ele vai do vetor[0] ao vetor [6], já que a contagem começa a partir do 0; char palavra[7] = {"Brasil\0"}; palavra[0] = 'B'; - 1º termo; palavra[1] = 'r'; - 2º termo; palavra[2] = 'a'; - 3º termo; palavra[3] = 's'; - 4º termo; palavra[4] = 'i'; - 5º termo; palavra[5] = 'l'; - 6º termo; palavra[6] = '\0'; - 7º termo; Quando você diz "Se BRASIL tem 6 caracteres, ele está contido em um vetor de CINCO caracteres que vai de 0 a 5 (a primeira posição é 0, lembram?)" , está errado dizer que Brasil está num vetor de cinco caracteres. Ele está num vetor de seis caracteres, porém começando do 0 e acabando no 5 (que totaliza 6);
hoje vc deve ser um deus da programação
se sobreviveu ao covid é claro
Muito bom, estou aprendendo demais obrigado !
opa.. valeu cara.. vou fazer algumas eles com o code blocks também.
Minha professora redomendou o seu canal para aprendermos C, hahaha. Ótimo canal, já acompanhava antes dela passar pra turma e você é brabo
estou aprendendo muito com o seu canal
Gostei muito de seus vídeos.Sou aluna de ADS em Picos.
se eu tivesse achado esse canal antes não teria perdido nota na P1 ,agora é recuperar na P2 e na P3
Você manja mesmo, parabéns! É mais fácil aprender com você do que com o meu professor de Linguagem C.
ótima pergunta cara.
C não controla se você está tentando acessar um endereço de memória que exceda os limites de um vetor.
De acordo com o padrão da Linguagem C o comportamento de tal programa é indefinido.
você poderia sim receber um erro no programa caso o programa tentasse acessar um espaço de memória que o programa não tenha permissão.. mas como dito o comportamento é indefinido.
curti e gravo todas as aulas este material é muito importante! Vai brasil!! kkkk
suas aulas sao muito boas e bem esplicada, tente usar o code blocks em suas aulas
muito boa a suas aulas
espero ser a ultima vez que vejo esse video!!!
oh Deus me ajuda a passar nessa matéria!!!!
e ai passou?
@@Gustavo-fd4st Passei!!!! Graças a Deus!!!!!🙌🙌🙌
para mim todas deu certo
otimo video
Eu não precisei no gcc colocar caractere nulo (\0), ocultamente em cinco exemplos de vetores automaticamente deu \0 e se formar uma frase, esse \0 serve como uma luva caso use letra por letras {'A'}.
Um jeito fácil pra ler string, frase, texto;
scanf("%[^
]", -nome da variável-);
Vai receber tudo, até espaços e só vai parar quando vc der ENTER.
Professor, por que não precisou de um ciclo "for" para printar todas as letras das opções?
Obrigado pela ajuda!!!
Queria dar-lhe os parabéns pelas suas aulas. Uma duvida :
int main()
char ola[1];
int tam;
printf("Introduza o nome: ");
scanf("%s", ola);
printf("%c",ola[7]);
return 0;
No codigo acima o a string tem o tamanho 1, logo não devia imprimir o caracter na posição 7 certo?
VocÊ é top!! obg!!
Muito bom!
;-;
Qual a diferença do gets para o getch mesmo?
gets (tring) -> para string.
getch (ar) -> para caracteres.
No meu, as duas primeiras funcionaram
Pq no endereço de memória no momento que vc compilou havia o caractete espaço lá, ou seja, vc deu sorte.
Professor, estou usando um compilador online (GDB), fiz os dois primeiros exemplos de declaração mas não ocorreu o erro do caractere nulo.
#include
int main() {
char nome[]={'R','o','d','r','i','g','o',};
printf("%s
", nome);
return 0;
}
Imprime "Rodrigo" normalmente.
Oi professor, em 10:20 vc afirma que o caractere \0 é considerado como um único caractere, mas o sistema de C não começa de 0, 1, 2, 3,...?
Não seria o caractere \0 considerado como 2 caracteres?
B R A S I L \ 0
0 1 2 3 4 5 6 7
MUITO BOA SUAS AULAS, vlw
Não.
Não! Vetores começam a parti do 0(zero). ^_-
+Rogerio Cruzz Justamente por isso.
+Leo cachaca Não? Explica ai por favor
+lucas cardoso grillo Um vetor[7] significa que ele vai do vetor[0] ao vetor [6], já que a contagem começa a partir do 0;
char palavra[7] = {"Brasil\0"};
palavra[0] = 'B'; - 1º termo;
palavra[1] = 'r'; - 2º termo;
palavra[2] = 'a'; - 3º termo;
palavra[3] = 's'; - 4º termo;
palavra[4] = 'i'; - 5º termo;
palavra[5] = 'l'; - 6º termo;
palavra[6] = '\0'; - 7º termo;
Quando você menciona:
"B R A S I L \ 0
0 1 2 3 4 5 6 7"
está dizendo algo errado. Note que "0, 1, 2, 3, 4, 5, 6, 7" totalizam 8 termos. Logo, o correto seria de 0 a 6, com o \0 sendo o caractere de posição 7 do vetor, o qual é vetor[6].
Eu sei que faz um ano esse comentário e provavelmente você já entendeu, mas é para tirar dúvidas caso alguém tenha a mesma aqui.
Muito show suas aulas, pena que não tem c++ aqui no seu canal.
Uma dúvida: A aula 98, que é a última, ela termina todos os assuntos de c? Ou seja, essas 98 aulas é um tutorial completo de c?
Não! ele parou na 98, e o curso dele e um "intermediário em C".
Professor tenho uma duvida e gostaria de sua ajuda
Seguindo seu exemplo:
char palavra[ ] = "Brasil";
printf("%s
", palavra);
agora neste momento gostaria de mudar o texto da String para "Alemanha" mais usando o vetor de caractere palavra.
Como eu faço isso?
palavra = "Alemanha"; ?
ou
palavra [ ] = "Alemanha";
Poderia me ajudar?
Obrigado
show !
char selecionarCasa [4] [ ] = {"GrifinoriaCode", "CorvinalCookie", "SonserinaGiris", "Lufa-LufaProdigy"}; erro, por que? Mas quando eu ponho 20 no segundo vetor ele da certo, só que acho que quando ele for ler (printf) ele vai aparecer os lixos nas demais posições!
aew!
mt bom
podemos atribuir o conteúdo da string quando declaramos ela.
Mas não intendo porque não dá certo quando eu tento alterar a string do vetor: EX
char vetor[ ];
**mais codigos**
vetor= "novo string"
Tem um erro cara, você deve falar qual o número de caracteres no char vetor[]; só não precisa colocar quando está indicado oq contém na variável logo após criá-la, o professor fala disso na segunda aula de strings, depois da uma olhada q vc entenderá melhor.
Caso não tenha entendido, um exemplo:
char vetor[] = {'a','b'};
assim pode pois o compilador vai ver quantos caracteres há.
no seu caso não, deveria ser: char vetor[*numero de caracteres da sua string*]
Todos os meus testes deram certo, não foi preciso colocar o cacatere nulo .Pq?
No seu caso não havia lixo de memória ou o lixo que havia era um espaço, então nao deu para percebê-lo
Empaquei nessa minha duvida pois aconteceu o mesmo cmg. Não avanço ate saber a explicação kk
Vou dizer o que eu entendi estudando aqui: O "caractere" nulo, é formado por dois caracteres. Tal qual o de quebra de linha (
), o de tabulação (\t), etc. Se BRASIL tem 6 caracteres, ele está contido em um vetor de CINCO caracteres que vai de 0 a 5 (a primeira posição é 0, lembram?). Se ele possui SETE, é por que reserva DOIS caracteres para criar o tal "caractere" nulo.
+Samuel C. Um vetor[7] significa que ele vai do vetor[0] ao vetor [6], já que a contagem começa a partir do 0;
char palavra[7] = {"Brasil\0"};
palavra[0] = 'B'; - 1º termo;
palavra[1] = 'r'; - 2º termo;
palavra[2] = 'a'; - 3º termo;
palavra[3] = 's'; - 4º termo;
palavra[4] = 'i'; - 5º termo;
palavra[5] = 'l'; - 6º termo;
palavra[6] = '\0'; - 7º termo;
Quando você diz "Se BRASIL tem 6 caracteres, ele está contido em um vetor de CINCO caracteres que vai de 0 a 5 (a primeira posição é 0, lembram?)" , está errado dizer que Brasil está num vetor de cinco caracteres. Ele está num vetor de seis caracteres, porém começando do 0 e acabando no 5 (que totaliza 6);
A representação durante a programação é com dois caracteres. Mas quando isso é processado ou armazenado em arquivo, é visto como um.
é só pra mim ou a aula dele ta com zoom?
Pessoal, como eu Fasso para armazena uma string informada pelo o usuário, e depois imprimi-la na tela?
pra mim só aparece na tela: (null) *nulo
aspas simples '-' apostofro é `
'-'
8:40 “Deu pau” kkkkk
Mt bom