Compare commits

..
6 Commits
Author SHA1 Message Date
robert a58f5db5a3 lines: add null check after opening infile 2026-07-02 09:37:13 +10:00
robert b826126635 program lines - read lines from a text file using fgets 2026-07-02 09:34:19 +10:00
robert 8020d45db7 start ignoring me and ignore compiled 2026-06-30 09:22:42 +10:00
robert 9b4fd1e5c1 finish copy.c demo 2026-06-30 09:07:09 +10:00
robert 17abac161e copy C clone complete? 2026-06-30 09:04:35 +10:00
robert d10617f2d4 29 June - start copy.c 2026-06-29 11:45:06 +10:00
8 changed files with 101 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
# this is a comment
# can we ignore any file without an extension?
copy
out.txt
+32
View File
@@ -0,0 +1,32 @@
#include <stdio.h>
int main(void)
{
FILE *input = fopen("in.txt", "r");
if (input == NULL)
{
perror("Failed to open in.txt");
return 1;
}
FILE *output = fopen("out.txt", "w");
if (output == NULL)
{
perror("Failed to open out.txt");
fclose(input);
return 1;
}
char c;
while (fread(&c, sizeof(char), 1, input) != 0)
{
fwrite(&c, sizeof(char), 1, output);
}
}
/*
TODO:
+ clone: clone git repository and start working on copy.c
+ first: go through part 3 of cs50 week 4 memory section.pdf
+ make: get copy.c compiling with make
+ complete: fix all problems and ensure the demo program works as intended
+ wait: if I need to go work on another file, it will go in a wait: task.
*/
+8
View File
@@ -0,0 +1,8 @@
Reading and Writing Files in C
copy - copy one file to a new file, one letter at a time.
lines - read lines from a text file using fgets.
todo: lines_2 - remove the \n from the end of each line.
https://stackoverflow.com/questions/2693776/removing-trailing-newline-character-from-fgets-input
https://man.freebsd.org/cgi/man.cgi?query=strcspn&sektion=3
+1
View File
@@ -0,0 +1 @@
hi!
+42
View File
@@ -0,0 +1,42 @@
// A program that iterates one line at a time.
// uses fgets.
// https://manual.cs50.io/3/fgets
// read the lines from lines.txt and print them out.
#include <stdio.h>
// char *fgets(char s[restrict .size], int size, FILE *restrict stream);
// reads in at most one less than size characters from stream and stores them
// into the buffer pointed to by s. Reading stops after an EOF or a newline.
// If a newline is read, it is stored into the buffer. A terminating null byte
// ('\0') is stored after the last character in the buffer.
// lines.c is based on the example at https://en.cppreference.com/c/io/fgets
#define SIZE 64
int main(void)
{
FILE* infile = fopen("lines.txt", "r");
if (infile == NULL)
{
perror("Failed to open in.txt");
return 1;
}
char buf[SIZE];
while (fgets(buf, sizeof buf, infile) != NULL)
{
printf("%s", buf);
}
if (feof(infile))
{
puts("End of file reached");
}
return 0;
}
+4
View File
@@ -0,0 +1,4 @@
Line one
Line two
Line four
+1
View File
@@ -0,0 +1 @@
To make git ignore compiled C programs, we put this in the git ignore.
+7
View File
@@ -0,0 +1,7 @@
To make git ignore things, we need a gitignore.
Here is how to get started with that.
A tool for creating gitignore things: https://www.toptal.com/developers/gitignore/
Of course, there is official documentation for git ignore: https://git-scm.com/docs/gitignore