关于两种字符数据处理的讨论
第一种,没必要对输入的字符串进行保存
/*
想法:边读取边判断
*/
#include<stdio.h>
#include<math.h>
#include<string.h>
int main(){
char find[20]={0},ch;
int read1=1,read2=1,read3=1;//设置多个判断的标志,用于打开,关闭
flag=-1,i=0,count=0,sum=-1;
char search[20]={0};// 要有比较的时候才要使用
gets(find);//高效的读取
while(1){
ch=getchar();
if(ch == '\n') break;
if(ch == ' ' && read1 == 1) {
search[i]='\0';
if(cmpare(find,search) == 0){
count++;
if(read3 == 1){
flag=sum;
read3=0;
}
}
while(--i > 0)
search[i]=0;
read1=0;
read2=1;//用于初始化search;
}
if(ch == ' ' && read1 == 0) continue;
if (ch != ' ' && read2 == 1){
sum++;
}
if(ch != ' '){
search[i]=ch;
i++;
read1=1;
read2=0;
}//用多个if 并且将条件每个都标清楚
}
return 0;
}
下面抽离出用于标准化的代码
/*
用于不存放任何东西
*/
char ch,a[xxx];
int read1=1;
int read2=1;//看看用没有必要(补:有必要)
while(1){
ch=getchar();
if(ch == '\n') break;
if(ch == ' ' && read1 == 1){
//为字符的读取初始化;
read1=0;
}
if(ch == ' ' && read == 0){
continue;//用于跳过多余的空格
}
if(ch != ' '){
a[i]=ch;
i++;
read1=1;
}
}
/*
用于存一些数字的基础代码
*/
#include<stdio.h>
#include<string.h>
int main(){
char ch,a[1000]={0};
int i=0;//
int read1=1;
int read2=0;//看看用没有必要
while(1){
ch=getchar();
if(ch == '\n') break;
if(ch == ' ' && read1 == 1){
//为字符的读取初始化;
read1=0;
read2=1;
}
if(ch == ' ' && read1 == 0){
continue;//用于跳过多余的空格
}
if(ch != ' ' && read2 == 1){
a[i]=' ';
i++;
a[i]=ch;
i++;
read1=1;
read2=0;
}
else if(ch != ' ' && read2 == 0){ // 一定要用else if
a[i]=ch;
i++;
}
}
int len=strlen(a);//
for(i=1;i<len;i++){//巧妙地将空格存在a[0]中来达到标准化
printf("%c",a[i]);
}
return 0;
}

浙公网安备 33010602011771号