URL: https://www.overclockers.at/coding-stuff/backspace_in_c_85450/page_2 - zur Vollversion wechseln!
Zitat von g0dsm4ck[CODE]
<programmcode hier einfügen>
[/CODE]
so hab jetzt dann selber eine lösung gefunden zwar nicht so schön aber sie funkt:
Code:#include <stdio.h> #include <time.h> #include<conio.h> #include<stdlib.h> #define FALSE 0 #define TRUE 1 main() { FILE* ziel, *ablage, *quelle; char zeichen[300], betreff[80]="noch nicht vorhanden", nameeing[80]=" ", help[7]="itweb01", help1[3]="192"; int auswahl, i, zaehler; int betref1, name; auswahl=1; betref1=FALSE; name=FALSE; while(auswahl!=0) { printf("1. Betreff aendern, ansonsten Default(kommt noch)\n"); printf("2. Ihr Name, ansonsten Default(name)\n"); printf("3. Nachrichten erstellen\n"); printf("0. Ende\n"); scanf("%i", &auswahl); system("cls"); switch(auswahl) { case 1: zaehler=0; printf("Geben Sie Ihren gewaenschten Text ein(80 Zeichen max., oder _ als abbruchbedingung):\n"); printf("Bitte Zeit auch mit eingeben!!\n"); for(i=0;i<80;i++) { scanf("%c", &betreff[i]); if(betreff[i]=='_') { break; } } betref1=TRUE; system("cls"); printf("Einstellungen erfolgreich uebernommen\n\n"); break; case 2: zaehler=0; printf("Geben Sie Ihren Namen ein(80 Zeichen max., mit _ bestaetigen):\n"); for(i=0;i<80;i++) { scanf("%c", &nameeing[i]); if(nameeing[i]=='_') { break; } } name=TRUE; system("cls"); printf("Einstellungen erfolgreich uebernommen\n\n"); break; case 3: quelle = fopen("quelle.txt", "r"); ablage = fopen("zwischen.txt", "w"); if(quelle==NULL) { printf("Quelledatei nicht gefunden oder nicht vorhanden\n"); system("pause"); } else { while(!feof(quelle)) { fscanf(quelle, "%[^.]%*[^\n]\n", &zeichen); fprintf(ablage, "%s\n", zeichen); } fclose(quelle); fclose(ablage); ablage = fopen("zwischen.txt", "r"); ziel = fopen("HQDS_SEND_MESSAGE.cmd", "w"); if(ablage==NULL) { printf("Datei nicht gefunden oder nicht vorhanden\n"); system("pause"); } else { do { fscanf(ablage, "%s\0", &zeichen); if(strcmp(help, zeichen) == FALSE||strcmp(help1, zeichen) == FALSE){} else { fprintf(ziel, "net send %s ", zeichen); if(betref1==TRUE) { //fprintf(ziel, "\b"); for (i=0; i<80; i++) { if(betreff[i]=='_') { break; } if (betreff[i] != '\n') { fprintf(ziel, "%c", betreff[i]); } } fprintf(ziel, " "); } if(name==TRUE) { for (i=0; i<80; i++) { if(nameeing[i]=='_') { break; } if (betreff[i] != '\n') { fprintf(ziel, "%c", nameeing[i]); } } fprintf(ziel, "\n"); } if(betref1==FALSE) { fprintf(ziel, "\"Aufgrund eines Server Neustarts bitten wir Sie dringend Änderungen zu speichern und den SQM zu beenden. SQM/QDMS ist zwischen time nicht verfügbar. Wir bitten um Verständnis! mfg \0"); } if(name==FALSE) { fprintf(ziel, "name\"\n\0"); } } }while(!feof(ablage)); } } system("cls"); printf("Nachricht wurde erstellt\n\n"); fclose(ziel); break; case 0: printf("Auf Wiedersehen!\n"); system("pause"); system("cls"); default: printf("Falsche Eingabe\n"); break; } } }
denn er hat sich bei der eingabe in enter gemekt und hat dies hinzugefügtCode:fprintf(ziel, "net send %s ", zeichen); if(betref1==TRUE) { //fprintf(ziel, "\b"); for (i=0; i<80; i++) { if(betreff[i]=='_') { break; } if (betreff[i] != '\n') { fprintf(ziel, "%c", betreff[i]); } } fprintf(ziel, " "); } if(name==TRUE) { for (i=0; i<80; i++) { if(nameeing[i]=='_') { break; } if (betreff[i] != '\n') { fprintf(ziel, "%c", nameeing[i]); } } fprintf(ziel, "\n"); }
tip, schau dir in der hilfe die funktionen der strings.h an, ausserdem (f)putc,(f)getc,strncpy,etc dein programm ließe sich damit imho deutlich vereinfachen.
andere frage, warum verwendest du gerade '_' als abschluß?
mit is nichts anderes eingefahllen was nicht gebraucht werden könnte, nur das _ und so nahm ich dann auch dies
.. und was ist mit der <ENTER>-Taste ? wäre das nicht deutlich intuitiver?
wollte ich zunächst auch nehmen
aber er nahm mir bei der oben if dann die abbruch bedingung '\n' also enter net, im war das sozusagen egal und lass ein bis ich 80 zeichen eingegeben habe, und das ist auch nicht perfekt!
\r ?
ist auch egal... schau dir aber die sachen an, die ich dir vorher geschrieben habe, evt auch (f)gets , dann wirst automatisch die nachfolgenden programme klarer und sauberer programmieren. dann werden solche klimmzüge wie hier gar nicht notwendig.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025