Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Indem du das Programm änderst. ;-]ich will eine Datei einlesen und in einem Array speichern (mit Speicherreservierung). Das Problem ist, dass das Programm mein EOF-Zeichen (ÿ in html) ins letzte Array mitspeichert. Wie kann ich das verhindern?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *input;
char INPUT;
char *m_input = NULL;
int input_counter = 0;
int b = 0;
int c = 0;
input = malloc(sizeof(char));
m_input = malloc(10 * sizeof(char));
while ((*input=getchar()) != EOF)
{
INPUT=*input;
switch(*input)
{
case '@':
{
if (m_input == NULL)
{
m_input = realloc(m_input, 7 * sizeof(char));
}
m_input[b++] = ' ';
m_input[b++] = '[';
m_input[b++] = 'a';
m_input[b++] = 't';
m_input[b++] = ']';
m_input[b++] = ' ';
} break;
default:
{
if (m_input == NULL)
{
m_input = realloc(m_input, 2 * sizeof(char));
}
m_input[b] = *input;
b++;
}
}
putchar(INPUT);
input_counter++;
}
printf("\n----------\n");
int i;
for (i=0;i<=b;i++)
{
printf("b(%d) =\t%p\t%c\n", i, &m_input[i], m_input[i]);
}
free(input);
free(m_input);
return EXIT_SUCCESS;
}
int input;
while ((input = getchar()) != EOF) {
switch (input) {
...
}
}
for (i = 0; i < b; ++i) {
...
}
Nein, ein int wird automatisch zu einem char umgewandelt wenn nötig.Ok, danke für den Hinweis mit int, aber wie kann ich ein int in einen char übertragen? muss ich es casten?
Nochmal: wie sollte m_input denn plötzlich NULL sein?Ich hab jetzt zusätlich folgendes hingeschrieben:
Code:#define MAX 10 int s_max = MAX; // s_max = Speicher Max (10) m_input = malloc (s_max*sizeof(char); // reservier 10 Bytes s_max += s_max; // bei if (m_input == NULL)
if ((s_max - b) < anzahl_benoetigte_zeichen) {
// reallozieren falls der Speicher nicht ausreicht.
...
}
Übrigens wäre es sinnvoller den Speicher nicht jedesmal zu re-allozieren, sondern z.B. gleich immer um 500 Zeichen zu erhöhen.
Gruß