怎么在每个单词字母逆序中让标点符号的位置保持不变?
例如:输入
I like thinking...
输出
I ekil gnikniht...
下面是我的代码:
程序代码:
#include <stdio.h> #include <string.h> int main(void) { char a[20]; gets(a); int len; len=strlen(a); char b[20][20]; int i,j,k; int m[20]; j=0; k=0; for(i=0;i<len;i++)//将输入的字符串化为二维数组 每一个单词单独占一行 { if(a[i]==' ') { j++; k=0; continue; } b[j][k]=a[i]; k++; m[j]=k; } /*int t; for(t=0;t<j+1;t++) printf("%d\n",m[t]);*/ int p,q; char c[20][20]; char d[20]; for(p=0;p<j+1;p++)//行 { for(q=0;q<m[p];q++)//列 { if(b[p][m[p]-1-q]>='a'&&b[p][m[p]-1-q]<='z'||b[p][m[p]-1-q]>='A'&&b[p][m[p]-1-q]<='Z') c[p][q]=b[p][m[p]-1-q];//逆序,c为逆序后的数组 } } p=0; while(p<j+1) { for(q=0;q<m[p];q++) { printf("%c",c[p][q]); } p++; printf(" "); } return 0; }
然后我的输出结果是这样的:
i like thinking...
i ekil gnikniht
可以看到,标点符号没有输出且占了位置。请教大佬们我该如何修改才能显示出样例中输出的结果。