简单C程序-需要帮助 我有一个C++片段: #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char s[2048]; while (fgets(s, sizeof(s), stdin)) { char *pos = strpbrk(s, ">\r\n"); if (pos != 0) { char *end = strrchr( pos, '<' ); if ( end ) *end = '\0'; fputs(pos+1, stdout); } return 0; } }

简单C程序-需要帮助 我有一个C++片段: #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char s[2048]; while (fgets(s, sizeof(s), stdin)) { char *pos = strpbrk(s, ">\r\n"); if (pos != 0) { char *end = strrchr( pos, '<' ); if ( end ) *end = '\0'; fputs(pos+1, stdout); } return 0; } },c,syntax,while-loop,C,Syntax,While Loop,预期产出: C:\Users\Admin\mon.bat C:\test123.bat 您的返回0位于while()循环内,因此它将始终在第一次运行循环后退出。你必须把它搬到外面去 要添加换行符,请替换 if ( end ) *end = '\0'; 与 您的返回0位于while()循环内,因此它将始终在第一次运行循环后退出。你必须把它搬到外面去 要添加换行符,请替换 if ( end ) *end = '\0'; 与 Yout return在“while”循环中 程序的结

预期产出:

C:\Users\Admin\mon.bat
C:\test123.bat

您的
返回0
位于
while()
循环内,因此它将始终在第一次运行循环后退出。你必须把它搬到外面去

要添加换行符,请替换

if ( end )
    *end = '\0';


您的
返回0
位于
while()
循环内,因此它将始终在第一次运行循环后退出。你必须把它搬到外面去

要添加换行符,请替换

if ( end )
    *end = '\0';

Yout return在“while”循环中 程序的结尾应如下所示:

  }
   return 0;
}
Yout return在“while”循环中 程序的结尾应如下所示:

  }
   return 0;
}

尝试放置返回0;`退出while循环

尝试放置返回0;`退出while循环

这一行引起了你的悲伤:

return 0;
如果正确缩进源代码,则可以更容易地看到错误。此处对其进行了更正和缩进:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char s[2048];
    while (fgets(s, sizeof(s), stdin))
    {
        char *pos = strpbrk(s, ">\r\n");
        if (pos != 0)
        {
            char *end = strrchr( pos, '<' );
            if ( end )
                *end = '\0';
            fprintf(stdout, "%s\r\n", pos + 1); /* Fixed formatting */
         }
   }
    return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
chars[2048];
而(fgets,sizeof,stdin))
{
char*pos=strpbrk,“>\r\n”);
如果(位置!=0)
{

这一行引起了你的悲痛:

return 0;
如果源代码缩进正确,则可以更容易地看到错误。此处更正并缩进:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    char s[2048];
    while (fgets(s, sizeof(s), stdin))
    {
        char *pos = strpbrk(s, ">\r\n");
        if (pos != 0)
        {
            char *end = strrchr( pos, '<' );
            if ( end )
                *end = '\0';
            fprintf(stdout, "%s\r\n", pos + 1); /* Fixed formatting */
         }
   }
    return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
chars[2048];
而(fgets,sizeof,stdin))
{
char*pos=strpbrk,“>\r\n”);
如果(位置!=0)
{

char *结束= Struchr(POS,‘对不起,但这不是C++,把你的标签改成C,或者在C++中正确地做这个,你有一个C片段。):如果你真的告诉别人你在用什么语言,你通常可以得到更好的答案。只要你写C代码,就把问题标记为代码> [C]。,询问C.如果你假装是C++,那么你将得到很多答案,告诉你代码应该如何改写在C++ ++ Nim中:使用C的IO东西代替流没有错。马里奥,我没有说过,我只是说这不是C++,它是纯C的,因此更好地标记为C或者在C++中正确地做,没有U。SE假装是另一个……马里奥·Sype包含的不是有效的C++,但是它必须是。所以这是C.sorry,但是这不是C++,把你的标签改成C,或者在C++中正确地做这个,你有一个C片段。如果你真的告诉别人你在用什么语言,你通常可以得到更好的答案。只要你在写C代码,就把问题标记为
[C],询问C.如果你假装是C++,那么你将得到很多答案,告诉你代码应该如何改写在C++ ++ Nim中:使用C的IO东西代替流没有错。马里奥,我没有说过,我只是说这不是C++,它是纯C的,因此更好地标记为C或者在C++中正确地做,没有U。Se假装一个是另一个…@马里奥*包括不是有效C++,但它必须是。所以这是真正的C.嗨,谢谢,但是现在所有的线条都出现在1行,而不是在他们的奥里里亚线,可以做什么来保持他们在原来的线?@马里奥嗨,谢谢,但是现在所有的线条都出现在1行,而不是在他们的。点火线,如何使它们保持在原来的行上?您必须将换行符添加到您截断的行的末尾(例如,在行的后面写一个
'\n'
)。还要注意(对于MSVC,不知道您的编译器)运行时将动态执行
\n
/
\r\n
转换,因此只需编写
'\n'
就足够了。@James:在fputs下面的右括号后添加printf(“\n”)。这样就可以了。@Mario我正在使用mingw(前端流血),你能给我一个如何在我的代码中添加换行符的例子吗?嗨,谢谢,但是现在所有的划线都显示在一行上,而不是在它们的原始行上,可以做些什么来保持它们在原始行上?@Mario嗨,谢谢,但是现在所有的划线都显示在一行上,而不是在它们的原始行上,可以做些什么来保持它们在原始行上n原始行?您必须将换行符添加到您截断的行的末尾(例如,在行的后面写一个
'\n'
)。还要注意(对于MSVC,不知道您的编译器)运行时将动态执行
\n
/
\r\n
转换,因此只需编写
'\n'
就足够了。@James:在fputs下面的右括号后添加printf(“\n”)。这样就可以了。@Mario我正在使用mingw(前端流血),您能给我一个如何在代码中添加换行符的示例吗?