Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

c++ łączenie programów

Ostatnio zmodyfikowano 2013-02-23 16:13
Autor Wiadomość
Zaba...
Temat założony przez niniejszego użytkownika
c++ łączenie programów
» 2013-02-23 13:42:21
Witam, niedawno zacząłem zabawę z c++ (używam code::Blocks) i proszę o pomoc bardziej zaawansowanych użytkowników/forumowiczów w takiej kwestii:

mam 4 programy i chciałbym się dowiedzieć jak można je połączyć (czy jest taka możliwosć) jakich komend/skryptów użyć.
Mówiąc wprost, po prostu jak mam to napisać, co i gdzie mam zrobić aby działało i spełniało swoją funkcję.
Z góry dzięki za zainteresowanie.
Poniżej zamieszczam te programy:

1. Zapis do pliku tekstowego
C/C++
#include<stdio.h>
#include<conio.h>

int main()
{
    FILE * out;
    float pi = 3.1415;
    int i = 100;
    char znak = 'A';
   
    // otwarcie pliku tekstowego do zapisu
    if(( out = fopen( "plik tekstowy.txt", "wt" ) ) == NULL )
    {
        fprintf( stderr, "Nie mozna otworzyc pliku.\n" );
        return 1;
    }
   
    // fprintf - zapis do pliku out
    fprintf( out, "\n Raport z programu\n\n" );
    fprintf( out, "Wydruk zmiennej typu float pi = %6.4f \n", pi );
    fprintf( out, "Wydruk zmiennej typu int i = %3i \n", i );
    fprintf( out, "Wydruk zmiennej typu char znak = %c \n", znak );
   
    // zamkniecie pliku
    fclose( out );
    printf( "\nDane zostaly zapisane do pliku plik tekstowy.txt" );
    getch();
    return 0;
}

2. Odczyt z pliku tekstowego

 
C/C++
#include<stdio.h>
#include<conio.h>
int main()

{
    FILE * in;
    char bufor[ 512 ];
   
    // otwarcie pliku tekstowego do odczytu: rt
    if(( in = fopen( "plik tekstowy.txt", "rt" ) ) == NULL )
    {
        fprintf( stderr, "\nBlad otwarcia pliku dyskowego!\n" );
        return 1;
    }
    printf( "\n zawartosc pliku: plik tekstowy.txt\n" );
   
    // odczyt z pliku
    while( feof( in ) == 0 ) // (koniec pliku)
    {
        fgets( bufor, 512, in ); // odczyt jednej linii tekstu
        printf( "%s", bufor );
    }
   
    // zamkniecie pliku
    fclose( in );
    getch();
    return 0;
}



3. Zapis do pliku binarnego
C/C++
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //memset

// definicja struktury osoba
typedef struct {
    char imie[ 25 ];
    char nazwisko[ 25 ];
    int wiek;
} osoba;

int main()
{
    FILE * plik;
    int n, i;
    osoba ludzie[ 100 ];
   
    memset( ludzie, 0, sizeof( ludzie ) ); // czyszczenie tablicy ludzie
   
    printf( "Zapisywanie rekordow do pliku\n\r" );
    printf( "Ile rekordow chcesz zapisac ? :\n" );
    scanf( "%i", & n );
   
    // otwarcie pliku do zapisu - handler: uchwyt pliku
    if(( plik = fopen( "records.dat", "wb" ) ) == NULL )
    {
        printf( "Blad otwarcia pliku\n" );
        return 1;
    }
    // ustawienie pozycji w pliku na poczatek
    fseek( plik, 0L, SEEK_SET );
   
    for( i = 1; i <= n; i++ )
    {
        printf( "\n Imie:" );
        scanf( "%s", ludzie[ i ].imie );
        printf( " Nazwisko:" );
        scanf( "%s", ludzie[ i ].nazwisko );
        printf( " Wiek:" );
        scanf( "%i", & ludzie[ i ].wiek );
       
        // zapis jednego rekordu do pliku
        fwrite( & ludzie[ i ], sizeof( osoba ), 1, plik );
    }
   
    fclose( plik );
    system( "pause" );
    return 0;
}


4. Odczyt z pliku binarnego:

C/C++
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

// definicja struktury osoba
typedef struct {
    char imie[ 25 ];
    char nazwisko[ 25 ];
    int wiek;
} osoba;

int main()
{
    FILE * plik;
    int n, licznik =- 1;
    osoba ludzie[ 100 ];
    printf( "\n\rProgram odczytuje liste rekordow z pliku records.dat\n\r" );
    memset( ludzie, 0, sizeof( ludzie ) ); // czyszczenie tablicy ludzie
   
    // otwarcie pliku do odczytu - plik: uchwyt pliku
    if(( plik = fopen( "records.dat", "rb" ) ) == NULL )
    {
        printf( "Blad otwarcia pliku\n" );
        return 1;
    }
   
    // ustawienie pozycji w pliku na poczatek
    fseek( plik, 0L, SEEK_SET );
    // odczyt kolejnych rekordow
    while( 1 )
    {
        licznik++;
        // odczyt jednego rekordu
        fread( & ludzie[ licznik ], sizeof( osoba ), 1, plik );
       
        if( feof( plik ) ) break; // wyjscie z petli jezeli koniec pliku
       
        printf( "\n\r Nr rekordu:%i\n\r", licznik );
        printf( " Imie: %s\n\r", ludzie[ licznik ].imie );
        printf( " Nazwisko: %s\n\r", ludzie[ licznik ].nazwisko );
        printf( " Wiek: %i\n\r", ludzie[ licznik ].wiek );
    };
    printf( "\n\rOdczytano %i rekord(y)ow\n\r", licznik );
    fclose( plik );
    system( "pause" );
    return 0;
}
P-76784
Kopczak1995
» 2013-02-23 13:50:37
Najprościej jak to można zrobić:
W głównym programie czyli najczęściej main.cpp musisz dołączyć pozostałe pliki. Działa to podobnie jak w przypadku dodawania zwykłych bibliotek z tą różnicą, że zamiast <> używasz cudzysłowów "plik.cpp". Czyli przykładowo:
C/C++
//plik main.cpp
#include "plik1.cpp"
#include "plik2.cpp"
#include "plik3.cpp"
#include "... itd"

int main()
{
    //to co tam robisz
}
Jeżeli chcesz aby plik znajdował się w innym folderze to nikt nie broni ci tego zrobić ale pamiętaj aby poprawną ścieżkę ustawić. Przykładowo:
C/C++
//plik main.cpp
#include "inny_folder/plik1.cpp"

int main()
{
    //to co tam robisz
}
P-76785
megatron
» 2013-02-23 14:18:43
najłatwiej to by zrobić menu wyboru switch i case
albo if i else
jak byś chciał połączyć sposobem takim jak zaproponował Kopczak1995 to byś musiał się trochę nabawić, ponieważ możesz mieć tylko jedno
 
int main()
P-76788
Kopczak1995
» 2013-02-23 14:24:50
@Up
Zawsze poszczególne "mainy" można potraktować jako zwykłe funkcje - kto mu broni :)
P-76790
Zaba...
Temat założony przez niniejszego użytkownika
Dzięki Panowie!
» 2013-02-23 14:31:16
spróbuje narazie sposobem megatrona skoro jest to łatwiejsze podejscie. Jak się uda to poinformuję.
Mile widziane będą kolejne sugestie jak to powiązać aby zadziałało.
P-76794
Krzysiek318k
» 2013-02-23 16:13:25
Tu masz profesjonalne rozwiązanie:
» Kurs C++Dzielenie kodu na kilka plików źródłowych lekcja
P-76799
« 1 »
  Strona 1 z 1