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