Ich versuche, ein Array zu erstellen, die Benutzereingaben zu speichern, und ich brauche das Array, um die genaue Länge der Benutzereingabe zu sein. Ich möchte die Länge der Benutzereingabe nehmen und diese als die Länge des Arrays verwenden. Wie kann ich das mit Strlen machen? Gibt es einen besseren Weg?mit Strlen, um die Länge der Benutzereingabe zu finden c
Antwort
Dies ist eine Möglichkeit, Speicher nach Bedarf zu erfassen. Ich würde CHUNKSIZE
mehr als 4
verwenden, aber ich beschränkte es für das einfache Testen.
#include <stdio.h>
#include <stdlib.h>
#define CHUNKSIZE 4
int main(void){
char *text;
int maxlen = CHUNKSIZE;
int index = 0;
int ch;
text = malloc(CHUNKSIZE);
if(text == NULL)
exit(1);
printf("Enter your text:\n");
while((ch = getchar()) != EOF && ch != '\n') {
text[index++] = ch;
if (index >= maxlen) {
maxlen += CHUNKSIZE;
text = realloc(text, maxlen);
if(text == NULL)
exit(1);
}
}
text[index] = 0; // terminate
printf("%d You entered: %s\n", maxlen, text);
free(text);
return 0;
}
Programmsitzung:
Enter your text:
A quick brown fox jumps over the lazy dog.
You entered: A quick brown fox jumps over the lazy dog.
Nitpicking: 'maxlen' und' index' sollten mindestens 'size_t' oder' unsigned' sein. – alk
@alk vereinbart, und auch in richtigen Programmen sollte das Ergebnis von 'realloc' getestet werden, bevor der ursprüngliche Wert verloren geht. –
Auch die Verwendung einer Do-While-Schleife würde den ersten Aufruf von 'malloc()' überflüssig machen. Du hast mein 1+ aber ... ;-) – alk
Bevor Sie Ihre eigene Funktion schreiben, können Sie den folgenden Code versuchen:
char *str;
scanf("%ms", &str); // <--- Note the & before str
// Do something with str...
free(str);
Dies ist eine Erweiterung der ISO-C-Standard supported on all POSIX.1-2008-conforming systems.
- 1. wie Stringlänge finden Verwendung in Ziel c Strlen
- 2. Umgang mit char * in C# (Strlen-Funktion?)
- 3. So finden Sie die Länge von argv [] in C
- 4. Warum gibt PHP strlen() negative Länge zurück?
- 5. C - Lesen der Benutzereingabe
- 6. Schleife, um Benutzereingabe zu validieren
- 7. Ist die Kompilierzeit "strlen()" wirksam?
- 8. strlen gibt keine korrekte Stringlänge C
- 9. Müssen die am meisten wiederkehrende Länge finden, um dann die Zeile zu finden, die nicht die gleiche Länge wie der Rest hat
- 10. finden die „String-Länge“ eines int
- 11. mit fsolve, um die Lösung zu finden
- 12. Finden der Länge der Kontur in opencv
- 13. Benutzereingabe Text zu CSV-Datei vergleichen C#
- 14. strlen Funktion Rekursion in c
- 15. Pandas vektorisierte Operation, um die Länge der Zeichenfolge zu erhalten
- 16. Javascript Prompt Um die Länge der Zeichenfolge zu berechnen
- 17. Wie die Länge von unsigned char * finden in C
- 18. So finden Sie die Länge eines LPCSTR
- 19. C# Algebra Formel, um Muster zu finden
- 20. die maximale Länge von Listen in c finden #
- 21. Regex, um die Codeblöcke in C zu finden #
- 22. strlen() nicht mit String Arbeitsvariable
- 23. Finden der Länge der maximalen Diskontinuität
- 24. Sizeof vs Strlen
- 25. Finden Permutation der Zeichenfolge der Länge k
- 26. Strlen von char * malloc
- 27. SFML/C++ Benutzereingabe simulieren
- 28. Finden Sie die Länge des längsten Teilstrings
- 29. Sicherungstupel, um Äquivalenzklassen zu finden
- 30. Warum kann ich einen Funktionsaufruf nicht verwenden, um die Länge eines Arrays zu deklarieren?
'malloc' eine kleine Größe und" realloc "mehr Speicher wie erforderlich. –
* Warum * brauchen Sie das Array, um die genaue Länge der Eingabe zu erhalten? – EOF
Warum strlen? Was versuchst du zu erreichen? Was sollte dieses Array enthalten? Zahlen? Briefe ? Editiere deine Frage und sei spezifischer –