code 47

توجه: این برنامه نیاز به فایل دارد که نام فایل را از کاربر خوانده (نام فایل را با پسوند txt. وارد کنید) .

مثال محتوای فایل : a.c.v…-s—f

این برنامه دارای تابع strtok است که با مشخص کردن کاراکترهای مد نظر ( . و – در این برنامه ) آن هارا حذف کرده و در هر ردیف کاراکتر جدید + کاراکتر های خط قبل را چاپ میکند.
:

#include <stdlib.h> 
#include <string.h> 
#include <time.h> 
#include <stdio.h>
 
struct list {
	char  *val;
	struct list *next;
};
struct list *root;    
struct list *head;
FILE *f;
int node_counter=0;

int init_list();  
void print_list (struct list * head);
int list_add(char *string);
int open_file();
 
int main(){
	int i;
	i=init_list();
	open_file();
	print_list(head);
	return(0);
}  
 
 
int init_list(){ 
	node_counter = 0;
	root=(struct list *)malloc(sizeof(struct list));
	if(root==NULL ){
		printf("Init list failed\n");
		return(1);
	}
    root->next=NULL;
    return(0);
}


//insert a node at the end of the list
int list_add(char *string){
	struct list *curr;
	char *str;
	curr = (struct list *)malloc(sizeof(struct list));
	str= (char *)malloc(60*sizeof(char));
	strcpy(str,string);
	if(curr==NULL){
		printf("Adding to a list failed\n");
		return(1);
	}
	if(node_counter==0)
		head=curr;
	curr->val=str;
	//strcpy(curr->cstr.val,string);
	root->next=curr;
	curr->next=NULL;
	root=curr;
	node_counter++;
	return(0);
}

void print_list (struct list * head) {
    struct list * ptr =head;
    while(ptr!=NULL){
        printf("%s ", ptr->val);
        ptr=ptr->next;
    }
    printf("\n");
}

int stringtoken (char str[])
{
	char * pch;
	pch = strtok (str," ,.-");
	printf("  %s  ",pch);
	while (pch != NULL)
	{
		print_list(head);
		list_add(pch);
		pch = strtok (NULL, " ,.-");
	}
	return 0;
}

int open_file(){
	char fname[60];
	char line [ 128 ];
	printf("Give the name of the file\n");
	scanf("%s",fname);
	
	
	f=fopen(fname,"r");
	if ( f!= NULL )
	{
		while ( fgets ( line, sizeof line, f ) != NULL ) /* read a line */
		{
			stringtoken(line);    //split line to tokens
		}
		fclose ( f );
	}
	else
	{
		printf("ERROR OPENING THE FILE");
		return(1);
	}
	return 0;
}
0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

© کپی رایت - www.irccode.ir