je tente ma forme d'entrée programme C multiligne stdin avec saut de ligne avec ce codeentrée de chaîne multiligne de stdin dans c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include <math.h>
#define DEFAULT_INPUT_LENGTH 20
char * readMessage(FILE* file);
void writeChar(char* string, char c);
int main()
{
printf("Message:\n");
char * msg = readMessage(stdin);
printf("Input: %s\n", msg);
free(msg);
return 0;
};
char * readMessage(FILE* file)
{
char *input = malloc(DEFAULT_INPUT_LENGTH);
int inputCounter = 0;
int n = 1;
char c;
while(!feof(stdin))
{
c=fgetc(file);
inputCounter++;
if (inputCounter == DEFAULT_INPUT_LENGTH * n)
{
n++;
int chars = DEFAULT_INPUT_LENGTH * n;
input = realloc(input, chars);
}
writeChar(input, c);
}
return input;
}
void writeChar(char* in, char c)
{
int i;
for(i = 0; ; i++)
{
if (in[i] == '\0')
{
in[i] = c;
break;
}
}
}
Mais lorsque je tente CTRL + D sur Linux ou CTRL + Z dans Windows le isnt d'entrée terminé.
Exemple de quelque chose comme d'entrée ceci:
asfer
dfdfd
sffdfl
dans cet exemple si je tente ctrl + D après le dernier l ombles l'entrée isnt fini je dois utiliser entrer et CTRL + D
après dans la dernière nouvelle ligne indice de ligne CTRL + Z et ENTER et
1) Besoin de '* entrée = 0;' au début. 2) 'char c;' -> 'int c;' 3) 'while (! Feof (stdin)) { c = fgetc (fichier);' -> 'while ((c = fgetc (fichier))! = EOF) {'4)' dans [i] = c; '->' dans [i] = c; dans [i + 1] = 0; ' – BLUEPIXY
j'essaie ces changements dans les fenêtres mais toujours CTRL + Z après dernier caractère non terminé entrée – mardon
tapez seulement CTRL + Z avec entrer dans une ligne. N'entrez pas (CTRL + Z) les caractères suivants. – BLUEPIXY