//错误的代码!较麻烦的方法,导致不知道哪里输出有问题!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char m[100][134];
char in[134];
int main(){
memset(m, '\0', sizeof(m));
memset(in, '\0', sizeof(in));
int r = 0;
while (fgets(in, sizeof(in), stdin) != NULL){
char *p = in;
char *write = m[r];
while (*p){
if (*p == '!' || *p == '\n'){
*write = '\n';
write = m[++r];
}
int n = 0;
while (isdigit(*p)){
n += *p++ - '0';
}
for (int i = 0; i < n; ++i){
*write++ = (*p == 'b' ? ' ' : *p);
}
++p;
}
for (int i = 0; i < r; ++i){
printf("%s", m[i]);
}
r = 0;
memset(m, '\0', sizeof(m));
memset(in, '\0', sizeof(in));
}
return 0;
}
//更简易的方法
#include <stdio.h>
#include <ctype.h>
int main(){
char ch = '\0';
int n = 0;
while ((ch = getchar()) != EOF){
if (isdigit(ch)){
n += ch - '0';
}
else if (ch == '!' || ch == '\n'){
putchar('\n');
}
else{
if (ch == 'b'){
ch = ' ';
}
for (int i = 0; i < n; ++i){
putchar(ch);
}
n = 0;
}
}
return 0;
}