【九度OJ】1168【字符串删除】【C实现】
2014-09-09 14:40
387 查看
这道题做了好久。。。开始是因为C的读入字符串不太会,所以各种查资料,还是有很多细节弄不清楚,开始用getchar()可是死活就是WA,不知道哪里错了。因为这道题的输入有要求,一个字符串是有空格的,所以用gets()可以!!它是以回车结束一次读取。读到文件末尾返回Null。无论是Java,还是C输入输出流的学习和研究都很重要,很多细节要注意。之前还试过getline()不过弄不太懂。
Java更绝,一个replace函数搞定,都封装好了,还是写C锻炼人啊!
还有就是C中没有bool类型,用0表示假,用1表示真。。就这个问题,提交了n次,都是compile error。。。。。。
代码:
错误代码,如果大家发现哪里错了可以告诉我!
Java更绝,一个replace函数搞定,都封装好了,还是写C锻炼人啊!
还有就是C中没有bool类型,用0表示假,用1表示真。。就这个问题,提交了n次,都是compile error。。。。。。
代码:
/* by qr 2014-9-4 jobdu 1168 字符串的查找删除 练习C的字符串处理 916KB(内存) 1237B(代码长度) 0MS */ #include <stdio.h> #include <ctype.h> //int tolower(int c) 字符转换成小写字母 #include <string.h> //C中可以用 int bijiao(char str1[],char str2[],int index,int len1); //C中没有bool类型 0表示假 1表示真 int main(){ int a; char str1[100]; scanf("%s",str1); //s-->char[] getchar();//消化一个回车符 int len1=strlen(str1); char str2[100]; int len2=0; while((gets(str2))!=NULL){ //output len2=strlen(str2); int i=0; for(;i<len2-len1+1;i++){ if(bijiao(str1,str2,i,len1)){ i=i+len1-1; }else if(str2[i]!=' '){ printf("%c",str2[i]); } } for(;i<len2;i++){ //剩下的还要再打印出来 if(str2[i]!=' ') printf("%c",str2[i]); } //reset printf("\n"); //c-->char } return 0; } int bijiao(char str1[],char str2[],int index,int len1){ for(int i=0;i<len1;i++){ if(tolower(str2[index+i])!=tolower(str1[i])){ return 0; } } return 1; }
错误代码,如果大家发现哪里错了可以告诉我!
#include <stdio.h> #include <ctype.h> //int tolower(int c) 字符转换成小写字母 #include <string.h> //C中可以用 int bijiao(char str1[],char str2[],int index,int len1); //C中没有bool类型 0表示假 1表示真 int main(){ int a; char str1[100]; scanf("%s",str1); //s-->char[] getchar();//消化一个回车符 int len1=strlen(str1); char str2[100]; int len2=0; while((a=getchar())!=EOF){ if(a=='\n'){ //output int i=0; for(;i<len2-len1+1;i++){ if(bijiao(str1,str2,i,len1)){ i=i+len1-1; }else if(str2[i]!=' '){ printf("%c",str2[i]); } } for(;i<len2;i++){ //剩下的还要再打印出来 if(str2[i]!=' ') printf("%c",str2[i]); } //reset printf("%c",a); //c-->char len2=0; }else{ str2[len2++]=a; } } return 0; } int bijiao(char str1[],char str2[],int index,int len1){ for(int i=0;i<len1;i++){ if(tolower(str2[index+i])!=tolower(str1[i])){ return 0; } } return 1; }
相关文章推荐
- 九度OJ-题目1168:字符串的查找删除-string的使用(转)
- 九度-1168 字符串的查找删除
- 【九度OJ】1490【字符串链接】【C实现】【哈工大2012】
- 九度oj-字符串的查找删除
- php中删除字符串中最先出现某个字符的实现代码
- 【Windows批处理III】实现删除含自定字符串的文件和文件夹(搜索子目录)
- 【九度OJ1512】|【剑指offer7】用两个栈实现一个队列
- 设计一个函数实现将一个字符串中的大写字符变为小写字符,小写字符变为大写字符,数字不变,删除其他字符
- 使用正则表达式实现删除字符串中的空格
- 九度OJ 1512 用两个栈实现队列 【数据结构】
- 字符字符串九度OJ 1049 字符串去特定字符
- 编程实现删除字符串中所有给定的子串
- 九度OJ 1066 字符串排序
- C语言实现从字符串中删除*
- 九度OJ 题目1066:字符串排序
- 【九度OJ】题目1206:字符串连接
- php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
- 字符串的删除,递归实现
- 编写代码实现删除一个字符串中连续出现超过一次的空格
- php中删除字符串中最先出现某个字符的实现代码