E07: Teste seus conhecimentos sobre strings

E07.1  Escreva uma função que decida se duas strings de mesmo comprimento diferem em exatamente uma posição.

E07.2  O que há de errado com o seguinte fragmento de código?

char *a, *b;
a = "abacate";
b = "uva";
if (a < b) printf ("%s vem antes de %s no dicionário", a, b);
else       printf ("%s vem depois de %s no dicionário", a, b);

E07.3  Discuta as diferenças entre os três fragmentos de código a seguir:

char a[8], b[8];
strcpy (a, "abacate");
strcpy (b, "banana");
char *a, *b; 
a = malloc (8); strcpy (a, "abacate");
b = malloc (8); strcpy (b, "banana");
char *a, *b; 
a = "abacate";
b = "banana";

E07.4  Escreva uma função que receba uma string s e inteiros positivo ij e devolva uma string com o mesmo conteúdo que o segmento s[i..j].  Escreva duas versões: na primeira, sua função não deve alocar novo espaço e pode alterar a string s que recebeu; na segunda, sua função deve devolver uma cópia do segmento s[i..j] e não pode alterar a string s que recebeu.

E07.5  Escreva uma função que receba um inteiro positivo n e devolva a string de 0s e 1s que represente n em notação binária. Por exemplo, o inteiro 123 deve ser convertido em "1111011".

E07.6  Escreva uma função que receba uma string de 0s e 1s, interprete essa string como um número natural em notação binária e devolva o valor desse número. (Se a string for longa demais, descarte os últimos dígitos.)  Por exemplo, a string "1111011" deve ser convertida no inteiro 123.