scanf后面的回车会被gets接受,所以必须放个getchar()吃回车
#include<stdio.h> int main() { int n = 0 , m = 0,l = 0, r = 0, i = 0; char arr[100] = {0}, c1 = 0, c2 = 0; scanf("%d%d",&n,&m); getchar(); //吃掉前面scanf的回车 gets(arr); while(m--) { scanf("%d %d %c %c",&l,&r,&c1,&c2); for(i = l -1 ; i <= r - 1; i++) { if(arr[i] == c1) arr[i] = c2; } } printf("%s\n",arr); return 0; }