本机运行正确, 但是wrong answer。 个人认为应该是\r\n的问题,求大神指点
C语言问题,关于如何把window下编程\r\n变成Linux中的换行\n
Description
给出一个字符串str和一个字符ch,如果字符串str含有字符ch,就从该字符首次出现的位置开始,输出字符串中的字符至结束。如果字符串str不含字符ch,则输出"Not Found"。(注意首字母大写)
Input
多测试用例。
每个测试用例占2行,第一行是字符串str,第二行是字符ch。字符串长度不超过1000。
Output
为每个测试用例输出一行:所求结果。
Sample Input
program
r
school
a
Sample Output
rogram
Not Found
Hint
windows与linux在换行这点上有所不同:
windows 基本上行末用2个符号 "\r"(回车符) 和 "\n"(换行符) 来表示下一行;
而Linux 只用一个 "\n" 来表示下一行。
所以,windows下编程有时要用getchar()来读走那个多余的"\r"。
本OJ服务器的OS是Linux
#include
int main(void){
char c[1005], cha, ch, *p;
int xia, sum;
while(gets(c)!=0){
scanf("%c", &ch);
cha=getchar();
sum=0;
for(p=c; *p!='\0'; p++)
if(*p==ch)
{ sum++; break; }
if(sum==0)
printf("Not Found\n");
else
{
for(; *p!='\0'; p++)
printf("%c", *p);
printf("\n");
}
}
return 0;
}
if(sum==0)
printf("Not Found\n");
else
{
for(; *p!='\0'; p++)
printf("%c", *p);
printf("\n");
}
这段代码改一下即可:
if(sum==0)
printf("Not Found\n");
else
{
for(; *p!='\0'; p++){
if(*p == '\r')
continue;
printf("%c", *p);
}
printf("\n");
}
头文件加个宏就行了。
字符串操作啊,基本的c语言编程了。如果想偷懒还有个法,就是,大部分的Linux发行版都有dos2unix命令,如果是在Linux下编程,可以直接调用之,很简单,一行代码即可实现转换。Android上只需要改调用busybox dos2unix就行
碰到/r/n直接替换或者是直接将/r/n定义成宏都可以的、、、
试试这个
#include<stdio.h>
int main(void){
char c[1005], ch, *p;
int sum;
while(gets(c)!=0){
scanf("%c", &ch);
fflush(stdin);//清除缓存
sum=0;
for(p=c; *p!='\0'; p++)
if(*p==ch)
{ sum++; break; }
if(sum==0)
printf("Not Found\n");
else
{
for(; *p!='\0'; p++)
printf("%c", *p);
printf("\n");
}
}
return 0;
}