Ein paar C Fragen...

Westbär

Mitglied
Hallo
Ich möchte euch gerne ein paar Fragen zu C stellen. :google: hab ich schon genutzt, bringt aber wirklich nur Müll raus.

1. Gibt es sowas wie preg_match() für C? Ich möchte nämlich Zeichen zwischen "" sowie , etc. auslesen. In PHP geht dies ja mit Preg_Match

2. Kann man scanf() über mehrere Zeilen "ausbreiten"? Also damit man nicht nur eine Zeile zum schreiben hat sondern auch Zeilen umbrüche machen kann. (Ich dachte da an while, aber wie werden die zeilenumbrüche dann in die variable "gespeichert"?

Danke im vorraus für die antworten,


Gruß
 
PHP:
int wert;
#include <stdio.h>

main()             /* Ausgabe: Mein 2. C-Programm! */
{
     ausgabe(2);
}

ausgabe(wert)
int wert;
{
     printf("Mein %d. ",wert);
     printf("C-Programm!\n");
}

bin jetzt nicht unbedingt der große C crack oder so aber ich hab im Internet zumindest das hier gefunden

http://www.tu-chemnitz.de/urz/kurse/unterlagen/C/kap1/programmstruktur.htm

und da steht dann zum obrigen Programm diese erklärung ^^
PHP:
notwendige Erläuterungen zum Beispiel:

    printf 	= 	Funktion für formatierte Ausgabe
    %d 	= 	Ausgabeformat für Integerwerte
    %c 	= 	Ausgabeformat für Zeichen
    %lf 	= 	Ausgabeformat für Gleitkommazahlen
    \n 	= 	Zeilenvorschub
    ausgabe(2) 	= 	Aufruf Funktion ausgabe mit Argument 2
    ausgabe(wert) 	= 	Vereinbarung Funktion ausgabe mit Parameter wert
Und das entspricht doch nun genau PHP ^^ also bessergesagt, PHP entspricht C mit dem Zeilenumbruch -.-
 
Danke für deine Antwort,
Nur, wie das Beispiel funktioniert, weiß ich schon. Ich hab ja schon mehreres in C programmiert. Und der Code von dem Beispielt hilft mir auch nicht gerade weiter :/

Somit sind meine oberen Fragen (noch) nicht beantwortet.


Gruß
 
Naja -.- du willst ja bloß einen Zeilenumbruch erstellen, oder?
Naja bis auf die andere Frage aber da kenn ich mich nich aus.

Wenn du es wie bei PHP gestalltest und nach dem Zeilenumbruch \n weiterschreibst?
Hab zwar keine möglichkeit das zu testen aber das hier geht nicht?

PHP:
#include <stdio.h>

main()             /* Ausgabe: Mein 2. C-Programm! */
{
     ausgabe(2);
}

ausgabe(wert)
int wert;
{
     printf("Mein %d. ",wert);
     printf("Zeile1.\nZeile2.\nZeile3.\n");
}

Naja so in könnt ich mir das vorstellen
 
Zuletzt bearbeitet:
Hi,

1. In den standard C++-Libs gibt es kein RegEx. Allerdings gibt es eine gute RegEx Library(Boost), die man sich installieren kann.

Bsp:

Code:
#include <stdlib.h> 
#include <boost/regex.hpp> 
#include <string> 
#include <iostream> 

using namespace boost; 

regex expression("([0-9]+)(\\-| |$)(.*)"); 

// process_ftp: 
// on success returns the ftp response code, and fills 
// msg with the ftp response message. 
int process_ftp(const char* response, std::string* msg) 
{ 
   cmatch what; 
   if(regex_match(response, what, expression)) 
   { 
      // what[0] contains the whole string 
      // what[1] contains the response code 
      // what[2] contains the separator character 
      // what[3] contains the text message. 
      if(msg) 
         msg->assign(what[3].first, what[3].second); 
      return std::atoi(what[1].first); 
   } 
   // failure did not match 
   if(msg) 
      msg->erase(); 
   return -1;
}
2.Mache einfach eine While-Schleife und lese jede Zeile einzeln ein.(cin.getline())

mfg pmx
 
Zuletzt bearbeitet:
Hi.

In C kannst du z.B. die PCRE (Perl Compatible Regular Expression) Bibliothek nutzen. Soweit ich weiß wird diese Bibliothek auch in PHP eingesetzt.

Wenn du Dev-Cpp verwendest, kannst du einfach die pcre Bibliothek über Tools->Update Manager installieren. (Siehe http://www.pcre.org/)

Dann in den Projektoptionen : Parameter für den Linker "-lpcre" eintragen.

Bsp:
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <pcre.h>


int main(int argc, char *argv[])
{
  pcre* re;
  const char *error;
  int erroroffset, i;
  
  int rc;
  int ovector[30];
  
  const char* str1 = "adf \"hallo, welt.\" 94994";
  
  char* string = calloc(strlen(str1) + 1, sizeof(*str1));
  strcpy(string, str1);
  
  re = pcre_compile("\"([^\"]+)\"", 0, &error, &erroroffset, NULL);
  
  rc = pcre_exec(re, NULL, string, strlen(string), 0, 0, ovector, sizeof(ovector)/sizeof(*ovector));
  
  printf("%d group(s) matched.\n", rc);
  
  for (i = 0;  i <= rc; i += 2) {
     char c = string[ovector[i + 1]];

     string[ovector[i + 1]] = '\0';

     printf("match: %d - %d => %s\n", ovector[i], ovector[i + 1], string + ovector[i]);
     
     string[ovector[i + 1]] = c;
  }
  
  free(string);
  
  system("PAUSE");	
  return 0;
}
Gruß
 
Zuletzt bearbeitet:
Zurück