Ciao a tutti, sto svolgendo un esercizio la cui consegna è:
Si scriva un programma C che acquisisca sequenze di caratteri da tastiera conclusa da un ritorno a capo. Il programma deve continuare ad acquisire sequenze fino alla ricezione di un EOF (Ctrl-z). Il programma deve quindi stampare le sequenze caratteri acquisiti
a. Sostituendo ad ogni sequenza “ch” il carattere ‘k’
b. Sostituendo le doppie con una sola ripetizione del carattere.
Ho scritto questo codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int main()
{
char s[N][N];
int i=0,j,k,n,c;
printf("Inserire il testo, EOF per terminare: ");
for(j=0;s[i][j-1]!=EOF;j++) //c!=EOF
{
//c=getchar();
s[i][j]=getchar();
if(s[i][j]=='\n') //c=='\n'
i++;
}
n=i;
for(i=0;i<n;i++)
{
for(j=0;j<strlen(s[i]);j++)
{
if(s[i][j]=='h' && s[i][j-1]=='c')
{
s[i][j-1]='k';
for(k=0;k<(strlen(s[i])-j);k++)
s[i][j+k]=s[i][j+k+1];
}
if(s[i][j]==s[i][j-1])
{
for(k=0;k<(strlen(s[i])-j);k++)
s[i][j+k]=s[i][j+k+1];
}
}
}
for(i=0;i<n;i++)
{
printf("%s ",s[i]);
}
return 0;
}
il quale però funziona solo per la prima riga di caratteri inserita e non memorizza le righe seguenti, dalla seconda in poi. Secondo voi dove sbaglio? Grazie mille in anticipo!