Προς το περιεχόμενο

help for Pascal or C


chr_nikol

Προτεινόμενες αναρτήσεις

Δημοσ.

ΚΑΛΗΣΠΕΡΑ,

θελω help με ενα προγραμμα που πρεπει να κανω...

εχω ενα αρχειο κειμενου, "test.dat"

το οποιο εχει γραμμες ισως κε μεγαλυτερες απο 1000 char...

θελω ενα προγραμμα σε C η Pascal, το οποιο θα ψαχνει να βρει μεσα στο κειμενοτο χαρακτηρα $, και θα ψαχνει πριν το $ ωσ να βρει τουσ χαρακτηρες <#,

και μετα το $ ως να βρει τους #>

μολις τα βρει, να γραφει σε ενα νεο αρχειο κειμενου με αυτη τη μορφη:

 

<#hdafjhgjdfag$sbgsbgsbg#>

<#gsbsgdabgb$sbvdabadf#>

...

...

 

μπορει κανεις να βοηθησει ????

 

το εκανα σε pascal, και δουλευει σωστα μεχρι και για κειμενο με γραμμες μεγεθους ως 256 char...

απο κει και περα ομως κανει mlk!!!

δλδ ειτε δε βρισκει τπτ, ειτε βγαζει:

<#gshsdg$sgafg><adgajkdfgajgjafg

 

 

περιμενω βοηθεια απο οποιον μπορει να βγαλει καποια ακρη....

Δημοσ.

prota prepei na dieukriniseis kati:

 

1. ta strings '<#' kai '#>' ypothetoume oti yparxoun stin idia grammi h' mporei na einai se diaforetikes grammes?

2. yparxei periptosi anamesa sta strings '<#' kai '#> na yparxei '<#' h'/kai '#>', diladi mporoun auta na einai nested?

 

episis, giati na kaneis tin zoi sou dyskoli psaxnontas prota ton xaraktira '$'? Arkei nomizo na psaxneis na breis starting tag '<#' kai closing tag '#>' ektos kai an symbenei kati allo anamesa tous pou den exeis dieukrinisei.

Δημοσ.

1. ta strings logika iparxun stin idia grami, ektos ki an to programa mas exi provlima ke den boresi na ta pari ola ke ta spasi...

pantos sto arxio ine panta se mia grami...

2. den borun na ine nested...

 

-den epimenw na psaxno to xaraktira $...

arki ke kapia lisi opos les, arki na ine dilomena kapu se define wste na boro na alakso tus dio xaraktires an xriasti sto mellon...

(iparxei pithanotita na ginun '/#' '#\')

 

thanx for the support

Δημοσ.

loipon to parakato to exo testarei se linux me gcc kai paizei kanonika.

 

BUF_SIZ: edo orizeis to megisto megethos mias grammis

INPUT_FILENAME: to arxeio apo to opoio tha diabaseis

OUTPUT_FILENAME: to arxeio sto opoio tha grapseis

START_TAG & END_TAG: ta delimiters sou

 

to programma proypothetei oti ta <# kai #> briskontai stin idia grammi kai oti to BUF_SIZ einai arketa megalo oso i megalyteri grammi + 1 xaraktiras. episis mia grammi mporei na periexei mono ena <# ... #>.

 

mporeis na tropopoiiseis to programma gia na antimetopiseis perissotera <#...#> se mia grammi,

nested <#...#> h' kai multi-line <#...#>.

 

elpizo na boithisa :)

 

 

>

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

#define BUF_SIZ 256
#define INPUT_FILENAME "/path/to/input.dat"
#define OUTPUT_FILENAME "/path/to/output.dat"
#define START_TAG "<#"
#define END_TAG "#>"


int main(int argc, char **argv) {

 FILE *fp_input = NULL, *fp_output = NULL;
 char *buffer = NULL, *buffer1 = NULL, *buffer2 = NULL, *buffer3 = NULL;

 buffer = (char *) malloc(BUF_SIZ*sizeof(char));
 if (!buffer) {
    printf("No memory!\n");
    exit(EXIT_FAILURE);
 }


 if ((fp_input = fopen(INPUT_FILENAME, "r")) == NULL) {
   printf("Could not open '%s' for read.\n", INPUT_FILENAME);
   exit(EXIT_FAILURE);
 }
 if ((fp_output = fopen(OUTPUT_FILENAME, "w")) == NULL) {
   printf("Could not open '%s' for write.\n", OUTPUT_FILENAME);
   exit(EXIT_FAILURE);
 }

 while (fgets(buffer, BUF_SIZ, fp_input) != NULL) {
      if ((buffer1 = strstr(buffer, START_TAG)) != NULL && (buffer2 = strstr(buffer, END_TAG)) != NULL) {
          buffer3 = buffer1;
          do {
              fputc(*buffer3, fp_output);
              ++buffer3;
          } while(buffer3 != buffer2+strlen(END_TAG));
          fputc('\n', fp_output);
      }
 }

 fclose(fp_input);
 fclose(fp_output);

 return EXIT_SUCCESS;
}

Δημοσ.

poli wrea i lisi su file mu ke efxaristw gia ton kopo...

kat arxin omos distixos paratirw pos den exi puthena ston kodika to xaraktira $...

ara ksexases ipothetw mia parametro tis askisis...

anamesa sta <# ke #>, ektos apo ta tixea char, kapu prepi na iparxei $...

dld:

<#fghzdgasdfgdfag#> !!!!!!!!!invalid!!!!!!!! not for export to file!!!!!!!!!

<#fghsgh$sfnsfggsfsn#> VALID!!! export to file

<#sdfgsgf$dsf$sdf#> !!!!!!!invalid!!!!!! not for export to file!!!!!!!!

 

episis anamesa mexri ena $ ginete dekto...

 

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

 

telos, tha me endiefere i lisi gia anagnorisi perisoteron apo ena per line,

nested de me endiaferi... multi-line ti enois???

 

an ine efikto i lisi extra se neo code?? /*wste na katalavw pos akrivos ginete perisotera ana line... i estw ekino to tmima kodika me kokina...*/

 

an parepiptontos exis xrono na valis ke merika sxolia efprosdekta!!!

 

 

thanx ke pali file mu!!!

Δημοσ.

Episis ena lathos pu exi o kodikas, (eksetias lathos diefkrinisis mu vevea...)

sto output ektiponi ke ta starting and ending tags...

mono oti ine mesa epithimume...

 

thanx again, ki elpizo na mi se piezw poli...

Δημοσ.

το εκανα σε pascal, και δουλευει σωστα μεχρι και για κειμενο με γραμμες μεγεθους ως 256 char...

απο κει και περα ομως κανει mlk!!!

δλδ ειτε δε βρισκει τπτ, ειτε βγαζει:

<#gshsdg$sgafg><adgajkdfgajgjafg

 

afto simvainei giati ta strings se pascal boroun na apothikefsoun mehri 255 haraktires

Δημοσ.

Αν θέλεις πάνω από 255 χαρακτήρες σε Pascal τότε μπορείς είτε να χρησιμοποιήσεις Delphi (κατά βάση είναι Pascal και υποστηρίζει μέχρι 4 δις χαρακτήρες) είτε να δηλώσεις mybigstring: array[1..10000] of char.

Δημοσ.

Αυτό που σου προτείνει ο alkisg πρεπει να δουλεύει. Να ορίσεις δηλαδή στο μέρος TYPE ένα δικό σου τύπο μεταβλητής όπως mybigstring=array[1..1000] of char και έπειτα στο μέρος VAR αντί να δηλώσεις μεταβλητή τύπου string, να δηλώσεις μεταβλητή τύπου mybigstring. Κάνε και κατάλληλες αρχικοποιήσεις.

Δημοσ.

Τα arrays of char στην Pascal δουλεύουν, απλά δεν μπορείς στην συνέχεια να χρησιμοποιήσεις τις συναρτήσεις χειρισμού strings. Π.χ.

var

a: array[1..280] of char;

i: integer;

begin

for i := 1 to 280 do

read(a);

write('Edwses :');

for i := 1 to 280 do

write(a);

end.

και αν το τρέξεις και γράψεις 280 γράμματα (με μερικά enter ενδιάμεσα επειδή δεν επαρκεί ο buffer του πληκτρολογίου) σου βγάζει:

qwepoiruqpwoeiur pqowieur pqowieur pqoiweur poqiwuerp oiquw repo iuqwpeori uqwpo

eiru qpowiuer poqiwuer poiquwerpo iquwepori uqw

qweproijq wpjirqpowiejr pqoiwjerp oqijwerpo ijqwepori jqwpoeirj qpwoiejr qpoiwje

r poqiwjer poqijw poriqjwpreoi jqwpeori jqwer q

qwer pqoiwjepr oqijwporijqwperoi jqwpeorij qpwoeirj pqowiejr pqoiwjepr oqiwjepr

oqijwrepoiqjwepor ijqwepori jqwpeorij qwpr

Edwses :qwepoiruqpwoeiur pqowieur pqowieur pqoiweur poqiwuerp oiquw repo iuqwpeo

ri uqwpoeiru qpowiuer poqiwuer poiquwerpo iquwepori uqw

qweproijq wpjirqpowiejr pqoiwjerp oqijwerpo ijqwepori jqwpoeirj qpwoiejr qpoiwje

r poqiwjer poqijw poriqjwpreoi jqwpeori jqwer q

qwer pqoiwjepr oqijwpo

  • 2 εβδομάδες αργότερα...
  • 4 χρόνια αργότερα...
Δημοσ.

ρε παιδια ας με βοη8ησει καποιος..

8ελω ενα προγραμμα σε γλωσσα turbo pascal για την σχολη το οποιο να ειναι παρομειο μ αυτο του kino του οπαπ ας βοηθησει καποιος σας παρακαλω

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...