folder Tahribat.com Forumları
linefolder C - C++
linefolder C De Hata Ayıklama Yardım.



C De Hata Ayıklama Yardım.

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alix12
    alix12's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    Arkadaşlar elimde c dilinde yazdığım bi program var ama bi türlü hatalarını ayıklayamadım.Amacım cmd ekranından bir dizin girilecek, girilen dizinin içindeki alt klasörler dahil olmak üzere tüm txt uzantılı dosyaları arayacak..ardından sizden txt uzantılı dosyaların içinde aramanız için bir cumle girmenizi isteyecek.ve bulduğu tüm txt uzantılı dosyalarda bu cümleyi arayacak.eğer girilen cümle bulunursa sizden tekrar bir cümle girmenizi isteyecek txt nin içinde bulduğu ilk girdiğimiz cümleyi yenisiyle değiştirip değiştirilen cümlenin iki kelime öncesiyle iki kelime sonrasını ekrana yazdıracak...Bu arada büyük harf küçük harf duyarlılığı olacak..arkadaşlar acil olarak yardımlarınızı bekliyorum proje sunumu yarın.. bulana benden çikolata ;

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<windows.h>
    #include<conio.h>
    
    void txtAra(const char *);
    int cumleAra(char [1024],char [100],char [100]);
    
    main(){
           char dizin;
           gets(&dizin);
           txtAra(&dizin);
           printf("\n\n====================================================");
           getch();
           }
    //===============================================================================================================
           void txtAra(const char *dizin)
           {
               WIN32_FIND_DATA bulunandosya;
               HANDLE anlikdosya; 
               char aranandizin[1024]={0};
               char yeniCumle[100];
               char cumle[100];
               sprintf(aranandizin,"%s\\*",dizin);
               anlikdosya=FindFirstFile(aranandizin,&bulunandosya);
               char tumDizin[1024]={0};
               int sonuc,kontrol1;
               
               printf("\nGirilen %s dizininde bulunan .txt uzantili dosyalarin icinde \n",&dizin);
               printf("\nAramak istediginiz cumleyi giriniz : ");
               scanf("%s",cumle);
               printf("girdiginiz cumleyi hangi cumle ile degistirmek istiyorsunuz?\ngiriniz : ");
               scanf("%s",yeniCumle);
               printf("====================================================\n\n");
               
               
               for(;;){
                            
                            if(bulunandosya.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
                            {
                                if(strcmp(bulunandosya.cFileName,".")&&strcmp(bulunandosya.cFileName,"..")){
                                sprintf(aranandizin,"%s\\%s",dizin,bulunandosya.cFileName);
                                txtAra(aranandizin);}
                            }    
                             
                            
                            
                            else{
                                 if(!strcmp(bulunandosya.cFileName+strlen(bulunandosya.cFileName)-4,".txt")){
                                 sprintf(tumDizin,"%s\\%s\n",dizin,bulunandosya.cFileName);
                                 cumleAra(tumDizin[],cumle[],yeniCumle[]);}
                                 sonuc=cumleAra(tumDizin[],cumle[],yeniCumle[]);
                                   if(sonuc==1){kontrol1=sonuc;}
                                }
                            
                            
                            if(FindNextFile(anlikdosya,&bulunandosya)== 0 ){
                                return;}
           
                      }
                      
                      
                      if(kontrol1 != 1)
                      printf("Aradiginiz cumle girdiginiz dizindeki dosyalarin iceriginde yok!");
           }
    
    
    //===============================================================================================================
    
           
           int cumleAra(char tumdizin[],char cumle[],char yeniCumle[])
           {    
                FILE *openTxt;
                char formatliDizin[1024];
                char bulunanCumle[512];
                char tumMetin[4096]={0};
                int dizinUzunlugu = 0 , metinuzunlugu = 0 , cumleUzunlugu=0 , kontrol2 = 0;
                int a,b,i,j,k,sayac,katarTut,iki=2,gerisayac,ilerisayac,yaz;
                char *kontrol;
                dizinUzunlugu=strlen(tumdizin);
                metinUzunlugu=strlen(tumMetin);
                cumleUzunlugu=strlen(cumle);
               
                //==================================================================
                j=0;                                         //kesikli şeritler arasında                           
                for(i=0; i<dizinUzunlugu; i++)               //kalan kısım tümDizin
                {                                            //stringimizin formatını        
                         formatliDizin[i+j] = tumdizin[i];   //değiştirmeye yarar
                         if(tumdizin[i] == "\\" )
                         {                                   // örnek format;
                         j=j+1;                              // c:\xdos\y
                         formatliDizin[i+j] = tumdizin[i];   // değiştirilmiş hali; ; 
                         }                                   // c:\\xdos\\y
                }         
                formatliDizin[i+j+1] = '\0';                 
                                              // *** fopen ile dosya açmak için ***           
               //=================================================================== 
                
               openTxt=fopen(formatliDizin,"r");
               fgets(tumMetin,4096,formatliDizin);
               fclose(openTxt);
               
               kontrol=strstr(tumMetin,cumle);
               
                   if(kontrol != NULL)
                   {
                   kontrol2=1;
                   printf("%s\n\ndizininin icinde bulunan cumle;\n",tumdizin);
                
                       for(a=0;a<metinUzunlugu-cumleUzunlugu+1;a++)
                       {
                          
                          if(a==0){
                                  katarTut=a;                              
                                  katarTut2=a;
                                  sayac=0;
                                  gerisayac=0;
                                  ilerisayac=0;
                                  gerisar=0
                                  ilerisar=0
                                   for(b=0;b<cumleUzunlugu;b++)
    							   {                  
                                        if(cumle[b]==tumMetin[katarTut])
                                        {
                                            sayac=sayac+1; 
                                            katarTut=katarTut+1;
                                                            
                                            if(sayac==cumleUzunlugu)
                                            {
                                               while(iki>0  && ((katarTut2-1)!=0) && (katarTut2!=0))
                                               {
                                                if(tumMetin[(katarTut2-1]==" " || (tumMetin[katarTut2-1]=="\n") || (tumMetin[katarTut2-1]==".") || (tumMetin[katarTut2-1]==","))  
                                                {iki=iki-1;
                                                gerisar=gerisayac;}
                                                     
                                                     gerisayac=gerisayac+1;
                                                     katarTut2--;
                                               }
                                               
                                               while(iki>0  && (tumMetin[katarTut2+cumleUzunlugu]!=NULL))
                                               {
                                                if(tumMetin[katarTut2+cumleUzunlugu]==" ") || (tumMetin[katarTut2+cumleUzunlugu]=="\n") || (tumMetin[katarTut2+cumleUzunlugu]==".") || (tumMetin[katarTut2+cumleUzunlugu]==",")  
                                                {iki=iki-1;
                                                ilerisar=ilerisayac;}
                                                     
                                                     ilerisayac=ilerisayac+1;
                                                     katarTut2++;
                                               }
                                               
                                               for(yaz=a-gerisar;yaz<(a+ilerisar);yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                               
                                               printf("Eski metinde bulunan cumle sirasi : %d\n\n",&a);
                                               
                                               printf("\n\nDegistirilmis metin : \n");
                                               
                                               for(yaz=a-gerisar;yaz<a;yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                               
                                               printf("%s",yeniCumle);
                                                
                                               for(yaz=a;yaz<a+ilerisar;yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                            }                         
                                        }               
                                    }
                                  }
                          
                          
                          if((tumMetin[a]==".") || (tumMetin[a]=="\n") || (tumMetin[a]==" ") || (tumMetin[a]==","))
                           {
                                  katarTut=a+1;                              
                                  katarTut2=a+1;
                                  sayac=0;
                                  gerisayac=0;
                                  ilerisayac=0;
                                  gerisar=0
                                  ilerisar=0
                                   for(b=0;b<cumleUzunlugu;b++)
    							   {                  
                                        if(cumle[b]==tumMetin[katarTut])
                                        {
                                            sayac=sayac+1; 
                                            katarTut=katarTut+1;
                                                            
                                            if(sayac==cumleUzunlugu)
                                            {
                                               while(iki>0  && ((katarTut2-1)!=0) && (katarTut2!=0))
                                               {
                                                if(tumMetin[(katarTut2-1]==" " || (tumMetin[katarTut2-1]=="\n") || (tumMetin[katarTut2-1]==".") || (tumMetin[katarTut2-1]==","))  
                                                {
    											iki=iki-1;
                                                gerisar=gerisayac;
    											}
                                                     
                                                     gerisayac=gerisayac+1;
                                                     katarTut2--;
                                               }
                                               
                                               while(iki>0  && (tumMetin[katarTut2+cumleUzunlugu]!=NULL))
                                               {
                                                if(tumMetin[katarTut2+cumleUzunlugu]==" ") || (tumMetin[katarTut2+cumleUzunlugu]=="\n") || (tumMetin[katarTut2+cumleUzunlugu]==".") || (tumMetin[katarTut2+cumleUzunlugu]==",")  
                                                {
    											iki=iki-1;
                                                ilerisar=ilerisayac;
    											}
                                                     
                                                     ilerisayac=ilerisayac+1;
                                                     katarTut2++;
                                               }
                                                
                                               for(yaz=a-gerisar;yaz<(a+ilerisar);yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                               
                                               printf("Eski metinde bulunan cumle sirasi : %d\n\n",&a);
                                               
                                               printf("\n\nDegistirilmis metin : \n");
                                               
                                               for(yaz=a-gerisar;yaz<a;yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                               
                                               printf("%s",yeniCumle);
                                                
                                               for(yaz=a;yaz<a+ilerisar;yaz++)
                                               {printf("%s",tumMetin[yaz]);}
                                            }                         
                                        }               
                                    }
                            }
                          
                        }  
                    }
    	   return kontrol2;              
           }
    
    //==============================================================================================================
    


    marketinizde.com
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    mstraker
    mstraker's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Kocaeli üniversitesi pilot forum olarak tahribatı mı seçti bu sene ne yaptı :)


    what makes you think i am not?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alix12
    alix12's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    öyle oldu galiba :D  eeee yokmu yardım edecek hayır sever?? yarın son gün YARDIMMM edinn!! :D


    marketinizde.com
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    mstraker
    mstraker's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    valla yardım etmek isterim de makinada 64 bit win7 var değişik sıkıntılara giriyor C compiler ....

     

    Fakat gözle gördüğüm bir hatayı söyleyeyim katarTut2 diye değişkene a'yı atamışsın.Fakat yukarısında katarTut2 yi tanımlamamışsın..

     

    116

                                  katarTut2=a;


    what makes you think i am not?
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    mstraker bunu yazdı:
    -----------------------------

    Kocaeli üniversitesi pilot forum olarak tahribatı mı seçti bu sene ne yaptı :)


    -----------------------------

     

    Ben dicektim şimdi :D

    Hep aynı soruları görüyorum..

    Kodlarınızı ortalıkta vermeyin bence.. Sizde uygulaması var mı bilmiyorum ama bizde ödevler arası benzerlik yakalarlarsa direkt -100 veriyolar ödeve :|

    PS:

    Hocam senin çok çalışman gerek daha.. Bildiğim kadarı ile ödeviniz inputu konsoldan parametre olarak alacaktı. Sen program içinde alıyosun, ayrıca main fonksiyonun değer döndürmüyor ve getch() kullanıyosun.. Konsol uygulaması mantığına ters :))


    There are 10 types of people in the world. Those who knows binary and those who dont...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alix12
    alix12's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    mstraker bunu yazdı:
    -----------------------------

    valla yardım etmek isterim de makinada 64 bit win7 var değişik sıkıntılara giriyor C compiler ....

     

    Fakat gözle gördüğüm bir hatayı söyleyeyim katarTut2 diye değişkene a'yı atamışsın.Fakat yukarısında katarTut2 yi tanımlamamışsın..

     

    116

                                  katarTut2=a;


    -----------------------------

     

    saol teşekkür ederim mstraker.ben bulmuştm bu hatayı da genede çözülmüyor sorun.galiba sonsuz döngüye giriyor..


    marketinizde.com
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alix12
    alix12's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    NmC bunu yazdı:
    -----------------------------

    ...

    Kodlarınızı ortalıkta vermeyin bence.. Sizde uygulaması var mı bilmiyorum ama bizde ödevler arası benzerlik yakalarlarsa direkt -100 veriyolar ödeve :|

    PS:

    Hocam senin çok çalışman gerek daha.. Bildiğim kadarı ile ödeviniz inputu konsoldan parametre olarak alacaktı. Sen program içinde alıyosun, ayrıca main fonksiyonun değer döndürmüyor ve getch() kullanıyosun.. Konsol uygulaması mantığına ters :))


    -----------------------------

     

    doğru söylüyorsun da bende ki projeyi düzeltebilecek düzeydeki adamın zaten bu kodlara ihtiyacı olmaz herhalde. aynı olursa kodları yazıp gönderdiğinde sadece kendisine değil bana da zararı dokunacağını biliyordur.yani öyle umuyorum :)


    marketinizde.com
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    yine tahribattan bi birisine yazdigim kod var, azcik duzenle olayi cozersin ;-)

    find_replace.h

     

    #ifndef FIND_REPLACE_000
    #define FIND_REPLACE_000
    
    #pragma once
    
    #include <stdio.h>
    #include <conio.h>
    #include <tchar.h>
    #include <Windows.h>
    
    struct find_replace
    {
    	const _TCHAR *fr_path;
    	const _TCHAR *fr_find;
    	const _TCHAR *fr_replace;
    };
    
    #endif 


    stdafx.h

    #pragma once
    
    #include "targetver.h"
    #include "find_replace.h"

    find_replace.cpp

    #include "stdafx.h"
    
    #define PRIVATE static
    #define PUBLIC
    #undef MAX_PATH
    #define MAX_PATH 4096
    
    PRIVATE void walk_dir_rec(int (*)(struct find_replace *), struct find_replace *);
    PRIVATE void walk_dir(const _TCHAR *, int (*)(struct find_replace *), struct find_replace *);
    PRIVATE int find_text(struct find_replace *);
    PRIVATE int replace_text(struct find_replace *);
    PRIVATE BOOL check_ext(const _TCHAR *);
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	struct find_replace fr;
    	if (argc < 2) /*parametresiz olmaz.*/
    		return 0;
    	if (!_tcscmp(argv[1], _T("-f")) && argc > 3)/*bul ;-)*/
    	{
    		fr.fr_find = argv[3];
    		walk_dir(argv[2], find_text, &fr);
    	}
    	else if (!_tcscmp(argv[1], _T("-r")) && argc > 4)/*degistir.*/
    	{
    		fr.fr_find = argv[3];
    		fr.fr_replace = argv[4];
    		walk_dir(argv[2], replace_text, &fr);
    	}
    	_getch();
    	return 0;
    }
    
    
    
    PRIVATE void 
    	walk_dir(const _TCHAR *p, int (*pfn)(struct find_replace *), struct find_replace *pfr)
    {
    	SetCurrentDirectory(p);
    	walk_dir_rec(pfn, pfr);
    }
    
    
    PRIVATE void 
    	walk_dir_rec(int (*pfn)(struct find_replace *), struct find_replace *pfr)
    {
    	HANDLE hWlk;
    	_TCHAR pwCurrent[MAX_PATH];
    	WIN32_FIND_DATA wfd;
    
    	if (GetCurrentDirectory(2048, pwCurrent) < 0)
    		return;
    	
    	if ((hWlk = FindFirstFile(_T("*.*"), &wfd)) == INVALID_HANDLE_VALUE)
    		return;
    
    	do
    	{
    		if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))/*eger giris, bir dizinse*/
    		{
    			if ( /*'.' veya '..' dizin'in kendisine ve bir ustune linkidir;-)*/
    				!_tcscmp(_T("."), wfd.cFileName) ||
    				!_tcscmp(_T(".."), wfd.cFileName)
    				)
    				continue;
    			SetCurrentDirectory(wfd.cFileName);
    			walk_dir_rec(pfn, pfr);
    			SetCurrentDirectory(pwCurrent);
    		}
    		else
    		{
    			if (!check_ext(wfd.cFileName)) /*sadece *.txt uzanti*/
    				continue;
    			pfr->fr_path = wfd.cFileName;
    			pfn(pfr);
    		}
    
    	} while (FindNextFile(hWlk, &wfd));
    
    	FindClose(hWlk);
    	SetCurrentDirectory(pwCurrent);
    }
    
    
    PRIVATE int find_text(struct find_replace *pfr)
    {
    	FILE *f;
    	fpos_t pos;
    	_TCHAR *buff;
    	_TCHAR pwCurPath[MAX_PATH];
    	BOOL bl = TRUE;
    	int len, i, line, lnlen;
    
    	if (_tfopen_s(&f, pfr->fr_path, _T("r")) != 0)
    		return -1;
    	/********************************************
    	 * burda dosya icinde pfr->fr_find aranicak *
    	 * eger bulunursa ekrana yazdiriilicak.		*
    	 ********************************************/
    	fseek(f, 0, SEEK_END);
    	fgetpos(f, &pos);
    	fseek(f, 0, SEEK_SET);
    	buff = (_TCHAR *)malloc((size_t)pos);
    	
    	//
    	len = _tcslen(pfr->fr_find);
    
    	for (line = 1; _fgetts(buff, (int)pos - 1, f) != NULL; ++line)
    	{
    		lnlen = _tcslen(buff);
    		for (i = 0; i < lnlen - len; ++i)
    			if (!_tcsncmp(buff + i, pfr->fr_find, len))
    			{
    				if (bl){/*dizin ve dosya bilgisini bi kere bas;-)*/
    					GetCurrentDirectory(MAX_PATH, pwCurPath);
    					_tprintf(_T("Dir:%s\nFile:%s\n\n"), pwCurPath, pfr->fr_path);
    					bl = FALSE;
    				}
    				_tprintf(_T("Line:%d\nInd:%d\nLineText:%s\n"),
    					line, i, buff);
    				i += len;
    			}
    	}
    	fclose(f);
    	free(buff);
    	return 0;
    }
    
    
    PRIVATE int replace_text(struct find_replace *pfr)
    {
    	FILE *f;
    
    	if (_tfopen_s(&f, pfr->fr_path, _T("r")) != 0)
    		return -1;
    	/****************************************************
    	 * burda dosya icinde pfr->fr_find aranicak			*
    	 * eger bulunursa pfr->fr_replace ile degistirilip	*
    	 * dosyaya yazilicak ;-)							*
    	 ****************************************************/
    	fclose(f);
    	return 0;
    }
    
    /*uzanti kontrolu, yalnizca *.txt */
    PRIVATE BOOL check_ext(const _TCHAR *p)
    {
    	int len;
    	_TCHAR buff[5];
    	len = _tcslen(p);
    
    	if (len < 4)
    		return FALSE;
    
    	return 
    		towlower(*(p + len - 4)) == '.' &&
    		towlower(*(p + len - 3)) == 't' &&
    		towlower(*(p + len - 2)) == 'x' &&
    		towlower(*(p + len - 1)) == 't';
    		
    }
    

    main fonksiyonunda da goruldugu uzere
    -f parametresi ile arama -r ile ise degistirme fonksiyonlari ile walk_dir ordan da recursive dolasan walk_dir_rec cagriiliyo ;-)

    sen bunu duzenleyip kendi kilifina uydurabilirsin. belki yarari dokunur ;-)


    ..
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    alix12
    alix12's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    GrN bunu yazdı:
    -----------------------------

    ......
    main fonksiyonunda da goruldugu uzere
    -f parametresi ile arama -r ile ise degistirme fonksiyonlari ile walk_dir ordan da recursive dolasan walk_dir_rec cagriiliyo ;-)

    sen bunu duzenleyip kendi kilifina uydurabilirsin. belki yarari dokunur ;-)

     


    -----------------------------

     

    çok sağol GrN. teşekkürlerr


    marketinizde.com
Toplam Hit: 1661 Toplam Mesaj: 9