Adding a lot of C code
							parent
							
								
									576a223a29
								
							
						
					
					
						commit
						743f5d215d
					
				@ -0,0 +1,7 @@
 | 
			
		||||
P=
 | 
			
		||||
OBJECTS=
 | 
			
		||||
CFLAGS = -g -Wall -O3 
 | 
			
		||||
LDLIBS=
 | 
			
		||||
CC=gcc
 | 
			
		||||
 | 
			
		||||
$(P): $(OBJECTS)
 | 
			
		||||
@ -0,0 +1,20 @@
 | 
			
		||||
# Environment Variables
 | 
			
		||||
 | 
			
		||||
Ok this is kind of getting interesting.
 | 
			
		||||
 | 
			
		||||
## Building
 | 
			
		||||
 | 
			
		||||
This makefile is kind of interesting. To build and name our program we just need to:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
make P="env"
 | 
			
		||||
```
 | 
			
		||||
Ok I don't really know the magic that is going on behind that one. Notice though that you are passing that variable after calling the program.
 | 
			
		||||
Technically, I think it's supposed to work like this:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
make CFLAGS="-g -Wall" Set a makefile variable.
 | 
			
		||||
CFLAGS="-g -Wall" make Set an environment variable that only make and its children see.
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
But on my mac I am noticing only the set makefile variable method works.
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,14 @@
 | 
			
		||||
#include <stdlib.h> //getenv, atoi
 | 
			
		||||
#include <stdio.h> //printf
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
	// pointer to a char
 | 
			
		||||
	char *repstext=getenv("reps");
 | 
			
		||||
	int reps = repstext ? atoi(repstext) : 10;
 | 
			
		||||
	
 | 
			
		||||
	char *msg = getenv("msg");
 | 
			
		||||
	if (!msg) msg = "Hello.";
 | 
			
		||||
	
 | 
			
		||||
	for (int i=0; i< reps; i++)
 | 
			
		||||
		printf("%s\n", msg);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
csv_writer:
 | 
			
		||||
	gcc -o csv_writer csv_writer.c
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f csv_writer
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,56 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define FILE_EXTENSION ".csv"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(int argc, char const *argv[]){
 | 
			
		||||
 | 
			
		||||
	if (argc <= 1){
 | 
			
		||||
		fprintf(stderr, "Failed to provide a csv file\n");
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	size_t file_len = strlen(argv[1]);
 | 
			
		||||
	
 | 
			
		||||
	/*char pointer of*/
 | 
			
		||||
	char * FILE_NAME = malloc(file_len + 1);
 | 
			
		||||
	if (FILE_NAME == NULL){
 | 
			
		||||
		fprintf(stderr, "Failed to allocate memory for file name!");
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Copy file name from executable's first arguments.*/
 | 
			
		||||
	strcpy(FILE_NAME, argv[1]);
 | 
			
		||||
 | 
			
		||||
	/*Returns a pointer to the location the substring if found*/
 | 
			
		||||
	if (strstr(FILE_NAME, FILE_EXTENSION) == NULL ){
 | 
			
		||||
		fprintf(stderr, "What the fuck are you doing? That %s isn't a csv file!\n", FILE_NAME);
 | 
			
		||||
		free(FILE_NAME);
 | 
			
		||||
		FILE_NAME = 0;
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char name[128], phone_number[13];
 | 
			
		||||
	// puts(FILE_NAME);
 | 
			
		||||
	FILE *_target_file = fopen(FILE_NAME, "a");
 | 
			
		||||
	if (_target_file == NULL){
 | 
			
		||||
		exit(1);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	puts("Name: ");
 | 
			
		||||
	scanf("%s", name);
 | 
			
		||||
	puts("Number: ");
 | 
			
		||||
	scanf("%s", phone_number);
 | 
			
		||||
 | 
			
		||||
	printf("Appending %s and %s to %s", name, phone_number, FILE_NAME);
 | 
			
		||||
	fprintf(_target_file,"%s,%s\n", name, phone_number);
 | 
			
		||||
	fclose(_target_file);
 | 
			
		||||
	/*clean up*/
 | 
			
		||||
	free(FILE_NAME);
 | 
			
		||||
	FILE_NAME = 0;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
Margot,517-775-7040
 | 
			
		||||
		
		
			
  | 
@ -0,0 +1,11 @@
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
P=temp_count
 | 
			
		||||
OBJECTS= temp.o temp_count.o
 | 
			
		||||
CFLAGS = -g -Wall -O3
 | 
			
		||||
LDLIBS=''
 | 
			
		||||
CC=gcc
 | 
			
		||||
 | 
			
		||||
$(P): $(OBJECTS)
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f *.o $(P)
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,7 @@
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
 | 
			
		||||
hello:
 | 
			
		||||
	gcc hello.c -o hello -g -Wall -O3
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f *.o hello
 | 
			
		||||
@ -0,0 +1,17 @@
 | 
			
		||||
CFLAGS=-Wall -O3
 | 
			
		||||
PROGRAMS=simple_pointer adv_pointer
 | 
			
		||||
 | 
			
		||||
all: $(PROGRAMS)
 | 
			
		||||
 | 
			
		||||
simple_pointer:
 | 
			
		||||
	gcc -o simple_pointer $(CFLAGS) simple_pointer.c
 | 
			
		||||
 | 
			
		||||
adv_pointer:
 | 
			
		||||
	gcc -o adv_pointer $(CFLAGS) adv_pointer.c
 | 
			
		||||
 | 
			
		||||
# NOT IMPLEMENTED
 | 
			
		||||
#array_pointer:
 | 
			
		||||
#	gcc -o array_pointer -Wall -O1 array_pointer.c
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f $(PROGRAMS)
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
#Pointers
 | 
			
		||||
 | 
			
		||||
Following this [C Pointers Tutorial].
 | 
			
		||||
 | 
			
		||||
[C Pointers Tutorial]: https://www.cprogramming.com/tutorial/c/lesson6.html
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,30 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(void){
 | 
			
		||||
	int o = 1337;
 | 
			
		||||
 | 
			
		||||
	printf("Let's learn to use malloc!\n");
 | 
			
		||||
	int *p = malloc(sizeof(*p));
 | 
			
		||||
	/* We need to make sure we got the memory block*/
 | 
			
		||||
	if (p){
 | 
			
		||||
		fprintf(stdout, "Ok we got a good value from malloc we can assign a value.\n");
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		fprintf(stderr, "Well fuck this didn't work. Malloc failed");
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printf("Ok the address of o is on the stack at: %p\n", &o);
 | 
			
		||||
	printf("*p is on the heap at: %p\n", p);
 | 
			
		||||
	printf("Let's assign a value to p: \n");
 | 
			
		||||
	scanf("%d", p);
 | 
			
		||||
	printf("We got %d\n", *p);
 | 
			
		||||
 | 
			
		||||
	printf("Freeing up the memory\nClosing program...\n");
 | 
			
		||||
	free(p);
 | 
			
		||||
	p = 0;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,18 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
int main(void){
 | 
			
		||||
 | 
			
		||||
	int x;
 | 
			
		||||
	int *p;
 | 
			
		||||
 | 
			
		||||
	/* Read it, "assign the address of x to p" */
 | 
			
		||||
	p = &x;
 | 
			
		||||
	printf("This should be random: %d\n", *p);
 | 
			
		||||
	printf("Ok the address of x is %p\n", &x);
 | 
			
		||||
	printf("Check that p has the same value: %p\n\n", p);	
 | 
			
		||||
 | 
			
		||||
	printf("Ok let's put a value in the pointer. Give me an int: \n");
 | 
			
		||||
	scanf("%d", p);
 | 
			
		||||
	printf("The value you provided was %d\n", *p);
 | 
			
		||||
	printf("Let's check x since p was a pointer to x's memory address: %d\n", x);
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
all:
 | 
			
		||||
	gcc -o eggs -Wall -O3 eggs.c
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f eggs
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,16 @@
 | 
			
		||||
CC=gcc
 | 
			
		||||
CFLAGS=-Wall -O1
 | 
			
		||||
PROGRAMS=pixel struct2
 | 
			
		||||
 | 
			
		||||
all: $(PROGRAMS) 
 | 
			
		||||
 | 
			
		||||
pixel:
 | 
			
		||||
	$(CC) -o pixel $(CFLAGS) pixel.c
 | 
			
		||||
 | 
			
		||||
struct2:
 | 
			
		||||
	$(CC) -o struct2 $(CFLAGS) struct2.c
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f $(PROGRAMS)
 | 
			
		||||
 | 
			
		||||
.PHONY=clean
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
					Loading…
					
					
				
		Reference in New Issue