diff options
author | Haidong Ji | 2022-04-15 15:51:30 -0500 |
---|---|---|
committer | Haidong Ji | 2022-04-15 15:51:30 -0500 |
commit | 442a49ad5a48d417345959b903ae6a6d32d55759 (patch) | |
tree | c7127bb497e5e439018b1915e0136eec2c9cb124 /29_outname |
Excellent fundamentals and displine training, many tools and techniques
exercises: gdb, emacs, valgrind, git
Diffstat (limited to '29_outname')
-rw-r--r-- | 29_outname/Makefile | 12 | ||||
-rw-r--r-- | 29_outname/README | 18 | ||||
-rw-r--r-- | 29_outname/grade.txt | 19 | ||||
-rw-r--r-- | 29_outname/outname.c | 11 | ||||
-rw-r--r-- | 29_outname/outname.h | 6 | ||||
-rw-r--r-- | 29_outname/outname_test.c | 18 |
6 files changed, 84 insertions, 0 deletions
diff --git a/29_outname/Makefile b/29_outname/Makefile new file mode 100644 index 0000000..7cdf5f1 --- /dev/null +++ b/29_outname/Makefile @@ -0,0 +1,12 @@ +CFLAGS=-Wall -Werror -std=gnu99 -pedantic -ggdb3 +OBJS=outname.o outname_test.o +PROGRAM=outname_test + +$(PROGRAM): $(OBJS) + gcc $(CFLAGS) -o $@ $(OBJS) + +%.o: %.c outname.h + gcc -c $(CFLAGS) $< + +clean: + rm -f $(OBJS) $(PROGRAM) *~ diff --git a/29_outname/README b/29_outname/README new file mode 100644 index 0000000..735972e --- /dev/null +++ b/29_outname/README @@ -0,0 +1,18 @@ +In a future assignment, you are going to write a program which reads +some input, does some manipulations, and produces output in another file. +Right now, you are going to write a function which will be useful to you +in that assignment, which takes the input filename, and produces the output +file name. The output file name should be the same as the input file name +with ".counts" on the end. So, for example, if the input filename (inputName) +is "input.txt", your function should return "input.txt.counts". + +Note that your function needs to use malloc to allocate memory to hold +the string that it will return as its answer. + +Your function should have the following signature: + + char * computeOutputFileName(const char * inputName) + +and you should write it in the outname.c file. +You can make and test with the main function found in outname_test.c. +As always, be sure your program valgrinds cleanly. diff --git a/29_outname/grade.txt b/29_outname/grade.txt new file mode 100644 index 0000000..12148a6 --- /dev/null +++ b/29_outname/grade.txt @@ -0,0 +1,19 @@ +Grading at Tue 14 Dec 2021 02:54:10 AM UTC +Attempting to compile: +################################################# +testcase1: +Your output is correct + - Valgrind was clean (no errors, no memory leaks) +valgrind was clean +################################################# +testcase2: +Your output is correct + - Valgrind was clean (no errors, no memory leaks) +valgrind was clean +################################################# +testcase3: +Your output is correct + - Valgrind was clean (no errors, no memory leaks) +valgrind was clean + +Overall Grade: A diff --git a/29_outname/outname.c b/29_outname/outname.c new file mode 100644 index 0000000..7cc4346 --- /dev/null +++ b/29_outname/outname.c @@ -0,0 +1,11 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "outname.h" + +char * computeOutputFileName(const char * inputName) { + char * outFileName = malloc((strlen(inputName) + 8) * sizeof(*outFileName)); + strcpy(outFileName, inputName); + strcat(outFileName, ".counts"); + return outFileName; +} diff --git a/29_outname/outname.h b/29_outname/outname.h new file mode 100644 index 0000000..acd1f03 --- /dev/null +++ b/29_outname/outname.h @@ -0,0 +1,6 @@ +#ifndef __OUTNAME_H__ +#define __OUTNAME_H__ + +char * computeOutputFileName(const char * inputName); + +#endif diff --git a/29_outname/outname_test.c b/29_outname/outname_test.c new file mode 100644 index 0000000..6a9493a --- /dev/null +++ b/29_outname/outname_test.c @@ -0,0 +1,18 @@ +#include "outname.h" +#include <stdio.h> +#include <stdlib.h> + + +#define NUM_TESTS 3 +int main(void) { + char * testNames[NUM_TESTS] = {"input.txt", + "anotherTestFileName.txt", + "somethingelse"}; + + for (int i = 0; i < NUM_TESTS; i++) { + char * outName = computeOutputFileName(testNames[i]); + printf("'%s' => '%s'\n", testNames[i], outName); + free(outName); + } + return EXIT_SUCCESS; +} |