Engenharia de software
Por: Hugo.bassi • 4/4/2018 • 5.137 Palavras (21 Páginas) • 335 Visualizações
...
Código Fonte:
#include
void mystrcpy(char s[], char t[]) {
int i = 0;
while ((s[i] = t[i]) != '\0') {
i++;
}
}
int main() {
char str1[] = "abc";
char str2[] = "LinguagemC";
printf("str1 antes da copia = %s", str1);
printf("str2 antes da copia = %s", str2);
mystrcpy(str1, str2);
printf("str1 depois da copia = %s", str1);
printf("str2 depois da copia = %s", str2);
return 0;
}
Saídas e testes:
Entradas: str1 = “abc” ; str2 = “LinguagemC”.
Saídas:
[pic 5]
Conclusões:
Resultados conforme esperado.
Descrição:
- Escrever função void mystrcpy (char *s, char *t) que copia uma string t para s, usando ponteiros.
Solução:
Usar um laço while para copiar o conteúdo da segunda string para a primeira, até que o caracter copiado seja o caracter nulo.
Código Fonte:
#include
void mystrcpy(char *s, char *t) {
while(*s++ = *t++);
}
int main() {
char str1[] = "abc";
char str2[] = "LinguagemC";
printf("str1 antes da copia = %s", str1);
printf("str2 antes da copia = %s", str2);
mystrcpy(str1, str2);
printf("str1 depois da copia = %s", str1);
printf("str2 depois da copia = %s", str2);
return 0;
}
Saídas e testes:
Entradas: str1 = “abc” ; str2 = “LinguagemC”.
Saídas:
[pic 6]
Conclusões:
Resultados conforme esperado.
Descrição:
- Escrever função int mystrcmp (char s1[], char s2[]) que compara duas strings s1 e s2, usando vetores, e retorna: 0 se as strings forem iguais (lexicograficamente); positivo se s1 > s2; e negativo se s2 > s1. Exemplo: s1="abcde" e s2 = "bcde" => retorna negativo
Solução:
Usar um laço while para comparar o conteúdo das strings. Dentro do laço sempre é checado se uma o caracter é nulo e, caso seja, retorna zero. Quando for encontrada alguma diferença, retorna o caracter da string1 menos o caracter da string2.
Código Fonte:
#include
int mystrcmp(char s1[], char s2[]) {
int i = 0;
while(s1[i] == s2[i]) {
if (s1[i] == '\0') {
return 0;
}
i++;
}
return s1[i] - s2[i];
}
int main() {
char str1[] = "abcde";;
char str2[] = "bcde";;
char str3[] = "linguagemC";;
char str4[] = "abc";;
char str5[] = "abc";;
char str6[] = "abc";;
printf("Comparando %s com %s\n%d\n", str1, str2, mystrcmp(str1, str2));
printf("Comparando %s com %s\n%d\n", str3, str4, mystrcmp(str3, str4));
printf("Comparando %s com %s\n%d\n", str5, str6, mystrcmp(str5, str6));
return 0;
}
Saídas e testes:
Entradas: str1 = “abcde” ; str2 = “bcde”. Resultado: negativo.
str1 = “linguagemC” ; str2 = “abc”. Resultado: positivo.
str1 = “abc” ; str2 = “abc”. Resultado: zero.
Saídas:
[pic 7]
Conclusões:
Resultados conforme esperado.
Descrição:
- Escrever função int mystrcmp (char *s1, char *s2) que compara duas strings s1 e s2, usando ponteiros, e retorna: 0 se as strings forem iguais (lexicograficamente); positivo se s1 > s2; e negativo se s2 > s1. Exemplo: s1="abcde" e s2 = "bcde" => retorna negativo
Solução:
Usar um laço while para
...