Skip to content

Latest commit

 

History

History

0x06-pointers_arrays_strings

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
           0x06. C - More pointers, arrays and strings Task
  1. 0-strcat.c Task: Write a function that concatenates two strings.
  • Prototype: char *_strcat(char *dest, char *src);
  • This function appends the src string to the dest string, overwriting the terminating null byte (\0) at the end of dest, and then adds a terminating null byte
  • Returns a pointer to the resulting string dest
  1. 1-strncat.c Task: Write a function that concatenates two strings.
  • Prototype: char *_strncat(char *dest, char *src, int n);
  • The _strncat function is similar to the _strcat function, except that it will use at most n bytes from src; and src does not need to be null-terminated if it contains n or more bytes
  • Return a pointer to the resulting string dest
  1. 2-strncpy.c Task: Write a function that copies a string.
  • Prototype: char *_strncpy(char *dest, char *src, int n);
  • Your function should work exactly like strncpy
  1. 3-strcmp.c Task: Write a function that compares two strings.
  • Prototype: int _strcmp(char *s1, char *s2);
  • Your function should work exactly like strcmp
  1. 4-rev_array.c Task: Write a function that reverses the content of an array of integers.
  • Prototype: void reverse_array(int *a, int n);
  • Where n is the number of elements of the array
  1. 5-string_toupper.c Task: Write a function that changes all lowercase letters of a string to uppercase.
  • Prototype: char *string_toupper(char *);
  1. 6-cap_string.c Task: Write a function that capitalizes all words of a string.

Prototype: char *cap_string(char *); Separators of words: space, tabulation, new line, ,, ;, ., !, ?, ", (, ), {, and }

  1. 7-leet.c Task: Write a function that encodes a string into 1337.
  • Letters a and A should be replaced by 4
  • Letters e and E should be replaced by 3
  • Letters o and O should be replaced by 0
  • Letters t and T should be replaced by 7
  • Letters l and L should be replaced by 1
  • Prototype: char *leet(char *);
  • You can only use one if in your code
  • You can only use two loops in your code
  • You are not allowed to use switch
  • You are not allowed to use any ternary operation
  1. 100-rot13.c Task: Write a function that encodes a string using rot13.
  • Prototype: char *rot13(char *);
  • You can only use if statement once in your code
  • You can only use two loops in your code
  • You are not allowed to use switch
  • You are not allowed to use any ternary operation
  1. 101-print_number.c Task: Write a function that prints an integer.
  • Prototype: void print_number(int n);
  • You can only use _putchar function to print
  • You are not allowed to use long
  • You are not allowed to use arrays or pointers
  • You are not allowed to hard-code special values
  1. 102-magic.c Task: Add one line to this code, so that the program prints a[2] = 98, followed by a new line.
  • You are not allowed to use the variable a in your new line of code
  • You are not allowed to modify the variable p
  • You can only write one statement
  • You are not allowed to use ,
  • You are not allowed to code anything else than the line of expected line of code at the expected line
  • Your code should be written at line 19, before the ;
  • Do not remove anything from the initial code (not even the comments)
  • and don’t change anything but the line of code you are adding (don’t change the spaces to tabs!)
  • You are allowed to use the standard library
  1. 103-infinite_add.c Task: Write a function that adds two numbers.
  • Prototype: char *infinite_add(char *n1, char *n2, char *r, int size_r);
  • Where n1 and n2 are the two numbers
  • r is the buffer that the function will use to store the result
  • size_r is the buffer size
  • The function returns a pointer to the result
  • You can assume that you will always get positive numbers, or 0
  • You can assume that there will be only digits in the strings n1 and n2
  • n1 and n2 will never be empty
  • If the result can not be stored in r the function must return 0
  1. 104-print_buffer.c Task: Write a function that prints a buffer.
  • Prototype: void print_buffer(char *b, int size);
  • The function must print the content of size bytes of the buffer pointed by b
  • The output should print 10 bytes per line
  • Each line starts with the position of the first byte of the line in hexadecimal (8 chars), starting with 0
  • Each line shows the hexadecimal content (2 chars) of the buffer, 2 bytes at a time, separated by a space
  • Each line shows the content of the buffer. If the byte is a printable character, print the letter, if not, print .
  • Each line ends with a new line \n
  • If size is 0 or less, the output should be a new line only \n
  • You are allowed to use the standard library
  • The output should look like the following example, and formatted exactly the same way: