c/c++语言开发共享程序在接受C中的输入中的第二个字符串之前运行

我试图运行以下代码但程序只接受一个字符串并立即显示输出而不等待输入第二个字符串。 该程序用于2字符串连接。 这是代码: –

#include  main() { int i, j, len=0; char name[100], abc[100]; printf("nPlease Enter String 1 =t"); scanf("%[^n]c",&name); printf("nPlease Enter String 2 =t"); scanf("%[^n]c",&abc); for(i=0; name[i]!=''; i++) len++; for(j=0; abc[j]!=''; j++) { len++; name[len]=abc[j]; } printf("nThe Concatenated String Is =t"); puts(name); } 

    我想建议你不要使用scanf 。 最好用fgets代替。
    顺便说一下,程序只接受一个字符串并立即显示输出而不等待第二个字符串输入的原因是按下Enter键后第一个scanf留下的n字符。 要吃掉这个换行符,你可以在第一次gatchar()后使用gatchar()

     printf("nPlease Enter String 1 =t"); scanf("%[^n]c",name); getchar(); printf("nPlease Enter String 2 =t"); scanf("%[^n]c",abc); 

    其他两个错误是:
    1.错误的增量

     for(i=0; name[i]!=''; i++) len++; for(j=0; abc[j]!=''; j++) { name[len++]=abc[j]; } 

    2.奇怪输出的原因是字符串未终止NUL。 在第二个for循环后添加此行。

     name[len] = ''; // add this to null terminate your string. 

    这是您的工作代码

    使用fgets而不是scanf,你也在错误的位置增加len:

     #include  #include  int main() { int len = 0; char name[100], abc[100]; printf("nPlease Enter String 1 =t"); fgets(name, 100, stdin); len = strlen(name) - 1; name[len] = 0; printf("nPlease Enter String 2 =t"); fgets(abc, 100, stdin); abc[strlen(abc) - 1] = 0; strcpy(name+len, abc); printf("nThe Concatenated String Is =t"); puts(name); return 0; } 

    请改用以下scanf

     scanf("%[^n]",name); ..... scanf(" %[^n]",abc); 

    有关如何使用scanf()更多详细信息,请参阅此scanf()手册页。

    你必须扔掉换行符(’ n’)。

    尝试:

     while(getchar() != 'n') continue; 

    每次scanf

    应该

     scanf("%[^n]%*c", name); printf("nPlease Enter String 2 =t"); scanf("%[^n]%*c", abc); for(i=0;name[i]!='';i++) len++; for(j=0;abc[j]!='';j++){ name[len]=abc[j]; len++; } name[len]=''; 

      以上就是c/c++开发分享程序在接受C中的输入中的第二个字符串之前运行相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/572595.html

      (0)
      上一篇 2021年3月5日
      下一篇 2021年3月5日

      精彩推荐