String functions in C involving arrays of characters.
Functions with character arrays in C.
Date Created:Friday May 11th, 2007 01:02 PM
Date Modified:Sunday August 03rd, 2008 12:42 PM
#include <stdio.h>
#include "chars.h"
int main() {
char * name[4];
char * filename="data.c";
int n;
n=4;
while ( menu( name, filename,&n)==1 ) ;
return 0;
}
/*
* Author: Dan Lynch
*/
#include <string.h>
#include <stdlib.h>
void enternames( char ** x, int n) {
int i; int size;
char ch[21];
for (i=0; i<n; i++) {
printf("Enter Name %d>",i+1);
scanf("%s",ch);
size=strlen( ch ) ;
/*Add backslash 0*/
ch[size+1]='\0';
x[i]=malloc((strlen(ch)+1)*sizeof(char));
strcpy(x[i], ch);
}
printf("Data has been entered successfully.\n");
}
void searchname( char ** x, int n) {
int i;
char q[20];
printf("Type a word to search in the array:");
scanf("%s",q);
for (i=0; i<n; i++)
if (!strcmp(x[i],q)) printf("Match in element x[%d]!\n",i);
else printf("No match for %s\n",x[i]);
}
void sortnames( char ** x, int n) {
int j; int k;
char * temp;
for ( j = 0 ; j < n-1 ; j++)
for (k = j+1 ; k < n ; k++)
if ( strcmp( x[j], x[k] ) > 0 )
{temp=x[j]; x[j]=x[k]; x[k]=temp;}
printf("Data has been sorted successfully.\n");
}
void printnames( char ** x, int n) {
int i;
for (i=0; i<n; i++)
printf( "%s\n", x[i] );
printf("\n");
}
void readfile( char * filename, char ** x, int * n)
{
FILE * data;
char temp[30];
int i=0;int d;
data = fopen ( filename, "r" );
if ( data != NULL ) {
do {
fscanf(data, "%s", &temp);
/*Add backslash 0*/
d=strlen( temp ) ;
temp[d+1]='\0';
x[i] = malloc( ( strlen( temp ) + 1 ) * sizeof(char) );
strcpy( x[i++] , temp );
} while ( (!feof(data)) && (i < (*n-1) ));
*n=i; /* changed size of array */
printf("Data has been read successfully.\n");
} else { printf("Trouble with data!\n"); }
}
int menu(char ** name, char * filename, int * n) {
char ch;
printf("\nWould you like to:\n\n");
printf("(R)ead data from a file\n");
printf("(E)nter data from terminal\n");
printf("(S)earch for keyword in the data\n");
printf("(P)rint the data\n");
printf("(O)rder the data alphabetically\n");
printf("E (X) I T\n");
fflush(stdout);
scanf(" %c",&ch);
if ( ch == 'R' ) {readfile( filename, name, n );system("sleep 1");return 1;}
if ( ch == 'E' ) {enternames( name, *n );system("sleep 1");return 1;}
if ( ch == 'S' ) {searchname( name, *n );system("sleep 1");return 1;}
if ( ch == 'P' ) {printnames( name, *n );system("sleep 1");return 1;}
if ( ch == 'O' ) {sortnames ( name, *n );system("sleep 1");return 1;}
if ( ch == 'X' ) return 0;
return 0;
}
Downloads:
Download: chars.h 2 KB
Download: main.c 180 B
Please login or Click Here to register for downloads
Character Arrays by Dan Lynch
is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
Based on a work at www.3daet.com
Permissions beyond the scope of this license may be available at http://www.3daet.com
