~~Exercise.#~~ int main(int argc, char *argv[]){ return 0; } To compile, one may use any of: * ''cc prog.c -o prog'' * ''gcc   --std=c17 -Wall --pedantic -g -O2 x.c -o x'' * ''clang --std=c17 -Wall --pedantic -g -O2 x.c -o x'' ~~Exercise.#~~ #include int main(int argc, char *argv[]){ printf("Hello.\n"); return 0; } #include int main(int argc, char *argv[]){ fprintf(stdout, "Hello.\n"); return 0; } #include int main(int argc, char *argv[]){ write(STDOUT_FILENO, "Hello.\n", 7); return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ write(STDOUT_FILENO, argv[1], strlen(argv[1])); write(STDOUT_FILENO, "\n", 1); return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ write(STDOUT_FILENO, argv[1]+3, strlen(argv[1])-3); write(STDOUT_FILENO, "\n", 1); return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ for(int i = 0; i < argc; ++i){ write(STDOUT_FILENO, argv[i], strlen(argv[i])); write(STDOUT_FILENO, "\n", 1); } return 0; } or, knowing that the argument array has a [[https://en.wikipedia.org/wiki/Sentinel_value|sentinel]]: #include #include int main(int argc, char *argv[]){ do { write(STDOUT_FILENO, *argv, strlen(*argv)); write(STDOUT_FILENO, "\n", 1); } while(*++argv); return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ char buffer[256]; strncpy(buffer, argv[1], 254); buffer[254] = 0; strcat(buffer, "\n"); write(STDOUT_FILENO, buffer, strlen(buffer)); return 0; } ~~Exercise.#~~ #include #include #include int main(int argc, char *argv[]){ size_t length = strlen(argv[1]); char *buffer = (char*) malloc(length+1); memcpy(buffer, argv[1], length); buffer[length]='\n'; write(STDOUT_FILENO, buffer, strlen(buffer)); free(buffer); return 0; } ~~Exercise.#~~ #include #include #include #include int main(int argc, char *argv[]){ size_t length = strlen(argv[1]); char *buffer = (char*) malloc(length+1); for(int i = 0; i < length; ++i) buffer[i] = toupper(argv[1][i]); buffer[length]='\n'; write(STDOUT_FILENO, buffer, length+1); free(buffer); return 0; } ~~Exercise.#~~ #include #include #include int main(int argc, char *argv[]){ char buffer[256]; scanf("%254[^\n]", buffer); strcat(buffer, "\n"); write(STDOUT_FILENO, buffer, strlen(buffer)); return 0; } #include #include #include int main(int argc, char *argv[]){ char buffer[256]; fscanf(stdin, "%254[^\n]", buffer); strcat(buffer, "\n"); write(STDOUT_FILENO, buffer, strlen(buffer)); return 0; } #include int main(int argc, char *argv[]){ char buffer[256]; int length = read(STDIN_FILENO, buffer, 256); write(STDOUT_FILENO, buffer, length); return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ char buffer[256]; while(1){ int length = read(STDIN_FILENO, buffer, 256); if(length == -1){ perror(NULL); return 1; } if(length == 0) break; write(STDOUT_FILENO, buffer, length); } return 0; } ~~Exercise.#~~ #include #include int readFile(){ char buffer[256]; while(1){ int length = read(STDIN_FILENO, buffer, 256); if(length == -1){ perror(NULL); return 1; } if(length == 0) return 0; write(STDOUT_FILENO, buffer, length); } } int main(int argc, char *argv[]){ if(readFile()) return -1; lseek(STDIN_FILENO, 0, SEEK_SET); if(readFile()) return -1; return 0; } ~~Exercise.#~~ #include #include int main(int argc, char *argv[]){ char buffer[256]; while(1){ int length = read(4, buffer, 256); if(length == -1){ perror(NULL); return 1; } if(length == 0) break; write(STDOUT_FILENO, buffer, length); } return 0; } ~~META: language = en ~~