primi passi con il C...
sto usando il libro di kernichan e ritchie (ottimo ) e mi sto scervellando con gli esercizi proposti
ad esempio ce n'è uno che dice di scrivere un programma che quando incontra, in una riga di ingresso, + spazi vuoti o + tabs deve sostituirli con uno solo spazio o un solo tab rispettivamente, mentre quando la riga è completamente "bianca" la deve eliminare.
dopo ORE di fatica il mio risultato è questo
#include <stdio.h>
#define MAX 1000
int getline(char line[], int max);
int counter_blanks(char line[], int lenght);
int main()
{
char line[MAX];
int i, p, lenght;
lenght = 0;
for (i = 0; i < MAX; ++i)
line[i] = 0;
while ((lenght = getline(line, MAX)) > 0) {
p = EOF;
if (counter_blanks(line, lenght) < lenght - 1){
for (i = 0; i < lenght - 1; ++i){
if (line[i] == ' ' || line[i] == '\t' || line[i] == '\n') {
if (p != line[i])
putchar(line[i]);
}
else
putchar(line[i]);
p = line[i];
}
}
putchar('\n');
}
return 0;
}
int counter_blanks(char line[], int lenght)
{
int i;
int count = 0;
for (i = 0; i < lenght - 1; ++i) {
if (line[i] == ' ' || line[i] == '\t' || line[i] == '\n')
++count;
}
return count;
}
int getline(char line[], int max)
{
int i,c;
for (i=0; (c = getchar())!=EOF && i < max-1 && c != '\n'; ++i)
line[i] = c;
if (c == '\n') {
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}
sembra ke funzioni, ma il problema è resenta dei bachi?? VVoVe: come faccio a trovarli??
ad esempio se in ingresso ho un blank ed un tab consecutivi, il programma me li stamperà entrambi. e se volessi che in questo caso venga stampato solo il blanck indipendentemente se si trova prima o dopo del tab?? :master:
premetto che sono ancora agli inizi: mai visti puntatori!!
uso solo: if else while for putchar getchar e solo l'intestazione <stdio.h>
non so se questo è il posto adatto per questo post, comunque vi rigrazio fgià se vorrete togliermi questi dubbi