/ . , , , .
, , , , . , , , arrays.c. , , , , . , 5 , , arrays.c.
, , . , read_array 5 , read_array arrays.c, , .
header? , , . arrays.h , . , arrays.h arrays.c? header files, function declarations, data structures and variables , function definitions, arrays.c. , , , #include "arrays.h" , , arrays.c
( C) . , , read_array, prn_array, , free_array. array.c. ( , array.h .) , :
#include "array.h"
char **read_array (char *filename)
{
char *buffer = NULL;
size_t len = 0;
ssize_t read;
char **array = NULL;
int cnt = 0;
FILE *fp;
fp = fopen (filename, "r");
if (!fp) {
fprintf (stderr, "failed to open file for reading\n");
return NULL;
}
array = calloc (AMAX, sizeof (*array) * AMAX);
while ((read = getline (&buffer, &len, fp)) != -1) {
if (cnt == AMAX) {
fprintf (stderr, "Error: AMAX reached\n");
break;
}
if (buffer[read-1] == '\n') {
buffer[read-1] = 0;
read -= 1;
}
array[cnt] = strdup (buffer);
cnt++;
}
fclose (fp);
return array;
}
void prn_array (char **array)
{
register int j = 0;
while (array[j]) {
printf (" array[%d]: %s\n", j, array[j]);
j++;
}
}
void free_array (char **array)
{
register int j = 0;
while (array[j]) {
free (array[j]);
j++;
}
free (array);
}
. function declarations variables data structures, system headers included header files, array.h:
#ifndef MY_ARRAY_H
#define MY_ARRAY_H 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define AMAX 100
char **read_array (char *filename);
void prn_array (char **array);
void free_array (char **array);
#endif
#ifndef MY_ARRAY_H, , MY_ARRAY_H , ifndef ( ), , , #define, if #endif, MY_ARRAY_H, - , . ( , MY_ARRAY_H 1)
, array.h arrays.c ? , arrays.c arrays.c , array.h . ( application.c ):
#include <stdio.h>
#include "array.h"
int main (int argc, char *argv[]) {
if (argc < 2) {
printf ("filename.csv please...\n");
return 1;
}
char **my_array = NULL;
my_array = read_array (argv[1]);
prn_array (my_array);
free_array (my_array);
return 0;
}
application.c array.c:
gcc -Wall -Wextra -o application application.c array.c
( 100 )
$ ./application input.txt
array[0]: 1. This is a simple input file with line numbers
array[1]: 2. for use with application showing the use of
array[2]: 3. header file: array.h
array[3]: 4. array functions defined in: array.c
array[4]: 5. (blank)
array[5]: 6. compiled with the following:
array[6]: 7. gcc -Wall -Wextra -o application application.c array.c
array[7]: 8.
array[8]: 9. Now you know!
, , , , . , , arrays.h. , arrays.c , .
, , , . C/++.