cmake switch part 2
This commit is contained in:
parent
be246e7ce4
commit
e898582dd3
|
@ -57,3 +57,7 @@ bin
|
|||
*/bin
|
||||
obj
|
||||
*/obj
|
||||
CMakeFiles
|
||||
build
|
||||
CMakeCache.txt
|
||||
Makefile
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
project(base)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
include_directories(${PROJECT_SOURCE_DIR})
|
||||
add_executable( abc src/abc.c )
|
||||
add_executable( adder src/adder.c )
|
||||
add_executable( args src/args.c )
|
||||
add_executable( arrToBin src/arrToBin.c )
|
||||
add_executable( ascii src/ascii.c )
|
||||
add_executable( calculator src/calculator.c )
|
||||
add_executable( callreference src/callreference.c )
|
||||
add_executable( complex src/complex.c )
|
||||
add_executable( dividableBy7 src/dividableBy7.c )
|
||||
add_executable( structdump src/structdump.c )
|
||||
add_executable( echo src/echo.c )
|
||||
add_executable( echochar src/echochar.c )
|
||||
add_executable( euler src/euler.c )
|
||||
add_executable( factorial src/factorial.c )
|
||||
add_executable( fail src/fail.c )
|
||||
add_executable( fread src/fread.c )
|
||||
add_executable( hello-world src/hello-world.c )
|
||||
add_executable( options src/options.c )
|
||||
add_executable( pointermagic src/pointermagic.c )
|
||||
add_executable( primenumbers src/primenumbers.c )
|
||||
add_executable( quersumme src/quersumme.c )
|
||||
add_executable( readfile src/readfile.c )
|
||||
add_executable( redefinition src/redefinition.c )
|
||||
add_executable( redefinition-if src/redefinition-if.c )
|
||||
add_executable( return-specified src/return-specified.c )
|
||||
add_executable( scanf-test src/scanf-test.c )
|
||||
add_executable( scnaf-hex-test src/scnaf-hex-test.c )
|
||||
add_executable( signed-to-unsigned src/signed-to-unsigned.c )
|
||||
add_executable( sizeofs src/sizeofs.c )
|
||||
add_executable( success src/success.c )
|
||||
add_executable( sum src/sum.c )
|
||||
add_executable( tabtest src/tabtest.c )
|
||||
add_executable( umlaut src/umlaut.c )
|
||||
add_executable( unary-double-not src/unary-double-not.c )
|
||||
add_executable( warning src/warning.c )
|
||||
add_executable( pointer-arithmetic src/pointer-arithmetic.c )
|
||||
|
||||
target_link_libraries(abc m) # link libm to abc
|
27
abc.c
27
abc.c
|
@ -1,27 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <complex.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char **argv){
|
||||
|
||||
if(argc<3){
|
||||
printf("not enough args! Ex: ./abc 12 -3 5\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
double a = atoi(argv[1]);
|
||||
double b = atoi(argv[2]);
|
||||
double c = atoi(argv[3]);
|
||||
|
||||
printf("(%f)x²+(%f)x+(%f)=0\n", a, b, c);
|
||||
double l1 = 0, l2 = 0;
|
||||
double cl1 = 0, cl2 = 0;
|
||||
l1=(-b + sqrt((b*b)-(4*a*c)))/(2*a);
|
||||
l2=(-b - sqrt((b*b)-(4*a*c)))/(2*a);
|
||||
cl1=(-b + csqrt((b*b)-(4*a*c)))/(2*a);
|
||||
cl2=(-b - csqrt((b*b)-(4*a*c)))/(2*a);
|
||||
printf("(-%.0f (+-) sqrt[(%.0f²)-(4*%.0f*%.0f)])/2*%.0f\n", b, b, a, c, a);
|
||||
printf("x1=%f x2=%f\n", l1, l2);
|
||||
printf("(complex mode)\nx1=%fi\tx2=%fi\n", cl1, cl2);
|
||||
return 0;
|
||||
}
|
9
adder.c
9
adder.c
|
@ -1,9 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int a, b;
|
||||
printf("Please input two integers to be added.\n");
|
||||
scanf("%d %d", &a, &b);
|
||||
printf("%d + %d = %d\n", a, b, a+b);
|
||||
return 0;
|
||||
}
|
15
args.c
15
args.c
|
@ -1,15 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char* argv[]){
|
||||
|
||||
if(argc==1){
|
||||
printf("Recieved only one argument, idiot");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for(int i = 0; i < argc+1; i++){
|
||||
printf("%d. [%s]\n", i+1, argv[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
28
arrToBin.c
28
arrToBin.c
|
@ -1,28 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(){
|
||||
// input as single int, output as array of ints with only 0 and 1s
|
||||
|
||||
char str_i[20];
|
||||
int i;
|
||||
|
||||
fgets(str_i, 20, stdin);
|
||||
i = strtol(str_i, NULL, 0);
|
||||
printf("%d", i);
|
||||
|
||||
int bin[16] = { -1 };
|
||||
int b;
|
||||
|
||||
printf("[CONTROL]as hex %x\n", i);
|
||||
for(int j = 16; j>0; j--){
|
||||
b = i%2;
|
||||
i /= 2;
|
||||
bin[i] = b;
|
||||
}
|
||||
for(int j = 0; j < 16; j++){
|
||||
printf("%d", bin[j]);
|
||||
}
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
8
ascii.c
8
ascii.c
|
@ -1,8 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
for(int i=0; i<256; i++){
|
||||
printf("(dec)%d\t(hex)0x%02x\t(char)%c\t\n",i,i,i);
|
||||
}
|
||||
return 0;
|
||||
}
|
49
calculator.c
49
calculator.c
|
@ -1,49 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
double factorial(double i) {
|
||||
if(i <= 1) {
|
||||
return 1;
|
||||
}
|
||||
return i * factorial(i - 1);
|
||||
}
|
||||
|
||||
double power(double a, double b) {
|
||||
double result = a;
|
||||
for(int i=0;i<b;i++){
|
||||
result*=a;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv){
|
||||
|
||||
// inputs
|
||||
uint32_t a, b;
|
||||
char op;
|
||||
while(1) {
|
||||
printf("\nPlease input the first number.\n");
|
||||
fflush(stdin);
|
||||
scanf("%d", &a);
|
||||
printf("Please input the second number.\n");
|
||||
fflush(stdin);
|
||||
scanf("%d", &b);
|
||||
printf("Please select an operation. ( + - * / ^ ! ), e to exit.\n");
|
||||
fflush(stdin);
|
||||
scanf(" %c", &op); //The %c conversion specifier won't automatically skip any leading whitespace
|
||||
|
||||
// calculate stuff.
|
||||
switch(op) {
|
||||
case '+': printf("%d + %d = %d\n", a, b, a+b); break;
|
||||
case '-': printf("%d - %d = %d\n", a, b, a-b); break;
|
||||
case '*': printf("%d * %d = %d\n", a, b, a*b); break;
|
||||
case '/': printf("%d / %d = %f\n", a, b, (double)a/(double)b); break;
|
||||
case '^': printf("%d^%d = %f\n", a, b, power((double)a,(double)b)); break;
|
||||
case '!': printf("%d! = %f\n", a, factorial((double)a)); break;
|
||||
case 'e': printf("exiting...\n"); return 0;
|
||||
//case '%': printf("%d % %d = %d\n", a, b, a%b); break; // idk weird outputs.
|
||||
default: printf("no operation recognized.\n"); return 1;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int* ref(int *i, int* j, int* result){
|
||||
*result = *i + *j;
|
||||
return result;
|
||||
}
|
||||
|
||||
int val(int a, int b){
|
||||
return a+b;
|
||||
}
|
||||
|
||||
int main(){
|
||||
|
||||
int x = 1000;
|
||||
int y = 337;
|
||||
int z;
|
||||
printf("given: %d\n", x);
|
||||
printf("reference: %d\n", *ref(&x, &y, &z));
|
||||
printf("value: %d\n", val(x, y));
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
# Install script for directory: /home/plex/Documents/code/c/c-basic
|
||||
|
||||
# Set the install prefix
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX "/usr/local")
|
||||
endif()
|
||||
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
# Set the install configuration name.
|
||||
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||
if(BUILD_TYPE)
|
||||
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
|
||||
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
|
||||
else()
|
||||
set(CMAKE_INSTALL_CONFIG_NAME "")
|
||||
endif()
|
||||
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
|
||||
endif()
|
||||
|
||||
# Set the component getting installed.
|
||||
if(NOT CMAKE_INSTALL_COMPONENT)
|
||||
if(COMPONENT)
|
||||
message(STATUS "Install component: \"${COMPONENT}\"")
|
||||
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
|
||||
else()
|
||||
set(CMAKE_INSTALL_COMPONENT)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Install shared libraries without execute permission?
|
||||
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||
set(CMAKE_INSTALL_SO_NO_EXE "0")
|
||||
endif()
|
||||
|
||||
# Is this installation the result of a crosscompile?
|
||||
if(NOT DEFINED CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_CROSSCOMPILING "FALSE")
|
||||
endif()
|
||||
|
||||
# Set default install directory permissions.
|
||||
if(NOT DEFINED CMAKE_OBJDUMP)
|
||||
set(CMAKE_OBJDUMP "/usr/bin/objdump")
|
||||
endif()
|
||||
|
||||
if(CMAKE_INSTALL_COMPONENT)
|
||||
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
|
||||
else()
|
||||
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
|
||||
"${CMAKE_INSTALL_MANIFEST_FILES}")
|
||||
file(WRITE "/home/plex/Documents/code/c/c-basic/${CMAKE_INSTALL_MANIFEST}"
|
||||
"${CMAKE_INSTALL_MANIFEST_CONTENT}")
|
|
@ -1,24 +0,0 @@
|
|||
#!/bin/bash
|
||||
mkdir -p bin
|
||||
returnCode=0
|
||||
echo -e "compiling all files in working directory $(pwd)\n"
|
||||
for file in $(/bin/ls *.c);
|
||||
do
|
||||
echo "compiling $file ..."
|
||||
noext=$(echo "$file" | cut -f 1 -d '.')
|
||||
gcc $file -o bin/$noext -lm
|
||||
if [ "$?" -ne 0 ]
|
||||
then
|
||||
echo -e "\nERROR: could not compile $file !\n";
|
||||
returnCode=1;
|
||||
fi
|
||||
done
|
||||
echo -ne "\nfinished compiling all source files. ";
|
||||
if [ "$returnCode" -eq 0 ]
|
||||
then
|
||||
echo -ne "No errors occured.";
|
||||
else
|
||||
echo -ne "Some errors occured.";
|
||||
fi
|
||||
echo "";
|
||||
exit $returnCode
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
mkdir -p bin
|
||||
noext=$(echo "$1" | cut -f 1 -d '.')
|
||||
echo "compiling $1 ..."
|
||||
gcc $1 -o bin/$noext -lm
|
||||
./bin/$noext $2 $3 $4 $5 $6 $7 $8 $9
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
mkdir -p bin
|
||||
echo "compiling $1 ..."
|
||||
noext=$(echo "$1" | cut -f 1 -d '.')
|
||||
gcc $1 -o bin/$noext -lm
|
83
complex.c
83
complex.c
|
@ -1,83 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
float real;
|
||||
float imaginary;
|
||||
}complex;
|
||||
|
||||
complex assignComplex(){
|
||||
float r, i;
|
||||
scanf("%f", &r);
|
||||
scanf("%f", &i);
|
||||
complex c;
|
||||
c.real = r;
|
||||
c.imaginary = i;
|
||||
return c;
|
||||
}
|
||||
|
||||
void addComplex() {
|
||||
printf("First complex\n");
|
||||
complex a = assignComplex();
|
||||
printf("Second complex\n");
|
||||
complex b = assignComplex();
|
||||
|
||||
complex r;
|
||||
r.real = a.real + b.real;
|
||||
r.imaginary = a.imaginary + b.imaginary;
|
||||
printf("Result: %f+%fi\n", r.real, r.imaginary);
|
||||
}
|
||||
|
||||
void subComplex() {
|
||||
printf("First complex\n");
|
||||
complex a = assignComplex();
|
||||
printf("Second complex\n");
|
||||
complex b = assignComplex();
|
||||
|
||||
complex r;
|
||||
r.real = a.real - b.real;
|
||||
r.imaginary = a.imaginary - b.imaginary;
|
||||
printf("Result: %f+%fi\n", r.real, r.imaginary);
|
||||
}
|
||||
|
||||
void mulComplex() {
|
||||
printf("First complex\n");
|
||||
complex a = assignComplex();
|
||||
printf("Second complex\n");
|
||||
complex b = assignComplex();
|
||||
|
||||
complex r;
|
||||
r.real = a.real * b.real;
|
||||
r.imaginary = a.imaginary * b.imaginary;
|
||||
printf("Result: %f+%fi\n", r.real, r.imaginary);
|
||||
}
|
||||
|
||||
void divComplex() {
|
||||
printf("First complex\n");
|
||||
complex a = assignComplex();
|
||||
printf("Second complex\n");
|
||||
complex b = assignComplex();
|
||||
|
||||
complex r;
|
||||
r.real = a.real / b.real;
|
||||
r.imaginary = a.imaginary / b.imaginary;
|
||||
printf("Result: %f+%fi\n", r.real, r.imaginary);
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("Usage:\n\toperations: + - * /\n\tquit: q\n");
|
||||
|
||||
char in;
|
||||
while(1){
|
||||
|
||||
in = getchar();
|
||||
switch(in){
|
||||
case 'q': return 0;
|
||||
case '+': addComplex(); break;
|
||||
case '-': subComplex(); break;
|
||||
case '*': mulComplex(); break;
|
||||
case '/': divComplex(); break;
|
||||
default: printf("kaputt\n"); break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* lower and upper end as user input
|
||||
* use a for loop to output all numbers for which 7|x is true.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
||||
int a,b;
|
||||
printf("input lower end:\n");
|
||||
fflush(stdin);
|
||||
scanf("%d",&a);
|
||||
printf("input upper end:\n");
|
||||
fflush(stdin);
|
||||
scanf("%d",&b);
|
||||
|
||||
printf("inputs: %d %d\n", a, b);
|
||||
for(int i=a; i<=b; i++){
|
||||
if(i%7==0)
|
||||
printf("%d ", i);
|
||||
if(i==b)
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
42
dump.c
42
dump.c
|
@ -1,42 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct a {
|
||||
int a;
|
||||
char str[30];
|
||||
};
|
||||
|
||||
/*
|
||||
* give an argument to keep the file /tmp/structdump
|
||||
* like this: bin/dump aaa
|
||||
*/
|
||||
|
||||
int main(int argc, char** argv){
|
||||
struct a* mystruct = malloc(sizeof(struct a));
|
||||
if(mystruct == NULL){
|
||||
printf("malloc for 1st struct failed!\n");
|
||||
return 1;
|
||||
}
|
||||
mystruct->a = 12;
|
||||
char s[30] = "Wer das liest ist doof";
|
||||
strcpy(mystruct->str, s);
|
||||
FILE* fptr = fopen("/tmp/structdump", "wb");
|
||||
fwrite(mystruct, sizeof(struct a), 1, fptr);
|
||||
fclose(fptr);
|
||||
free(mystruct);
|
||||
|
||||
fptr = fopen("/tmp/structdump", "rb");
|
||||
mystruct = malloc(sizeof(struct a));
|
||||
if(mystruct == NULL){
|
||||
printf("malloc for 2nd struct failed!\n");
|
||||
return 1;
|
||||
}
|
||||
fread(mystruct, sizeof(struct a), 1, fptr);
|
||||
printf("mystruct->a: %d\nmystruct->str: \"%s\"\n", mystruct->a, mystruct->str); // SIGSEV
|
||||
free(mystruct);
|
||||
fclose(fptr);
|
||||
if(argc<2)
|
||||
remove("/tmp/structdump");
|
||||
return 0;
|
||||
}
|
17
echo.c
17
echo.c
|
@ -1,17 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
char s[100];
|
||||
//gets(s);
|
||||
/*
|
||||
* Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and be‐
|
||||
* cause gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break
|
||||
* computer security. Use fgets() instead.
|
||||
*
|
||||
* For more information, see CWE-242 (aka "Use of Inherently Dangerous Function") at http://cwe.mitre.org/data/definitions/242.html
|
||||
*
|
||||
*/
|
||||
fgets(s, sizeof(s), stdin);
|
||||
printf("%s\n", s);
|
||||
return 0;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
||||
char a = getchar();
|
||||
printf("%c", a);
|
||||
return 0;
|
||||
}
|
50
euler.c
50
euler.c
|
@ -1,50 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
// range of unsigned long long is:
|
||||
// 18.446.744.073.709.551.615
|
||||
// maximum factorial with this is 65!
|
||||
// Double goes up to 170!
|
||||
double factorial(double i) {
|
||||
|
||||
if(i <= 1) {
|
||||
return 1;
|
||||
}
|
||||
return i * factorial(i - 1);
|
||||
}
|
||||
|
||||
double factorialFor(double given){
|
||||
double p = 1;
|
||||
|
||||
// someone said i need 2 for loops. Totally wrong?
|
||||
for(int j=1;j<given;j++){
|
||||
|
||||
p *= j;
|
||||
//printf("[DEBUG]p is %f, j is %d\n", p, j);
|
||||
}
|
||||
return given * p;
|
||||
}
|
||||
|
||||
double euler(int k) {
|
||||
return 1/factorial(k);
|
||||
}
|
||||
int main(int argc, char *argv[]){
|
||||
double res = 0, lres = 0;
|
||||
int k = 0;
|
||||
int end = 0;
|
||||
while(!end){
|
||||
res += euler(k);
|
||||
printf("%f, %f\n", res, lres);
|
||||
if(res==lres)
|
||||
end = 1;
|
||||
else {
|
||||
lres = res;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
printf("calculated eulers number as %f\n", res);
|
||||
return 0;
|
||||
}
|
||||
|
39
factorial.c
39
factorial.c
|
@ -1,39 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
// range of unsigned long long is:
|
||||
// 18.446.744.073.709.551.615
|
||||
// maximum factorial with this is 65!
|
||||
// Double goes up to 170!
|
||||
double factorial(double i) {
|
||||
|
||||
if(i <= 1) {
|
||||
return 1;
|
||||
}
|
||||
return i * factorial(i - 1);
|
||||
}
|
||||
|
||||
double factorialFor(double given){
|
||||
double p = 1;
|
||||
|
||||
// someone said i need 2 for loops. Totally wrong?
|
||||
for(int j=1;j<given;j++){
|
||||
|
||||
p *= j;
|
||||
//printf("[DEBUG]p is %f, j is %d\n", p, j);
|
||||
}
|
||||
return given * p;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]){
|
||||
if(argc<=1) {
|
||||
printf("You did not feed me arguments, I will die now :( gimme ints");
|
||||
return 1;
|
||||
} //otherwise continue on our merry way....
|
||||
|
||||
double num = atoi(argv[1]);
|
||||
printf("the factorial of the given input calculated by a recursive algorithm is: %.0f\n", factorial(num));
|
||||
printf("the factorial of the given input calculated by a nonrecursive algorithm is: %.0f\n", factorialFor(num));
|
||||
return 0;
|
||||
}
|
||||
|
10
fail.c
10
fail.c
|
@ -1,10 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* This program has the purpose of returning a -1 value, indicating the shell that something has gone wrong
|
||||
* while the program was running.
|
||||
*/
|
||||
|
||||
int main(){
|
||||
return -1;
|
||||
}
|
24
fread.c
24
fread.c
|
@ -1,24 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main () {
|
||||
FILE *fp;
|
||||
char c[] = "this is tutorialspoint";
|
||||
char buffer[100];
|
||||
|
||||
/* Open file for both reading and writing */
|
||||
fp = fopen("file.txt", "w+");
|
||||
|
||||
/* Write data to the file */
|
||||
fwrite(c, strlen(c) + 1, 1, fp);
|
||||
|
||||
/* Seek to the beginning of the file */
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
|
||||
/* Read and display data */
|
||||
fread(buffer, strlen(c)+1, 1, fp);
|
||||
printf("%s\n", buffer);
|
||||
fclose(fp);
|
||||
|
||||
return(0);
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
printf("Hello world!\n");
|
||||
return 0;
|
||||
}
|
26
options.c
26
options.c
|
@ -1,26 +0,0 @@
|
|||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
bool isCaseInsensitive = false;
|
||||
int opt;
|
||||
enum { CHARACTER_MODE, WORD_MODE, LINE_MODE } mode = CHARACTER_MODE;
|
||||
|
||||
while ((opt = getopt(argc, argv, "ilw")) != -1) {
|
||||
switch (opt) {
|
||||
case 'i': isCaseInsensitive = true; break;
|
||||
case 'l': mode = LINE_MODE; break;
|
||||
case 'w': mode = WORD_MODE; break;
|
||||
default:
|
||||
fprintf(stderr, "Usage: %s [-ilw] [file...]\n", argv[0]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
// Now optind (declared extern int by <unistd.h>) is the index of the first non-option argument.
|
||||
// If it is >= argc, there were no non-option arguments.
|
||||
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int a[5] = {22, 33, 44, 55, 66};
|
||||
int *ptr = NULL;
|
||||
ptr = a; /* point to the first array element */
|
||||
for(int i = 0; i < 50; i++) {
|
||||
printf(" value:0x%-10x\tor 0d%-16d\tAdress:%-8x\n", *(ptr+i), *(ptr+i), ptr+i); /* 33 */
|
||||
}}
|
|
@ -1,19 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void printLoc(int y) {
|
||||
printf("Address of y is %x\n", &y);
|
||||
}
|
||||
|
||||
void printPointerLoc(int *x) {
|
||||
printf("Adress of x is %x\n", &x);
|
||||
printf("Adress the x pointer points to is %x\n", x);
|
||||
printf("Adress of whatever *x is is %x\n", *x);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int a = 0xAAAA;
|
||||
printf("Address of a is %x\n", &a);
|
||||
printLoc(a);
|
||||
printPointerLoc(&a);
|
||||
return 0;
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int maxPrime = atoi(argv[1]);
|
||||
|
||||
int *arr1 = malloc(sizeof(int)*maxPrime);
|
||||
if(arr1==NULL)
|
||||
return -1;
|
||||
for(int i=0; i<maxPrime; i++) {
|
||||
arr1[i]=i+2;
|
||||
}
|
||||
|
||||
int p = 2;
|
||||
|
||||
for(int i=1; i<maxPrime; i++) {
|
||||
for(int j=1; j<maxPrime; j++) {
|
||||
if((arr1[j]%p==0)&&(arr1[j]>0)&&(arr1[j]!=p))
|
||||
arr1[j]=-1;
|
||||
}
|
||||
// get next prime in arr
|
||||
// FIXME
|
||||
p = arr1[i];
|
||||
for(int l=0;l<512;l++){
|
||||
if(p>0)
|
||||
break;
|
||||
else {
|
||||
p = arr1[i+l];
|
||||
}
|
||||
}
|
||||
for(int l=0;l<maxPrime;l++){
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
printf("\n");
|
||||
for(int i=0;i<maxPrime;i++){
|
||||
if(arr1[i]>0)
|
||||
printf("%d ", arr1[i]);
|
||||
}
|
||||
free(arr1);
|
||||
printf("\n");
|
||||
return 0;
|
||||
}
|
30
quersumme.c
30
quersumme.c
|
@ -1,30 +0,0 @@
|
|||
#include <stdio.h>
|
||||
int main() {
|
||||
int a, digits = 0, b = 0;
|
||||
printf("input a number for calculation\n");
|
||||
fflush(stdin);
|
||||
scanf("%d",&a);
|
||||
|
||||
int digit[128];
|
||||
|
||||
// look out for wrong order
|
||||
for(int i=0; i<128; i++) {
|
||||
digit[i] = a % 10;
|
||||
if(a>0)
|
||||
a = a / 10;
|
||||
else {
|
||||
if(digits==-1)
|
||||
digits = i;
|
||||
digit[i] = -1;
|
||||
}
|
||||
//printf("%d. digit is: %d\n", i, digit[i]);
|
||||
}
|
||||
|
||||
// array is in wrong order, but who cares for the quersumme
|
||||
for(int i=0; i<128; i++){
|
||||
if(digit[i]>0)
|
||||
b += digit[i];
|
||||
}
|
||||
printf("quersumme is: %d\n", b);
|
||||
return 0;
|
||||
}
|
23
readfile.c
23
readfile.c
|
@ -1,23 +0,0 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char filename[] = "file.txt";
|
||||
char buf[2];
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen(filename, "rb")) == NULL)
|
||||
{
|
||||
printf("Unable to open file: %s\n", filename);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (fread(buf, 1, 2, fp) == 2)
|
||||
{
|
||||
printf("%02x %02x\n", (int) buf[0], (int) buf[1]);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#include <stdio.h>
|
||||
int main() {
|
||||
int a;
|
||||
if(1){
|
||||
int a; // works, this a is only in scope of the if statement.
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
#include <stdio.h>
|
||||
int a = 1;
|
||||
int main() {
|
||||
int a = 2;
|
||||
printf("%d\n", a); // local overrides global
|
||||
return 0;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
* This program takes the given argument and returns it as an integer.
|
||||
* It might be useful to test a shell.
|
||||
*/
|
||||
|
||||
int main(int argc, char** argv){
|
||||
if(argc<2){
|
||||
printf("No argument given.\n");
|
||||
return -1;
|
||||
}
|
||||
return atoi(argv[1]);
|
||||
}
|
11
scanf-test.c
11
scanf-test.c
|
@ -1,11 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int a;
|
||||
float f;
|
||||
char s[20];
|
||||
printf("input an integer, a float, then a string.\n");
|
||||
scanf("%d %f %s", &a, &f, s);
|
||||
printf("%d %f %s\n", a, f, s);
|
||||
return 0;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
int a;
|
||||
scanf("%x", &a);
|
||||
printf("hex: %x dec: %d\n", a, a);
|
||||
return 0;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
signed int a = -1;
|
||||
printf("%u\n",a); // no need to type cast. %u interprets given bytes of type unsigned int regardless of the datatype. truly low level
|
||||
}
|
10
sizeofs.c
10
sizeofs.c
|
@ -1,10 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
printf("int: %ld \n", sizeof(int));
|
||||
printf("float: %ld \n", sizeof(float));
|
||||
printf("double: %ld \n", sizeof(double));
|
||||
printf("char: %ld \n", sizeof(char));
|
||||
|
||||
return 0;
|
||||
}
|
10
success.c
10
success.c
|
@ -1,10 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* This program has the purpose of returning a 0 value, indicating to the shell that the program was
|
||||
* executed successfully.
|
||||
*/
|
||||
|
||||
int main(){
|
||||
return 0;
|
||||
}
|
11
sum.c
11
sum.c
|
@ -1,11 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
int result = 0;
|
||||
for (int i = 1; i < 101; i++){
|
||||
result+=i;
|
||||
}
|
||||
printf("sum of 1 up to 100 is: %d\n", result);
|
||||
return 0;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
printf("horizontal\ttab\n");
|
||||
printf("vertical%ctab\n", 11);
|
||||
printf("reference line\n");
|
||||
return 0;
|
||||
}
|
3
umlaut.c
3
umlaut.c
|
@ -1,3 +0,0 @@
|
|||
#include <stdio.h>
|
||||
int main() { return 0; }
|
||||
int zähler() { return 0; } // umlaute is an unknown char for gcc
|
|
@ -1,6 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
printf("%d\n",!!42);
|
||||
return 0;
|
||||
}
|
15
warning.c
15
warning.c
|
@ -1,15 +0,0 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
char s[2];
|
||||
/*
|
||||
* The following line of code is unsafe. It writes up to 10 bytes into the char array 's', which is only
|
||||
* 2 Bytes big. A Buffer Overflow can happen. I have chosen to keep that line, because i wanted a source
|
||||
* file that produces a compiler warning when it is compiled. That is the true purpose of this file.
|
||||
*
|
||||
* a safe alternative would be: fgets(s, 2, stdin);
|
||||
*/
|
||||
fgets(s, 10, stdin); // UNSAFE
|
||||
printf("%s\n",s);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue