Hallo,
ich möchte gerne ein Char Array auf Inhalt überprüfen und dementsprechend ändern.
Hintergrund ist folgender:
Mit der Funktion (GetTagChar) lese ich eine Prozessvariable ein.
Je nach dem, was in der Prozessvariablen drinsteht, steht in der Variablen "pszProp" (Auch Datentyp: char)
entweder ein 1 stelliger Wert, ein 2 stelliger Wert, oder ein 3 stelliger Wert drin.
Also entweder 1 Byte, 2 Byte, oder 3 Byte sind belegt.
Als Ergebnis soll aber über die Funktion printf immer 6 Byte ausgegeben werden.
In dem Code Beispiel wird der Char Variable "source" 3 Zeichen übergeben.
Code Ausschnitt:
--------------------------------------
char source[255] = "000";
char* pszProp = NULL;
pszProp = GetTagChar("Prozessvariable");
ggg[255] == strcpy(ggg,pszProp);
strcat(source,ggg);
printf(source);
-----------------------------------------
Stehen in der Prozessvariable zum Beispiel die Zeichen "123" drin, würde folgendes ausgegeben werden: 000123
Stehen aber in der Prozessvariablen zum Beispiel die Zeichen "12" drin, würde folgendes ausgegeben werden: 00012
Es soll dann aber 000012 ausgegeben werden. (Also immer 6 Zeichen).
Ich müsste also vorher die Prozessvariable auf ihren Inhalt hin überprüfen, und je nach dem was drin steht muss der Variablen "source" entweder 2, 3, oder 4 Nullen übergeben werden.
Ich bekomm das irgendwie nicht hin.
Kann mir jemand helfen.
Gruß
Eleu
+ Antworten
Ergebnis 1 bis 15 von 25
Char Array auf Inhalt überprüfen und dementsprechend ändern(Ansi C)
Diskussion über Char Array auf Inhalt überprüfen und dementsprechend ändern(Ansi C) in C und C++ der Kategorie Programmierung; Hallo, ich möchte gerne ein Char Array auf Inhalt überprüfen und dementsprechend ändern. Hintergrund ist folgender: Mit der Funktion (GetTagChar) ...
- 13.10.2011 15:51 #1
Char Array auf Inhalt überprüfen und dementsprechend ändern(Ansi C)
Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913
- 13.10.2011 16:08 #2
Moin.
Eine kurze Frage: Warum so umständlich? Wieso nicht die Ausgabe formatieren?Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 13.10.2011 16:30 #3
- 13.10.2011 17:01 #4
Ähm... wieso? Stehe gerade etwas auf der Leitung...
Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 13.10.2011 17:04 #5
Weil du AFAIK nur Zahlen so formatiert ausgeben kannst das da eine bestimmte Anzahl führender Nullen angezeigt wird
Ich bin Guybrush Threepwood, ein mächtiger Pirat!
- 13.10.2011 18:01 #6
Also,
gibt mirCode:char *pointer1="1"; char *pointer2="12"; char *pointer3="123"; printf(" %06s \n", pointer1); printf(" %06s \n", pointer2); printf(" %06s \n", pointer3);
aus. Jedenfalls bei mir...Code:000001 000012 000123
Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 13.10.2011 18:07 #7
- 13.10.2011 19:38 #8
Ach so... eine Frage noch.
Funktioniert das auch strcat ?
Ich muss das Ergebnis nicht nur ausgeben, sondern auch in der Variablen "source" weiterverarbeiten.
Also so:
-----------------------------------
char* pszProp = NULL;
pszProp = GetTagChar("Prozessvariable");
source[255] == strcpy(source,pszProp);
strcat(" %06s \n",source);
printf(source);Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913
- 13.10.2011 19:51 #9
dann scahu dir mal sprintf an, bzw noch besser snprintf
Ich bin Guybrush Threepwood, ein mächtiger Pirat!
- 13.10.2011 22:13 #10
Und btw...
schaut ziemlich unsinnig aus...Code:source[255] == strcpy(source,pszProp);
Offizielles Alt-Mitglied im Club der Schokoholiker und bekennender Knipser
"Onkel, der den Kindern nur Blödsinn beibringt"
------------------------------------
Fachbegriffe der Informatik
320: Softwarewartung
Flags putzen, Strukturen nachrichten und Variablen mit Öl auffüllen. (Hans Bonfigt)
- 14.10.2011 07:12 #11
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
Noch schlimmer, es ist undefiniert.
@Eleu:
Überleg bitte mal genau, was source[255] bedeutet:
source[0] ist das erste Element des Arrays source.
source[1] ist das zweite Element des Arrays source.
...
Was ist dann source[255]? Ganz klar: Das 256. Element des Arrays source
Das Array hat aber nur 255 Elemente. Du vergleichst also den Rückgabewert von strcpy mit der Speicherstelle, die hinter deinem Array steht, und das Ergebnis des Vergleichs ignorierst du.Geändert von Klotzkopp (14.10.2011 um 07:19 Uhr)
"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
- 14.10.2011 07:15 #12
Ja, stimmt. Es geht auch einfacher.
Manchmal braucht man nur mal eben den entscheidenden Hinweis
Hab es jetzt so gemacht:
---------------------------------------------------
char source[255];
sprintf(source," %06s \n",GetTagChar("Prozessvariable"));
printf(source);
---------------------------------------------------
Funktioniert wie gewünscht.
Nochmals Danke.
Gruß
EleuWas wahr ist, ist weder gut noch böse, sondern einfach wahr !
Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913
- 14.10.2011 07:41 #13
- 23.01.2012 12:53 #14
Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913
- 23.01.2012 14:17 #15
Administrator + Moderator
C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
- Reg.-Datum
- 10.07.2001
- Ort
- Essen
- Beiträge
- 8.980
Du musst allerdings sicherstellen, dass der erste String niemals länger als 6 Zeichen wird.Code:char* fill = "000000"; printf(" %s%s \n", pointer1, fill + strlen(pointer1));"Funktioniert nicht" ist keine ausreichende Problembeschreibung.
Aktive Benutzer
Aktive Benutzer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Ähnliche Themen
-
Ausgabe char-Array
Von SaJu im Forum JavaAntworten: 1Letzter Beitrag: 13.12.2010, 12:24 -
Aus String Array in Char Array zum Sortieren
Von notorious.madeye im Forum C und C++Antworten: 5Letzter Beitrag: 27.10.2005, 15:44 -
Variant auf leeren Inhalt überprüfen
Von Riceman im Forum BasicAntworten: 3Letzter Beitrag: 26.04.2005, 11:47 -
Char Array
Von SwordMaster im Forum C++: Compiler, IDEs, APIsAntworten: 2Letzter Beitrag: 18.08.2003, 08:00 -
char-Array to Int
Von Technician im Forum C und C++Antworten: 1Letzter Beitrag: 18.10.2002, 15:46

LinkBack URL
About LinkBacks
Zitieren