2016-07-17 6 views
-3

Grundsätzlich versuche ich, genügend Platz für eine Zeichenfolge zuzuweisen, wie ich die durch Kommas abgegrenzten Zahlen extrahiere. Wie kann ich das in c tun?Wie kann ich eine Zeichenfolge in C initialisieren, ohne die Länge zu kennen, und weiterhin Zeichen an sie anhängen?

Mein Algorithmus ist die Schleife durch den String von Index 0 bis zum letzten Index, und jede Ziffer in eine Zeichenfolge namens temp, und wenn ich auf das Komma stoße, drucke ich die Zeichenfolge.

char* string = "123,4567,8910"; 
char* delimiter = ","; 

size_t i; 
// char temp[] = "" ???? supposed to be a dynamic string/array whatever 
for (i = 0; i < strlen(string); i++) { 
    if (string[i] == ',') { 
     // printf("%s", temp); 
     // clear temp string 
    } else { 
     // append the character string[i] to temp 
    } 
} 
+0

Warum machst du es so? Es ist der falsche Ansatz, also das X Y Problem. Sie müssen uns sagen, ob es Einschränkungen gibt, um dieses Problem zu lösen und was sie sind. Ansonsten gibt es keinen guten Grund, dies so zu tun, wie Sie es möchten. Wenn Sie die Zeichenfolge nur ausdrucken wollen, wenn Sie ein Komma gefunden haben, verwenden Sie einfach 'fputc()' und drucken Sie jedes Zeichen in dem Moment, in dem Sie es finden, und wenn es ein Komma ist, drucken Sie ein '\ n' und gehe zur nächsten Zeile. –

+0

Erstes Problem, Sie verstehen [tag: c] Strings nicht. Wenn Sie sie verstehen, schreiben Sie nicht für (i = 0; i

Antwort

1

Sie ein paar Optionen ...

könnte Sie Schleife durch string und die Anzahl der Stellen zählen, dann Puffer zuweisen auf dieser Grundlage. Das bedeutet, dass Sie die Saite zweimal durchlaufen.

Sie können einen Puffer mit malloc zuweisen und ihn dann bei Bedarf um realloc erweitern. Dies erfordert nur, dass Sie die Zeichenfolge einmal durchlaufen müssen, aber Sie machen einen ziemlich komplizierten Speicherverwaltungstanz.

+0

ahh danke, das ist die Antwort, die ich suchte lol. – user2980691

Verwandte Themen