C语言问题,关于如何把window下编程\r\n变成Linux中的换行\n

本机运行正确, 但是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;
}