[Çözüldü] C++ ile bir dosyadaki karakterin karşısındaki değeri okumak

Başlatan apocuk, 27 Aralık 2014 - 23:51:14

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

apocuk

Arkadaslar elimde şöyle bir dosya var,

........
elektron sayısı=20
notron sayısı=19
.......


ben bu txt dosyasından elektron sayısı karşısındaki değeri okumasını ve isteğim doğrultusunda değiştirilmesini istiyorum.
Yardım edebilir misiniz?
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

ersinkandemir

Where there's a shell, there's a way.



apocuk

Tam olarak değil istediğim string ifadenin satırını bulup karşısındaki değeri değiştirecek bir fonksiyon olmalı
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4



rutku

Bu en hızlı ve kolay şekilde regex ile halledilebilir. İnternette bir çok örnek bulunmakta.
Hayallerini kodla ...

uKiriş
Mezgeldek

apocuk

bakıyorum arkadaşlar teşekkür ederim


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 28 Aralık 2014 - 16:21:15

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 100
int main(int argc, char* argv[])
{
    FILE *ifp, *ofp;

    ifp = fopen("C:/Users/Buttle/Desktop/test.txt","r");
    if (ifp == NULL) {
         printf("Dang it didn't work!\n");
    }
    else printf("Dang it did work!\n");

    char line[MAXLINE];

    int linnum = 1;
    if(fscanf(ifp,"%s",line) != NULL) {           
        printf("line number %d\n" , linnum++ );                   
        if (strcmp(line, "74.125.224.72")==0 ) {                         
            fputs("#74.125.224.72 asdf.com www.asdf.com",stdout);
            //fputs("#74.125.224.72 asdf.com www.asdf.com",ifp);
        } else if (strcmp(line, "#74.125.224.72")==0 ){
            fputs("74.125.224.72 asdf.com www.asdf.com",stdout);
           // fputs("#74.125.224.72 asdf.com www.asdf.com",ifp);
        } else fputs("We ain't found sh--.",stdout);
        //else fputs("We ain't found sh--.",ifp);

    }

    fclose(ifp);
    return 0;
}

burada verilen kod çalışıyor fakat ifadeyi bulup değiştiremedi


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 28 Aralık 2014 - 16:43:39

İlla kodun c++ ile yazılmış olmasına gerek yok istediğim işi c++ dosyamın içinde yapsın yeter.
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser

Alıntı yapılan: apocuk - 28 Aralık 2014 - 16:00:00
bakıyorum arkadaşlar teşekkür ederim


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 28 Aralık 2014 - 16:21:15

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 100
int main(int argc, char* argv[])
{
    FILE *ifp, *ofp;

    ifp = fopen("C:/Users/Buttle/Desktop/test.txt","r");
    if (ifp == NULL) {
         printf("Dang it didn't work!\n");
    }
    else printf("Dang it did work!\n");

    char line[MAXLINE];

    int linnum = 1;
    if(fscanf(ifp,"%s",line) != NULL) {           
        printf("line number %d\n" , linnum++ );                   
        if (strcmp(line, "74.125.224.72")==0 ) {                         
            fputs("#74.125.224.72 asdf.com www.asdf.com",stdout);
            //fputs("#74.125.224.72 asdf.com www.asdf.com",ifp);
        } else if (strcmp(line, "#74.125.224.72")==0 ){
            fputs("74.125.224.72 asdf.com www.asdf.com",stdout);
           // fputs("#74.125.224.72 asdf.com www.asdf.com",ifp);
        } else fputs("We ain't found sh--.",stdout);
        //else fputs("We ain't found sh--.",ifp);

    }

    fclose(ifp);
    return 0;
}

burada verilen kod çalışıyor fakat ifadeyi bulup değiştiremedi


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 28 Aralık 2014 - 16:43:39

İlla kodun c++ ile yazılmış olmasına gerek yok istediğim işi c++ dosyamın içinde yapsın yeter.

ifp = fopen("C:/Users/Buttle/Desktop/test.txt","r");

satırında ki "C:/Users/Buttle/Desktop/test.txt" dizinini kendinize göre değiştirdiniz mi ?

XFCE ROCKS !
Powered by Thunar & XFWM4



apocuk

evet yaptım tabi, arkadaşlar bir bash komutu ile istenilen şey yapılıyor
mesela terminalden
sed -i 's/ = 24/=26/g' *.hsd
şu kod ile rahatlıkla bulup değiştiriyorum peki bu kod parçacığını c++ nasıl çalıştıracağım?
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser

Alıntı yapılan: apocuk - 28 Aralık 2014 - 17:47:00
evet yaptım tabi, arkadaşlar bir bash komutu ile istenilen şey yapılıyor
mesela terminalden
sed -i 's/ = 24/=26/g' *.hsd
şu kod ile rahatlıkla bulup değiştiriyorum peki bu kod parçacığını c++ nasıl çalıştıracağım?

en basit haliyle bu şekilde çağırabilirsiniz.

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
   system("./script_adı");
   return 0;
}



XFCE ROCKS !
Powered by Thunar & XFWM4



apocuk

yalnız burada sıkıntı şu değişmesi gereken o sayıları .sh kodunu sürekli açıp güncellemem gerekir buda ihtiyacım olan
şey değil zaten manuel olarak değiştirmemek için bu koda eklemek istiyorum.
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser

Alıntı yapılan: apocuk - 28 Aralık 2014 - 18:01:35
yalnız burada sıkıntı şu değişmesi gereken o sayıları .sh kodunu sürekli açıp güncellemem gerekir buda ihtiyacım olan
şey değil zaten manuel olarak değiştirmemek için bu koda eklemek istiyorum.

sprintf ve buffer kullanarak sistem argümanlarını program akışına göre düzenleyebilirsiniz.

XFCE ROCKS !
Powered by Thunar & XFWM4



apocuk

@reverser nasıl kullanacağım bir örnek verebilir misiniz?
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser

Alıntı yapılan: apocuk - 28 Aralık 2014 - 18:37:23
@reverser nasıl kullanacağım bir örnek verebilir misiniz?

şimdi, anladığım kadarıyla

sed -i 's/ = 24/=26/g' *.hsd

bu betiği yazdığınız c programı içinden çağırmak aynı zamanda da 24 / 26 değerlerini değiştirmek istiyorsunuz doğrumu anlamışım ?

XFCE ROCKS !
Powered by Thunar & XFWM4



apocuk

aynen öyle aslında ordaki rakamlarıda n=n+1 gibi bir değişkene bağlayacağım
Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser

Alıntı yapılan: apocuk - 28 Aralık 2014 - 18:56:22
aynen öyle aslında ordaki rakamlarıda n=n+1 gibi bir değişkene bağlayacağım

klavyeden girdiğiniz tam sayı degerlerini bash betiği içine atıyoruz daha sonra çağırıyoruz. Bu örnek doğrultusunda n+1 işlemini for döngüsü ile yapabilirsiniz.

#include <stdio.h>
#include <stdlib.h>

#define MAX 256


/* 
  Globals
*/

char buffer[MAX];
int x,y;

int
main(int argc, char *argv[])
{
   printf("Art arda iki tam sayi deger giriniz >");
   scanf("%d",&x);
   scanf("%d",&y);
   
   sprintf(buffer,"sed -i 's/ = %d/=%d/g' *.hsd",x,y);
   system(buffer);
   return 0;   
}

XFCE ROCKS !
Powered by Thunar & XFWM4



apocuk

Mecburiyet Esaretin Diğer Adıdır.....
http://abdurrahmanakturk.wordpress.com/

Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4