Δημοσιεύτηκε: 07 Φεβ 2012, 22:43
Σου τα έβαλα όλα μαζί (κάνε δοκιμές με την main() για τεστ των 2 συναρτήσεων)...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NSTRINGS 20
#define MAXSTRLEN 100
/*****************************************************//**
*
*********************************************************
*/
int print_arrstr( char arrstr[NSTRINGS][MAXSTRLEN] )
{
int i;
for (i = 0; i < NSTRINGS && arrstr[i][0] != '\0'; i++)
printf( "%d: %s\n", i, arrstr[i] );
return 0;
}
/*****************************************************//**
*
*********************************************************
*/
int fread_arrstr( char arrstr[NSTRINGS][MAXSTRLEN], const char *fname )
{
int i = 0;
FILE *fp = NULL;
if ( !arrstr || !fname || NULL == (fp=fopen(fname, "r")) )
return 0; /* FALSE */
for (i=0; i < NSTRINGS && fgets(arrstr[i], MAXSTRLEN, fp); i++ )
{
/* remove '\n', if any, from end of just-read line */
size_t len = strlen( arrstr[i] ) - 1;
if ( arrstr[i][len] == '\n' )
arrstr[i][len] = '\0';
}
if ( ferror(fp) )
i = 0;
fclose( fp );
return i; /* number of lines read */
}
/*****************************************************//**
*
*********************************************************
*/
int fprint_arrstr( char arrstr[NSTRINGS][MAXSTRLEN], const char *fname )
{
int i = 0;
FILE *fp = NULL;
if ( !arrstr || !fname || NULL == (fp=fopen(fname, "w")) )
return 0; /* FALSE */
for (i = 0; i < NSTRINGS && arrstr[i][0] != '\0'; i++)
{
if ( fprintf( fp, "%s\n", arrstr[i] ) < 0 ) {
fclose(fp);
return 0; /* FALSE */
}
}
fclose( fp );
return 1; /* TRUE */
}
/*****************************************************//**
*
*********************************************************
*/
int main( void )
{
int nlines;
char *fname = "test5.txt";
char arrstr[NSTRINGS][MAXSTRLEN] = { {'\0'} };
printf("%d lines read form file %s\n", fread_arrstr(arrstr, fname), fname );
print_arrstr( arrstr );
#if 0
if ( !fprint_arrstr( arrstr, fname) )
fputs("*** failed or incomplete file writing...\n", stderr);
#endif
return 0;
}