/*
Projekt MergeString
Zusammenführung (concatenate) von 2 Zeichenketten (strings).
Versionen 1.0 und 2.0 / 2002.04.01
Autor: pstrainer@gmx.net
*/
#include
#include
#include
#define line_maxlen 100
#define myversion 2 // valid options: {1,2}
int merge_string(char*,char*,char*);
// *************** Version 1 ********************
#if myversion==1
void main (void) {
char src1[]="abc";
char src2[]="123";
char dst[line_maxlen];
merge_string(src1,src2,dst);
printf("MergeString (%s,%s)=%s\n",src1,src2,dst);
}
int merge_string(char *s1,char *s2,char *d) {
/*
Funktion merge_string
Zusammenführung (concatenate) von 2 Zeichenketten (strings).
Version 1.0 / 2002.04.01
Autor: Peter Schindler, pstrainer@gmx.net
Syntax:
int merge_string(char*,char*,char*);
...
char src1[...];
char src2[...];
char dst[...];
...
merge_string(src1,src2,dst);
Length:
19 lines of code
*/
int i,j;
char c;
i=0; // index for dst
j=0; // index for src1
c='$';
while (c!='\0') {
c=s1[j++]; // character to test
if(c!='\0') d[i++]=c;
}
j=0; // index for src2
c='$';
while (c!='\0') {
c=s2[j++]; // character to test
if(c!='\0') d[i++]=c;
}
d[i]='\0'; // terminate string
return i-1;
}
// *************** Version 2 ********************
#elif myversion==2
int _sub_merge_string (int,char*,char*);
void main (void) {
int sl,dl;
char src1[line_maxlen];
char src2[line_maxlen];
char dst[line_maxlen];
printf("Projekt MergeString\n");
sl=1;
while (sl>0) {
printf("\nGeben sie Text1 ein: ");
gets(src1);
printf("Geben sie Text2 ein: ");
gets(src2);
sl=strlen(src1)+strlen(src2);
dl=merge_string(src1,src2,dst);
printf("MergeString (%s,%s)=%s\n",src1,src2,dst);
}
#ifdef _DEBUG
printf("\nPress any key to continue ");
_getch();
#endif
}
int merge_string(char *s1,char *s2,char *d) {
/*
Funktion merge_string
Zusammenführung (concatenate) von 2 Zeichenketten (strings).
Version 2.0 / 2002.04.01
Autor: Peter Schindler, pstrainer@gmx.net
> Die Funktion gibt die Länge des (neuen) strings dst
an das aufrufende Programm zurück.
> Falls ein source-string kein Ende-Zeichen enthält,
so wird die Funktion nach 100 Zeichen (einstellbar) abgebrochen.
> Die Größe des erzeugten string (dst) wird mit 100 Zeichen (einstellbar)
begrenzt.
> Optional werden Sonderzeichen <'\x20' ignoriert.
Syntax:
int merge_string(char*,char*,char*);
...
char src1[...];
char src2[...];
char dst[...];
int dl;
...
dl=merge_string(src1,src2,dst);
Length:
20 lines of code
*/
#define skip_control_chars 1 // ignore control chars (if value>0)
int i=0; // index for dst
i=_sub_merge_string(0,s1,d); // merge src1
i=_sub_merge_string(i,s2,d); // merge src2
d[i]='\0'; // terminate string
return i-1;
}
int _sub_merge_string (int i,char *s,char *d) {
/*
Copy string s to string d, starting at position (index) i
*/
int j=0;
char c='$';
while (c!='\0') {
c=s[j++]; // character to test
// control character (option) ?
if ( (!skip_control_chars) || (c>='\x20') ) {
// size limits:
if ( (i>=line_maxlen) || (j>line_maxlen) ) c='\0';
if(c!='\0') d[i++]=c; // copy char to dst
}
}
return i;
}
// *************** Version ? ********************
#else
void main (void) {
printf("Makro #myversion wurde illegal definiert\n");
}
#endif
/* ========== eof ========== */
               (
geocities.com/pstrainer/entwicklung/c)                   (
geocities.com/pstrainer/entwicklung)                   (
geocities.com/pstrainer)