字符串逆向输出问题
如题 例如输入字符串“what a nice day” 则输出“day nice a what” 字符串多行从文件读取 但我输出的却是“day nice a hat” 调试发现第一个字符‘w’未赋值进数组 应该是read(char s[N][M],int* i)中while(in.get()!=EOF)那句先把第一个字符‘w’get了 然后再调用getline()就没有了第一个字符 可怎么解决这个问题呢?程序代码:
#include<iostream> #include<algorithm> #include<fstream> using namespace std; const int N=10; const int M=100; void reversestring(char* s){ int len=0; while(s[len]!='\0'){ len++; } int k=len; for(int i=len;i>=0;i--){ if(s[i]==' '){ for(int j=i+1;j<=k;j++){ cout<<s[j]; } cout<<" "; k=i; } if(i==0){ for(int j=0;j<k;j++){ cout<<s[j]; } } } } void read(char s[N][M],int* i){ ifstream in("string.txt"); if (!in) { cerr<<"error:can not open file:input.txt"<<endl; return ; } *i=0; while(in.get()!=EOF){ in.getline(s[*i],M); (*i)++; } // for(int j=0;(s[*i][j]=in.get())!=EOF;j++){ // if(s[*i][j]=='\n'){ // (*i)++; // j=0; //// cout<<endl; // } //// else{ ////// cout<<s[*i][j]; //// } // } } int main(){ char s[N][M]; int num=0; read(s,&num); for(int i=0;i<num;i++){ reversestring(s[i]); cout<<endl; } system("pause"); return 0; }