Kleines Programm sucht Hilfe (oder von switch to array)
-
Hallo,
ich habe ein kleines Programm geschrieben, welches Text in Morsecode umwandelt.
Dies habe ich mit einer switch Anweisung bewerkstelligt. Nun hat mir jemand gesagt, dass das auch mit einem Array ohne switch gehen soll. Ich verstehe aber nicht, wie man das mit einem Array machen kann. Ich bin noch ein Anfänger aber motiviert was zu lernen. Vieleich findet ja einer ein bisschen Zeit für mich. Vielen Dank schon mal!
nice/* * This is txt2morse */ #include <stdio.h> int main() { int c; printf("_ . _ . _"); while((c = getchar()) != EOF) { switch(c) { case (int)' ' : putchar('/'); break; case (int)'A' : case (int)'a' : printf("._"); break; case (int)'B' : case (int)'b' : printf("_ . .."); break; case (int)'C' : case (int)'c' : printf("_ . _."); break; case (int)'D' : case (int)'d' : printf("_ . ."); break; case (int)'E' : case (int)'e' : printf("."); break; case (int)'F' : case (int)'f' : printf(". . _."); break; case (int)'G' : case (int)'g' : printf("_ _ ."); break; case (int)'H' : case (int)'h' : printf(". . .."); break; case (int)'I' : case (int)'i' : printf(".."); break; case (int)'J' : case (int)'j' : printf(". _ __"); break; case (int)'K' : case (int)'k' : printf("_ . _"); break; case (int)'L' : case (int)'l' : printf(". _ .."); break; case (int)'M' : case (int)'m' : printf("__"); break; case (int)'N' : case (int)'n' : printf("_."); break; case (int)'O' : case (int)'o' : printf("_ _ _"); break; case (int)'P' : case (int)'p' : printf(". _ _."); break; case (int)'Q' : case (int)'q' : printf("_ _ ._"); break; case (int)'R' : case (int)'r' : printf(". _ ."); break; case (int)'S' : case (int)'s' : printf(". . ."); break; case (int)'T' : case (int)'t' : printf("_"); break; case (int)'U' : case (int)'u' : printf(". . _"); break; case (int)'V' : case (int)'v' : printf(". . ._"); break; case (int)'W' : case (int)'w' : printf(". _ _"); break; case (int)'X' : case (int)'x' : printf("_ . ._"); break; case (int)'Y' : case (int)'y' : printf("_ _ __"); break; case (int)'Z' : case (int)'z' : printf("_ _ .."); break; case '1' : printf(". _ _ _ _"); break; case '2' : printf(". . _ _ _"); break; case '3' : printf(". . . _ _"); break; case '4' : printf(". . . . _"); break; case '5' : printf(". . . . ."); break; case '6' : printf("_ . . . ."); break; case '7' : printf("_ _ . . ."); break; case '8' : printf("_ _ _ . ."); break; case '9' : printf("_ _ _ _ ."); break; case '0' : printf("_ _ _ _ _"); break; case (int)'\n' : putchar(' '); break; default: printf("ouch"); break; } putchar(' '); } printf(". _ . _ .\n"); }
-
in dem array stehen die morsestrings und du waehlst anhand eines zeichens von der eingabe aus, welches element des arrays es sein soll.
-
Hi,
danke schon mal für die schnelle Antwort!
ich habe mich nun daran versucht und dabei ist dieser Code herausgekommen/* * This is txt2morse array version */ #include <stdio.h> int main() { int c,i; int morsecode [256] [10]; morsecode['A'][0]='.'; morsecode['A'][1]='_'; morsecode['A'][2]='\0'; morsecode['\n'][0] = 'T'; morsecode['\n'][1]='\0'; printf("_ . _ . _"); while((c = getchar()) != EOF) { for (i=0;c!='\0';++i) putchar(morsecode[c][i]); } printf(". _ . _ .\n"); }
Dies habe ich dann mit
$echo A | txt2morse
Das kam dabei raus:
_ . _ . _._þ(Øì¼2ÿ„¼ØÐ€Ø°XXÔç°@° @ØÐìÝØH ÈHLÔHî4ظHÈöH¼„PXHàöXœx»GàØ h‚ ÿL@ÐDö ÐP@À4 4 ?444@@pppt¬\\\èèttt (P„„„¼¼QRÜÜØ0öèÀö0èÖ0SÐð0p,(wØööèð¶)¶zö˜hîö¤Ø`Ø´·V и8XØ|X˜Cµì(ö‘¸µ ¸CØØX"ÿØØ3ØØ8dý|¸Ø¸Œ‚Ì77¸D›Xìô‚̤¤¸¸ =Ø7d²€ ¤Š¾Ðĵ֨Ðò¸|à4ؼ@ àà Ð ÿQÞè?Žÿ40Lx¸”· и8X Ø8˜Ç‚¸ô( äî Ø@(0·b¸X и8X@Ø|Ô˜Pެ(@ÇT¨ŽÐP²>˜À¨Ù\ÈËxAÀ°(ËT\|à°(ÐØ0€Ø0QôT°€LA²¼ý=HXl~¹uƒ®¼Ò8Ej—¢¶ÆÐÙà4CKdŽžÂÐ !ÿd4 0 è dd›6trMA//aaum//Raulj/TEi.aoF EOTUDSTMeSLiaCRMEeWO=52ETEOuseetetRiCRo:0i;l1:43=3d;0d;0r;0x;*t;*T;*m;*M;*d;*D;*m;*M;*l;*L;*e;*E;*j;*2;*b;*=3.=3.=3.=3.=3.=3.2;*z;*z;*2;*01Z;*p;*P;*o;*f;*F;*i;*I;*p;*P;*a1:L05g05G05j05J05j=3.G;*a;*a;*v;*V;*v;*V;*3;*3;*e1:P05m05M05o05O05p05r1:M;*a;*A;*f;*F;*v;*V;*v;*V;*m;*m;__=1_F//r1/iogNM M=rionTullnsib//Riugssiab///aenLOT=montme02PCtnrAH=rbvAeSEVI031@\ STPS=CRGdu0Mh/sSLLPN-la -TLApoE-EP|se DTEgnt1P=0LEEmUR=monaoy.trOWh/sctr.trSegmentation fault
Wie bekomme ich denn raus was ich falsch gemacht habe?
Vielen Dank!
-
autsch!
ich habe es raussgefunden:for (i=0;morsecode[c][i]!='\0';++i)
und nicht
for (i=0;c!='\0';++i)
Danke
-
Sorry,
ich schon wieder. Es funktioniert bestens, aber da ich Anfänger bin würde ich gerne noch wissen, ob das so einergermaßen "sauber" ist, oder ob man es besser anders machen sollte.
Danke!
-
wie wär's so:
#include <stdio.h> int main( ) { char *morse[ ] = { "._", // A "_ . ..", // B "_ . _.", // C "_ . .", // D ".", // E ". . _.", // F "_ _ .", // G ". . ..", // H "..", // I ". _ __", // J "_ . _", // K ". _ ..", // L "__", // M "_.", // N "_ _ _", // O ". _ _.", // P "_ _ ._", // Q ". _ .", // R ". . .", // S "_", // T ". . _", // U ". . ._", // V ". _ _", // W "_ . ._", // X "_ _ __", // Y "_ _ ..", // Z "_ _ _ _ _", // 0 ". _ _ _ _", // 1 ". . _ _ _", // 2 ". . . _ _", // 3 ". . . . _", // 4 ". . . . .", // 5 "_ . . . .", // 6 "_ _ . . .", // 7 "_ _ _ . .", // 8 "_ _ _ _ ." // 9 }; int ch; while( ( ch = getchar( ) ) != EOF ) { if( 'a' <= ch && ch <= 'z' ) { ch = 'A' + ch - 'a'; } if( 'A' <= ch && ch <= 'Z' ) { printf( "%s ", morse[ ch - 'A' ] ); } else if( '0' <= ch && ch <= '9' ) { printf( "%s ", morse[ ( ch - '0' + 1 ) + ( 'Z' - 'A' ) ] ); } else if( ch == '\n' ) { putchar( ' ' ); } else { printf( "ouch" ); } } }
Greetz, Swordfish
-
Hey, Danke!
Sieht sehr schick aus
Daher weiß ich auch noch nicht ob diese Frage sinn macht:
Kann man, wenn man das Programm so schreibt, die Zeichenkette von morse[] auch wieder splitten und mit putchar() ausgeben?
Ich will mir zur Erweiterung des Programmes irgendwann eine Funktion schreiben die sich mit der Ausgabe von beeps beschäftigt. Dieser würde ich dann gerne nur einzelne Zeichen übergeben.
Tausend Dank!Das ist echt ein sehr schnelles Forum, wow!
-
mit
char *text[] = { "one", "two", "three" };
definierst du eine Array von Zeigern auf char text. Wobei
text[ 0 ]; // auf den Beginn von "one", text[ 1 ]; // von "two" und text[ 2 ]; // auf "three"
zeigt.
nice schrieb:
Kann man, wenn man das Programm so schreibt, die Zeichenkette von morse[] auch wieder splitten und mit putchar() ausgeben?
Naja, morse ist nicht eine, sondern mehrere Zeichenketten (wie oben schon beschrieben).
nice schrieb:
Ich will mir zur Erweiterung des Programmes irgendwann eine Funktion schreiben die sich mit der Ausgabe von beeps beschäftigt. Dieser würde ich dann gerne nur einzelne Zeichen übergeben.
Naja:
#include <stdio.h> int main() { char *text[] = { "one", "two", "three" }; for( int i = 0; i < 3; ++i ) { for( char *ch = text[ i ]; *ch != '\0'; ++ch ) putchar( *ch ); putchar( '\n' ); } }
Also du läufst mit for( char *ch = text[ i ]; *ch != '\0'; ++ch ) so lange durch den nullterminierten String text[ i ] bis du auf 'ne '\0' (null) stößt.
Soundausgabe ist jedoch kein Problem, welches alleine mit ANSI C gehandhabt werden könnte. Für welches Betriebssystem programmierst du denn?
Greetz, Swordfish
-
Danke die Erklärung war gut!
Ich verwende Linux und ich will mir beep [1] ansehen um zu verstehen, wie man das unter Linux hinbekommt.
So sieht nun mein Programm aus(inkl. kleiner Frage - Verbesserungsvorschläge nehme ich gerne an):
(Die Ausgabe ist leider unleserlich geworden, aber die Dit und so werden ja irgendwann durch Töne ersetzt ;)).#include <stdio.h> int main( ) { char *morse[ ] = { "._", // A "_ . ..", // B "_ . _.", // C "_ . .", // D ".", // E ". . _.", // F "_ _ .", // G ". . ..", // H "..", // I ". _ __", // J "_ . _", // K ". _ ..", // L "__", // M "_.", // N "_ _ _", // O ". _ _.", // P "_ _ ._", // Q ". _ .", // R ". . .", // S "_", // T ". . _", // U ". . ._", // V ". _ _", // W "_ . ._", // X "_ _ __", // Y "_ _ ..", // Z "_ _ _ _ _", // 0 ". _ _ _ _", // 1 ". . _ _ _", // 2 ". . . _ _", // 3 ". . . . _", // 4 ". . . . .", // 5 "_ . . . .", // 6 "_ _ . . .", // 7 "_ _ _ . .", // 8 "_ _ _ _ ." // 9 }; int ch,i; const char *ka="_ . _ . _"; //Spruchanfang const char *ar=". _ . _ ."; //Spruchende int char2beep(char c); while (*ka!='\0') { putchar( *ka ); char2beep( *ka ); ++ka; } /* wieso funktioniert for (ka=0;*ka!='\0';++ka) putchar(*ka); nicht? */ putchar (' '); char2beep( ' ' ); while( ( ch = getchar( ) ) != EOF ) { if( 'a' <= ch && ch <= 'z' ) { ch = 'A' + ch - 'a'; } if( 'A' <= ch && ch <= 'Z' ) { for( char *c = morse[ ch - 'A' ]; *c != '\0'; ++c ) { putchar( *c ); char2beep( *c ); } } else if( '0' <= ch && ch <= '9' ) { for( char *c = morse[ ( ch - '0' + 1 ) + ( 'Z' - 'A' ) ]; *c != '\0'; ++c ) { putchar( *c ); char2beep( *c ); } } else if( ch == '\n' ) { putchar( ' ' ); char2beep( ' '); } else if( ch == ' ' ) { putchar( '/' ); char2beep( '/' ); } else { putchar( '$' ); char2beep( '$' ); } } while (*ar!='\0') { putchar( *ar ); char2beep( *ar ); ++ar; } putchar('\n'); return 0; } int char2beep(char c) { switch(c) { case '_' : printf("Dah"); break; case '.' : printf("Dit"); break; case ' ' : printf("Pause in der Länge von Dah"); break; case '/' : printf("Pause in der Länge von 7x Dit"); break; } return 0; }
-
nice schrieb:
Danke die Erklärung war gut!
Aber bitte, gerne.
nice schrieb:
Ich verwende Linux und ich will mir beep [1] ansehen um zu verstehen, wie man das unter Linux hinbekommt.
Hab' mir dieses beep mal angesehen. Schaut ganz gut aus. viel Glück (resultate posten!)
nice schrieb:
int main( ) { // ... const char *ka="_ . _ . _"; // ... int char2beep(char c); // Funktionen definiert man normalerweise nicht Funktionslokal! // ... // wieso funktioniert for( ka = 0; *ka != '\0'; ++ka ) putchar( *ka ); // nicht?
Weil du mit ka zeigt nach
const char *ka="_ . _ . _";
auf den Anfang von "_ . _ . _". Mit ka = 0 überschreibst du diese Adresse -> Pustekuchen. So würd's gehen:
for( ; *ka != '\0'; ++ka ) putchar( *ka );
Kürzer:
for( ; *ka; ++ka ) putchar( *ka );
nice schrieb:
[...] Verbesserungsvorschläge nehme ich gerne an [...]
Ich hab's mal überwurschtelt:
#include <stdio.h> #include <ctype.h> const char *char_to_morse( int ch ); void morse_to_beep( const char *str ); int main( ) { int ch; morse_to_beep( "_ . _ . _ " ); while( ( ch = getchar( ) ) != EOF ) morse_to_beep( char_to_morse( ch ) ); morse_to_beep( ". _ . _ ." ); } const char *char_to_morse( int ch ) { const char *morse[ ] = { "._", "_ . ..", "_ . _.", "_ . .", ".", ". . _.", "_ _ .", ". . ..", "..", ". _ __", "_ . _", ". _ ..", "__", "_.", "_ _ _", ". _ _.", "_ _ ._", ". _ .", ". . .", "_", ". . _", ". . ._", ". _ _", "_ . ._", "_ _ __", "_ _ ..", "_ _ _ _ _", ". _ _ _ _", ". . _ _ _", ". . . _ _", ". . . . _", ". . . . .", "_ . . . .", "_ _ . . .", "_ _ _ . .", "_ _ _ _ .", " ", "/", "$" }; if( islower( ch ) ) ch = 'A' + ch - 'a'; if( isupper( ch ) ) return morse[ ch - 'A' ]; if( isdigit( ch ) ) return morse[ ch - '0' + 1 ]; if( ch == '\n' ) return morse[ 'Z' - 'A' + '9' - '0' + 2 ]; if( isspace( ch ) ) return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 3 ]; return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 4 ]; } void morse_to_beep( const char *str ) { for( const char *ch = str; *ch; ++ch ) { switch( *ch ) { case '_' : printf( "Dah " ); break; case '.' : printf( "Dit " ); break; case ' ' : printf( "(Dah Pause) " ); break; case '/' : printf( "(7 Dit Pause) " ); break; } } }
Greetz, Swordfish
-
Danke schonmal! (hab mich gleich mal angemeldet *hehe)
Swordfish schrieb:
Hab' mir dieses beep mal angesehen. Schaut ganz gut aus. viel Glück (resultate posten!)
Ich habe gerade festgestellt, dass mein Laptop gar keinen Speaker hat
. Ich muss mir erst mal ein bisschen Hardware mit Speaker zusammenbasteln. Solange habe ich mir auch schon mal ein Beispiel [1] für die Alsa API angesehen. Ich werde vieleicht mit einem Parameter die Auswahl bereitstellen. Mal sehen wie weit ich komme.
Alle Ergebnisse und aufkommende Fragen poste ich einfach in diesen Thred, auch wenn es das ANSI C Thema vieleich nicht ganz trifft.
-
Hast du dir meine "Überwurschtelung" angesehen? Blickst du durch? Hm, versuch doch mal ein
printf( "\a" );
Wennst ein Piepsen hörst, dann emuliert deine Soundkarte den Speaker.
Greetz, Swordfish
-
Swordfish schrieb:
Hast du dir meine "Überwurschtelung" angesehen? Blickst du durch?
Soweit schon ich kommentiere es mal:
Swordfish schrieb:
Ich hab's mal überwurschtelt:
#include <stdio.h> #include <ctype.h> /*Definitionen von den Funktionen*/ const char *char_to_morse( int ch ); void morse_to_beep( const char *str ); /*constanter Zeiger von char auf str (Damit Die Zeichenkette nicht von der Funktion während der Laufzeit nicht verändert wird. Da Zeichenketten global sind.)*/ int main( ) { int ch; /*Die konstante Zeichenkette incl '\0' wird an morse_to_beep übergeben*/ morse_to_beep( "_ . _ . _ " ); while( ( ch = getchar( ) ) != EOF ) morse_to_beep( char_to_morse( ch ) ); /*An morse_to_beep wird der return Wert von char_to_morse übergeben, welcher ein konstanter Zeiger von Char ist*/ morse_to_beep( ". _ . _ ." ); } const char *char_to_morse( int ch ) /*Die Funktion wird Deklariert*/ { const char *morse[ ] = { /*Das Array von Zeigern auf Char wird Vereinbart und befüllt*/ "._", "_ . ..", "_ . _.", "_ . .", ".", ". . _.", "_ _ .", ". . ..", "..", ". _ __", "_ . _", ". _ ..", "__", "_.", "_ _ _", ". _ _.", "_ _ ._", ". _ .", ". . .", "_", ". . _", ". . ._", ". _ _", "_ . ._", "_ _ __", "_ _ ..", "_ _ _ _ _", ". _ _ _ _", ". . _ _ _", ". . . _ _", ". . . . _", ". . . . .", "_ . . . .", "_ _ . . .", "_ _ _ . .", "_ _ _ _ .", " ", "/", "$" }; if( islower( ch ) ) /*Die Funktion der Bibliothek ctype prüft ob klein Buchstaben*/ ch = 'A' + ch - 'a'; if( isupper( ch ) ) /*Die Funktion der Bibliothek ctype prüft ob groß Buchstaben*/ return morse[ ch - 'A' ]; /*siehe oben*/ if( isdigit( ch ) ) /*Die Funktion der Bibliothek ctype prüft ob Ziffern*/ return morse[ ch - '0' + 1 ]; if( ch == '\n' ) return morse[ 'Z' - 'A' + '9' - '0' + 2 ]; if( isspace( ch ) ) return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 3 ]; return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 4 ]; } void morse_to_beep( const char *str ) { for( const char *ch = str; *ch; ++ch ) { /*Zeiger ch wird auf die Adresse von str gesetzt;Überprüfung '\0';Zeiger wird um eine Adresse nach rechts verschoben*/ switch( *ch ) { case '_' : printf( "Dah " ); break; case '.' : printf( "Dit " ); break; case ' ' : printf( "(Dah Pause) " ); break; case '/' : printf( "(7 Dit Pause) " ); break; } } }
Swordfish schrieb:
Hm, versuch doch mal ein
printf( "\a" );
Wennst ein Piepsen hörst, dann emuliert deine Soundkarte den Speaker
Muss ich noch machen, ich bin gerade mit dem Sound beschäftigt. Dieses Poste ich sofort, aber zur besseren Leesbarkeit in einem anderm Post.
-
So hier das Programm:
Ich habe riesige Teile (eigentlich fast alles) von hier übernommen [1].
Ich muss die Stiele noch sauber umarbeiten und mir ein \t to 4 ' ' Programm schreiben.Das Problem ist, wie kann ich warten bis die Funktion write_sinewave() beendet ist? Bei den Dahs bekomme ich immer das Problem, dass das Gerät noch besetzt ist während schon das nächste write_sinewave() beginnt.
#include <stdio.h> #include <ctype.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #include <sys/soundcard.h> const char *char_to_morse( int ch ); void morse_to_beep( const char *str ); static int write_sinewave (char beep_mute); int fd_out,i; int sample_rate=48000; static int write_sinewave (char beep_mute) { static unsigned int phase = 0; /* Phase of the sine wave */ unsigned int p; int i; short buf[1024]; /* 1024 samples/write is a safe choice */ int outsz = sizeof (buf) / 2; int sinebuf[48] = { 0, 4276, 8480, 12539, 16383, 19947, 23169, 25995, 28377, 30272, 31650, 32486, 32767, 32486, 31650, 30272, 28377, 25995, 23169, 19947, 16383, 12539, 8480, 4276, 0, -4276, -8480, -12539, -16383, -19947, -23169, -25995, -28377, -30272, -31650, -32486, -32767, -32486, -31650, -30272, -28377, -25995, -23169, -19947, -16383, -12539, -8480, -4276 }; if ( beep_mute == 'm' ) { for (i=0;i<48;++i) sinebuf[i] = 0; for (i = 0; i < outsz; i++) { p = (phase * sample_rate) / 48000; phase = (phase+1) % 4800; buf[i] = sinebuf[p % 48]; } } else {for (i = 0; i < outsz; i++) { p = (phase * sample_rate) / 48000; phase = (phase+1) % 4800; buf[i] = sinebuf[p % 48]; } } if (write (fd_out, buf, sizeof (buf)) != sizeof (buf)) { perror ("Audio write"); exit (-1); } return 0; } static int open_audio_device (char *name, int mode) { int tmp, fd; if ((fd = open (name, mode, 0)) == -1) { perror (name); exit (-1); } tmp = AFMT_S16_NE; /* Native 16 bits */ if (ioctl (fd, SNDCTL_DSP_SETFMT, &tmp)==-1) { perror("SNDCTL_DSP_SETFMT"); exit(-1); } if (tmp != AFMT_S16_NE) { fprintf(stderr, "The device doesn't support the 16 bit sample format.\n"); exit(-1); } tmp = 1; if (ioctl (fd, SNDCTL_DSP_CHANNELS, &tmp)==-1) { perror("SNDCTL_DSP_CHANNELS"); exit(-1); } if (tmp != 1) { fprintf(stderr, "The device doesn't support mono mode.\n"); exit(-1); } sample_rate = 48000; if (ioctl (fd, SNDCTL_DSP_SPEED, &sample_rate)==-1) { perror("SNDCTL_DSP_SPEED"); exit(-1); } return fd; } const char *char_to_morse( int ch ) { const char *morse[ ] = { "._", "_ . ..", "_ . _.", "_ . .", ".", ". . _.", "_ _ .", ". . ..", "..", ". _ __", "_ . _", ". _ ..", "__", "_.", "_ _ _", ". _ _.", "_ _ ._", ". _ .", ". . .", "_", ". . _", ". . ._", ". _ _", "_ . ._", "_ _ __", "_ _ ..", "_ _ _ _ _", ". _ _ _ _", ". . _ _ _", ". . . _ _", ". . . . _", ". . . . .", "_ . . . .", "_ _ . . .", "_ _ _ . .", "_ _ _ _ .", " ", "/", "$" }; if( islower( ch ) ) ch = 'A' + ch - 'a'; if( isupper( ch ) ) return morse[ ch - 'A' ]; if( isdigit( ch ) ) return morse[ ch - '0' + 1 ]; if( ch == '\n' ) return morse[ 'Z' - 'A' + '9' - '0' + 2 ]; if( isspace( ch ) ) return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 3 ]; return morse[ ( 'Z' - 'A' ) + ( '9' - '0' ) + 4 ]; } void morse_to_beep( const char *str ) { fd_out = open_audio_device ("/dev/dsp", O_WRONLY); for( const char *ch = str; *ch; ++ch ) { switch( *ch ) { case '_' : printf( "Dah " ); for(i=0;i<3;++i) write_sinewave (' '); break; case '.' : printf( "Dit " ); for(i=0;i<1;++i) write_sinewave (' '); break; case ' ' : printf( "(Dah Pause) " ); for(i=0;i<3;++i) write_sinewave ('m'); break; case '/' : for(i=0;i<7;++i) write_sinewave ('m'); printf( "(7 Dit Pause) " ); break; } } } int main( ) { int ch; morse_to_beep( "_ . _ . _ " ); while( ( ch = getchar( ) ) != EOF ) morse_to_beep( char_to_morse( ch ) ); morse_to_beep( ". _ . _ ." ); }
-
So bin nun dazu gekommen:
#include <stdio.h> int main() { printf("\a"); return 0; }
Macht keinen Ton.
Ich werde mich nach der OSS Soundausgabe damit befassen, wie das mit dem Emulieren geht.Danke nochmal
-
So jetzt klappt es!
ich habe diesfd_out = open_audio_device ("/dev/dsp", O_WRONLY);
von morse_to_beep in main geschoben, wo es auch mehr sinn macht
Eine schönere Version des Programmes Poste ich auch bald
cya