Ve İlk Proje Gelir...
-
NmC bunu yazdı:
-----------------------------
bilmece bunu yazdı:
-----------------------------
altindaki tum dizin ve dosyalar taranacak
yeni biri için bu işlem biraz zor gibi.
-----------------------------http://stackoverflow.com/questions/12489/how-do-you-get-a-directory-listing-in-c
recursive'in ne olduğunu da biliyosa olay çözülür..
FireX görse şimdi gene dalga geçcek benle :D Ama en temiz yol bu :P
-----------------------------evet evet recursive in mantığını biliyorum hatta geçen sene final sorumuzun biri recursive ile alakalıydı.
neyse, sağol..
-
NmC bunu yazdı:
-----------------------------
bilmece bunu yazdı:
-----------------------------
altindaki tum dizin ve dosyalar taranacak
yeni biri için bu işlem biraz zor gibi.
-----------------------------http://stackoverflow.com/questions/12489/how-do-you-get-a-directory-listing-in-c
recursive'in ne olduğunu da biliyosa olay çözülür..
FireX görse şimdi gene dalga geçcek benle :D Ama en temiz yol bu :P
-----------------------------haci bu alt klasörlere inmez ama netten bulduğum bi fonksiyonu veriyim amacı farklıydı biraz değişiklik yaptım büyük küçük harf duyarlı arama işlemi yapabilirsin
[CODE]
#include
#include
const char *mystristr(const char *haystack, const char *needle)
{
if ( !*needle )
{
return haystack;
}
for ( ; *haystack; ++haystack )
{
if ( toupper(*haystack) == toupper(*needle) )
{
/*
* Matched starting char -- loop through remaining chars.
*/
const char *h, *n;
for ( h = haystack, n = needle; *h && *n; ++h, ++n )
{
if ( toupper(*h) != toupper(*n) )
{
break;
}
}
if ( !*n ) /* matched all of 'needle' to null termination */
{
return haystack; /* return the start of the match */
}
}
}
return 0;
}
//--------------------------------------------------------------------------------
BOOL IsDots(const TCHAR* str)
{
if(strcmp(str,".") && strcmp(str,"..")) return FALSE;
return TRUE;
}
//------------------------------------------------------
BOOL SearchFile_(const TCHAR* sPath,char *SearchName)
{
HANDLE hFind; // file handle
WIN32_FIND_DATA FindFileData;
TCHAR DirPath[MAX_PATH];
TCHAR FileName[MAX_PATH];
strcpy(DirPath,sPath);
strcat(DirPath,"\\*"); // searching all files
strcpy(FileName,sPath);
strcat(FileName,"\\");
// find the first file
hFind = FindFirstFile(DirPath,&FindFileData);
if(hFind == INVALID_HANDLE_VALUE) return FALSE;
strcpy(DirPath,FileName);
bool bSearch = true;
while(bSearch)
{ // until we find an entry
if(FindNextFile(hFind,&FindFileData))
{
if(IsDots(FindFileData.cFileName))
continue;
strcat(FileName,FindFileData.cFileName);
if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{ // we have found a directory, recurse
if(mystristr(FindFileData.cFileName,SearchName)) //duyarli arama mystristr
printf("klasor %s\n",FileName);
SearchFile_(FileName,SearchName);
strcpy(FileName,DirPath);
}
else
{
if(mystristr(FindFileData.cFileName,SearchName)) //duyarli arama mystristr
printf("Dosya %s\n",FileName);
strcpy(FileName,DirPath);
}
}
else
{ // no more files there
if(GetLastError() == ERROR_NO_MORE_FILES)
bSearch = false;
else
{ // some error occurred; close the handle and return FALSE
FindClose(hFind);
return FALSE;
}
}
}
FindClose(hFind); // close the file handle
return 0;// RemoveDirectory(sPath); // remove the empty directory
}
int main()
{
SearchFile_("C:\\Windows","DosyaAdi.exe");
getchar();
return 0;
}
[/CODE] -
yazdim biseyler. devaminida sen getir. getiremezsen yazarim. acayip canim sklyo zaten :-)
find_replace.h
#ifndef FIND_REPLACE_000 #define FIND_REPLACE_000 #pragma once #include #include #include #include struct find_replace { const _TCHAR *fr_path; const _TCHAR *fr_find; const _TCHAR *fr_replace; }; #endifstdafx.h
#pragma once #include "find_replace.h"
find_replace.cpp
// find_replace.cpp : Defines the entry point for the console application. // #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); _tcprintf(_T("%s\n"), wfd.cFileName); } } while (FindNextFile(hWlk, &wfd)); FindClose(hWlk); SetCurrentDirectory(pwCurrent); } PRIVATE int find_text(struct find_replace *pfr) { FILE *f; if (!(f = _tfopen(pfr->fr_path, _T("r")))) return -1; /******************************************** * burda dosya icinde pfr->fr_find aranicak * * eger bulunursa ekrana yazdiriilicak. * ********************************************/ fclose(f); return 0; } PRIVATE int replace_text(struct find_replace *pfr) { FILE *f; if (!(f = _tfopen(pfr->fr_path, _T("r")))) 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; buff[0] = towlower(*(p + len - 4)); buff[1] = towlower(*(p + len - 3)); buff[2] = towlower(*(p + len - 2)); buff[3] = towlower(*(p + len - 1)); buff[4] = _T('\0'); return !_tcscmp(buff, _T(".txt")); } -
bilmece ve GrN , teşekkürler, bunları inceleyeceğim..
-
programin komut satirindan calisma sekli soyle;
find_replace -f C:\docume~1\Articles\ "Gurhan Polat"
find_replace -r C:\docume~1\Articles\ "Gurhan Polat" "Baska Biri"
yaptigi is ise, C:\docume~1\articles\ klasorunu ve alt klasorleri dolasiyor ve *.txt uzantili dosyalarda "Gurhan Polat" yazisini ariyor.[-f icin gosteriyor, -r icin, "Gurhan Polat" yerine "Baska Biri" yazisini basiyor...]
dosyalari acmak, veriyi cekmek, karsilastirmak sana kaldi. bos biraktigim yerlere yazabilirsin kodunu ;-) hadi kolay gele -
evet arkadaşlar ilk projemi almış bulunmaktayım nasıl yapacağım hakkında pek bi fikrim yok programı da tam anlamış değilim açıkçası.. projeyi okur okumaz buraya koştum:)
Keşke önce www.google.com'a koşup takıldığın yerleri sorsaydın; anladığım kadarıyla bu bir okul projesi ve okul, bir şeyleri öğrenmen için deneme/yanılma yapacağın yegane yerdir. Okuldan bir kere mezun olduktan sonra geri dönüp en başta öğrenmen gereken yerleri asla öğrenme imkanın olmaz.
Nacizane önerim yap/boz/kır/değiştir; böylece ne yapacağını/ne yapmak istediğini- bir proje nedir? neresinden başlanır? nasıl planlanır? nasıl sonuca varılır? bunları kavramak bence bu programı yazmaktan daha önemli- tam anla ve ondan sonra takıldığın yerleri sor.
Üniversiteye giren herkes zaten bir şekilde diplomasını alıyor; ama diploma her kapıyı açmıyor.
Olayın bir diğer boyutu da burada: Kısaca, iş görüşmesinde kendisine sorulan soruların cevaplarını ubuntuforum'da isteyen elemana bizzat iş görüşmesini yapan
kişinin süper cevabı ...
http://ubuntuforums.org/showthread.php?p=5470051#post5470051
Gavurların dediği gibi: that's my 2 cents.
Kolay gelsin.
-
anlaşılan bu müride ya bizim sınıftan ya da 2. öğretimden :) proje hakkında soru sormakta benden önce davranmış
-
bende lisede bilişim bölümüne nasıl 3. girdiğimi merak ediyodum, demek böyle öğrenciler sayesindeymiş :| :)
-
Stargazer bunu yazdı:
-----------------------------
bende lisede bilişim bölümüne nasıl 3. girdiğimi merak ediyodum, demek böyle öğrenciler sayesindeymiş :| :)
-----------------------------iyi b.k yedin :|
-
elfkrc bunu yazdı:
-----------------------------Stargazer bunu yazdı:
-----------------------------
bende lisede bilişim bölümüne nasıl 3. girdiğimi merak ediyodum, demek böyle öğrenciler sayesindeymiş :| :)
-----------------------------iyi b.k yedin :|
-----------------------------tuttum yorumu :D
