*C Programming This exercise is to help you learn how to debug compiler warnings/errors and other common errors in your code. For each part labeled P(n), there is a warning/error/problem that goes with it. Write down what the issue was in the `Error:` section of each problem. Work on `segfault.c` along with your fixes and error comments. segfault.c file // P0 #include #include /* Error: */ void fib(int* A, int n); int main(int argc, char *argv[]) { int buf[10]; unsigned int i; char *str; char *printThisOne; char *word; int *integers; int foo; int *bar; char *someText; // P1 for (i = 0; i <= 10; ++i) { buf[i] = i; } for (i = 0; i <= 10; ++i) { printf("Index %s = %s\n", i, buf[i]); } /* Error: */ // P2 str = malloc(sizeof(char) * 10); strcpy(str, "Something is wrong"); printf("%s\n", printThisOne); /* Error: */ // P3 word = "Part 3"; *(word + 4) = '-'; printf("%s\n", word); /* Error: */ // P4 *(integers + 10) = 10; printf("Part 4: %d\n", *(integers + 10)); free(integers); /* Error: */ // P5 printf("Print this whole \0 line\n"); /* Error: */ // P6 x = 2147483647; printf("%d is positive\n", x); x += 1000000000; printf("%d is positive\n", x); /* Error: */ // P7 printf("Cleaning up memory from previous parts\n"); free(str); free(buf); /* Error: */ // P8 fib(foo, 7); printf("fib(7) = %d\n", foo); /* Error: */ // P9 bar = 0; *bar = 123; printf("bar = %d\n", *bar); /* Error: */ // P10 someText = malloc(10); strcpy(someText, "testing"); free(someText); printf("someText = %s\n", someText); /* Error: */ exit(0); } // fib calculates the nth fibonacci number and puts it in A. // There is nothing wrong with this function. void fib(int *A, int n) { int temp; if (n == 0 || n == 1) *A = 1; else { fib(A, n - 1); temp = *A; fib(A, n - 2); *A += temp; } }
*C
This exercise is to help you learn how to debug compiler warnings/errors and other common errors in your code. For each part labeled P(n), there is a warning/error/problem that goes with it. Write down what the issue was in the `Error:` section of each problem. Work on `segfault.c` along with your fixes and error comments.
segfault.c file
// P0
#include <stdio.h>
#include <stdlib.h>
/* Error:
*/
void fib(int* A, int n);
int
main(int argc, char *argv[]) {
int buf[10];
unsigned int i;
char *str;
char *printThisOne;
char *word;
int *integers;
int foo;
int *bar;
char *someText;
// P1
for (i = 0; i <= 10; ++i) {
buf[i] = i;
}
for (i = 0; i <= 10; ++i) {
printf("Index %s = %s\n", i, buf[i]);
}
/* Error:
*/
// P2
str = malloc(sizeof(char) * 10);
strcpy(str, "Something is wrong");
printf("%s\n", printThisOne);
/* Error:
*/
// P3
word = "Part 3";
*(word + 4) = '-';
printf("%s\n", word);
/* Error:
*/
// P4
*(integers + 10) = 10;
printf("Part 4: %d\n", *(integers + 10));
free(integers);
/* Error:
*/
// P5
printf("Print this whole \0 line\n");
/* Error:
*/
// P6
x = 2147483647;
printf("%d is positive\n", x);
x += 1000000000;
printf("%d is positive\n", x);
/* Error:
*/
// P7
printf("Cleaning up memory from previous parts\n");
free(str);
free(buf);
/* Error:
*/
// P8
fib(foo, 7);
printf("fib(7) = %d\n", foo);
/* Error:
*/
// P9
bar = 0;
*bar = 123;
printf("bar = %d\n", *bar);
/* Error:
*/
// P10
someText = malloc(10);
strcpy(someText, "testing");
free(someText);
printf("someText = %s\n", someText);
/* Error:
*/
exit(0);
}
// fib calculates the nth fibonacci number and puts it in A.
// There is nothing wrong with this function.
void fib(int *A, int n)
{
int temp;
if (n == 0 || n == 1)
*A = 1;
else {
fib(A, n - 1);
temp = *A;
fib(A, n - 2);
*A += temp;
}
}
Trending now
This is a popular solution!
Step by step
Solved in 3 steps