Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_STR_LEN 256
- #define MAX_WORDS 64
- FILE * my_fopen(char *);
- void process_file(FILE *, int [2], char [2][MAX_STR_LEN]);
- void process_string(char [MAX_STR_LEN], char [2][MAX_STR_LEN]);
- int main ()
- {
- int pos[2];
- char words[2][MAX_STR_LEN];
- FILE * fp;
- fp = my_fopen("r");
- process_file(fp, pos, words);
- fclose(fp);
- printf("Longest word (%s) is at line %d\nShortest word (%s) is at line %d\n", words[0], pos[0]+1, words[1], pos[1]+1);
- return 0;
- }
- FILE * my_fopen(char * mode)
- {
- char nome_file[MAX_STR_LEN];
- FILE * fp;
- printf("Insert file name: ");
- scanf("%s", nome_file);
- if((fp = fopen(nome_file, mode)) == NULL) {
- printf("Unable to open file %s.\n", nome_file);
- exit(EXIT_FAILURE);
- }
- return fp;
- }
- void process_file(FILE * fp, int pos[2], char words[2][MAX_STR_LEN]){
- char str[MAX_STR_LEN], cur_words[2][MAX_STR_LEN];
- int str_num=0;
- while(feof(fp)==0){
- fgets(str, MAX_STR_LEN-1, fp);
- process_string(str, cur_words);
- if((strlen(cur_words[0])>strlen(words[0]))||(str_num==0)){
- pos[0]=str_num;
- strcpy(words[0], cur_words[0]);
- }
- if((strlen(cur_words[1])<strlen(words[1]))||(str_num==0)){
- pos[1]=str_num;
- strcpy(words[1], cur_words[1]);
- }
- str_num++;
- }
- }
- void process_string(char string[MAX_STR_LEN], char words[2][MAX_STR_LEN]){
- int num_words=0, i;
- char * token;
- char del[]=" ,-_!?'“”:.()’;", cur_words[MAX_WORDS][MAX_STR_LEN];
- token=strtok(string, del);
- while(token!=NULL){
- if(strlen(token)>1)
- strcpy(cur_words[num_words++], token);
- token=strtok(NULL, del);
- }
- for(i=0;i<num_words;i++){
- if((strlen(cur_words[i])>strlen(words[0]))||(i==0))
- strcpy(words[0], cur_words[i]);
- if((strlen(cur_words[i])<strlen(words[1]))||(i==0))
- strcpy(words[1], cur_words[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement