[C]EOF

luca981
ciao
come faccio ha dare valore a una variabile char end of file 'EOF' ?

#include<stdio.h>
#define MAX_SIZE 30
main()
{
char parola[MAX_SIZE];
parola[0] == 'EOF';
printf("prova     >%s<\n", parola);
}

mi serve per passare un valore vuoto .
in caso di caratteri non trovati .
mi potete aiutare ?
grazie.

Risposte
provola-votailprof
Per dare un valore nullo ad una stringa si usa '\0' che equivale ad un NULL terminator.
Dai anche valore al tuo italiano però ;P

luca981
#include
#define MAX_SIZE 60
main()
{
char parola[MAX_SIZE];
parola[0] == '\0';
printf("prova >%s<\n", parola);
}

il programmino di esempio mi funziona corettamente ! adesso .

mi chiedevo se nello stesso modo posso stampare a video i caratteri ascii
sostituendo il numero '\0' del 'null' ?

grazie ancora

provola-votailprof
Non ho ben capito cosa intendi fare... Anzicché non stampare niente (come dovrebbe fare un print %s con '\0' come variabile stringa), far scrivere null?

PS: se scrivi parola[0]=='\0' non stai facendo un assegnamento ma un controllo, può dare a quel rigo 1 oppure 0, il che verrà completamente ignorato dal programma in runtime... la versione giusta è con un solo =

luca981
mi piacerebbe visualizzare a schermo i caratteri ASCII .
magari solo quelli che si possono riprodurre a schermo ,
peche alcuni sono per gli sterm .
tipo quelli dal 33 il poi .
0 NULL
1 START OF HEADING
2 START OF TEXT
3 END OF TEXT
4 END OF TRANSMISSION
5 ENQUIRY
6 ACKNOWLEDGE
7 BELL (Beep)
8 BACKSPACE
9 HORIZONTAL TAB
10 LINE FEED
11 VERTICAL TAB
12 FORM FEED
13 CARRIAGE RETURN
14 SHIFT OUT
15 SHIFT IN
16 DATA LINK ESCAPE
17 DEVICE CONTROL 1 (XON)
18 DEVICE CONTROL 2
19 DEVICE CONTROL 3 (XOFF)
20 DEVICE CONTROL 4
21 NEGATIVE ACKNOWLEDGE
22 SYNCHRONOUS IDLE
! 33 EXCLAMATION MARK
" 34 QUOTATION MARK
# 35
$ 36
% 37
& 38
' 39
( 40
) 41
ecc. ecc.

luca981
#include<stdio.h>
#define MAX_SIZE 60
main()
{
char parola[MAX_SIZE];
parola[0] == '\0';
printf("prova >%s<\n", parola);
} 


ok
= assegnamento

== controllo

apatriarca
Utilizza %c per visualizzare un singolo carattere e non %s. Nota che lo standard C non garantisce che il tuo computer stia effettivamente utilizzando la codifica ASCII.

abbax
ma quindi tu vorresti "tradurre" una stringa di caratteri in ascii?

luca981
mi chiedevo perche non si usano piu i caratteri ascii .
se si puo in qualche modo utilizzarli ancora .

e mi piacerebbe avere la tabella e il nome della tabella corrente dei caratteri che usa ubuntu
ciao grazie

apatriarca
I caratteri ASCII sono troppi pochi per poter essere usati in tutto il mondo. Non è neanche sufficiente per tutte le maggiori lingue europee. Su ubuntu non so cosa si utilizzi. Credo UTF8 o forse una codifica unicode a 16bit. Nota che non esiste più la corrispondenza 1byte = 1 carattere...

abbax
allora... su ubuntu non so se si usa il codice ascii... comunque la tabella è qui

http://www.oppo.it/tabelle/tabella_ascii.htm

luca981
"ZaC":
Per dare un valore nullo ad una stringa si usa '\0' che equivale ad un NULL terminator.
Dai anche valore al tuo italiano però ;P


char parola[0] = '\0';

ma in pratica se io sostituisco lo 0 con un numero
che risultato avrà la mia variabile stringa ??

char parola[0] = '\19';

provola-votailprof
prova... comunque se vuoi stampare il carattere 19 allora
parola[0]=19;
parola[1]='\0';

encelado1
\0 è il caratte NULL o 0
non puoi mettere \32 o \19 non ha senso
non mi ricordo come si chiamano ma hanno lo stesso valore di \n \t
puoi fare semplicemente char c = 67;....
EOF
è una costante definita con il comando al precompilatore
#define EOF -1
puoi fare una prova con printf("%d", EOF);

se vuoi stampare "per ogni numero il carattere corrispondente"
puoi fare con un ciclo for, ti butto giu 2 righe
#include <stdio.h>

int main(){

int c;
for (c='a'; c != 'z'; c++)
   printg("%c = %d\n", c, c);
}

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.