求大佬帮忙看个c++程序哪里有问题,没有办法正确输出

用指针法编写程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,还要求在被调用函数中完成复制。
#include <iostream>
using namespace std;
void fun(char s[],int m,char *a)
{int i=m-1;
while(s[i]!='\0')
{*a=s[i];
a++;
i++;
}}
main()
{int m,i=0;
cout<<"输入一个数: ";
cin>>m;
char x[100];
char b[100];
cout<<"输入一个字符串: ";
gets(x);
fun(x,m,b);
while(b!='\0')
{cout<<b[i]<<" ";
i++;
}
}

修改好的代码如下,错误见代码中的注释:

#include <iostream>
using namespace std;
void fun(char s[],int m,char *a)
{
    int i=m-1;
    while(s[i]!='\0')
    {
        *a=s[i];
        a++;
        i++;
    }
}

main()
{
    int m,i=0;
    cout<<"输入一个数: ";
    cin>>m;
    char x[100];
    char b[100];
    cout<<"输入一个字符串: ";
    cin>>x;//不能用gets,因为第一个cin回车符还在系统缓冲。
    fun(x,m,b);
    while(b[i]!='\0') //这里改成这样
    {
        cout<<b[i]<<" ";
        i++;
    }
}

追问

没有用,还是出现这样

追答

你输入的字符串是什么,什么都没有输入就回车了?

追问

没有输,输完数之后直接就这样了。是我编译软件的问题吗?

追答

编译器不可能出问题,cout<<"输入一个字符串: "<<endl;这样写看看

追问

莫得办法

追答

用cin>>x;代替gets看看,另外把你代码截个图看看

追问

这个可以,但是为啥gets在这不行呢?感谢您了,时间不早了,早点休息吧。如果可以的话,我希望明天您能解答我这个问题。

追答

问题是第一个输入数字的cin的回车符,在系统输入缓冲中没被清除,当gets发现这个回车符就直接返回了
你可以这样测试下,还是用gets,但在cin>>m;下一行加个cin.get();把这个回车符读出来,gets就可以正常了。
为什么gets改cin>>x能成功,正因为cin不考虑回车符。

温馨提示:内容为网友见解,仅供参考
无其他回答

求大佬看看我这个C++程序哪里有问题,是一个简单加密和解密的
程序的问题:secret函数中for循环的括号后加上了分号,导致for循环没有执行循环体,而且会导致循环体中的a变量未定义,编译不通过。解决方案:去掉secret中for循环括号后的分号。

C++为什么代码运行无效果?
你的代码和调试方法有以下几个问题:函数NodeCount有误:\/\/统计该二叉树的结点个数int NodeCount(BiTree &T){if(T=NULL) return 0;\/\/这里=应该为==else return NodeCount(T->lchild)+NodeCount(T->rchild)+1;}应该为:\/\/统计该二叉树的结点个数int NodeCount(BiTree &T){if(T==NULL) ...

求大佬看看这个程序错在哪语法错误:“|” 缺少“;”(在“{”的前面...
a) 先不说这个具体错误,下面语句中的new pcb_node()后立刻赋值temp=jc1那么new就毫无用处。楼主对C++理解还是错误的。还是找个链表输入的具体例子看看 void shuru(pcb_node* jc1){ pcb_node* temp = new pcb_node();int requiredtime;temp = jc1;b)既然有输入函数,那么main开头那一堆new和...

C++一道简单算法题,大佬们看下为什么我的代码不能满分通过?
C++算法题:按题目的意思n<=2*10^9 图中红色框内代码i*j是有可能超过这个范围的,造成整数最大溢出得不到正确结果。应该改为一个for循环,从最大的数开始往小的数搜索,不要用乘法,用除法。for(int i = n-1; n >= sqrt(n); i--){ if(n%i==0)maxNum= i;break;} 当然这些要保证...

dnf'运行是显示微软Visual C++运行库运行时错误程序:C\\WeGame\\地下城与...
方法一:开始--运行--输入cmd 输入 cd %windir%system32 回车 输入 Regsvr32 Msxml3.dll 再回车 此问题的原因即为微软C++语言运行错误 方法二:电脑系统出现文件丢失,可以尝试使用360或者腾讯电脑管家检,或者是备份好文件后重新安装系统。以上就是小编为大家带来的全部内容,更多精彩尽在973...

c++ T1132:石头剪子布,求大佬看看我这代码哪里错了
这样的输入,输入为空格或回车时,都是不“出错”的,程序会自动“跳过”空格或回车,等待继续输入的。程序改过了,试试看能行否?include<cstring> include<cstdio> include<iostream> using namespace std;char s1[101][8],s2[101][8];int main(){ int i,j,n;scanf("%d",&n);for(i=0...

C++关于编写解二元一次方程程序出现的错误?
图中红色框内代码开平方根有误,^在c语言中是表示异或操作,要求两边必须为整数,所以你使用double类型会报错。开平方根可以用double sqrt(double num)库函数。

求助!Dev C++编写的程序不能运行,提示不支持的16位应用程序
你有没有装腾讯手游助手。我的电脑就是装了腾讯手游助手就这样了。所以我把腾讯手游助手和Dev卸了,强力清理卸载残留,重启电脑,重装Dev就好了。不知道你是不是这样。如果没装腾讯手游助手,那可能是其他应用导致。你发生这个不兼容前有没新装什么或系统更新,如果有可能是那个的问题。。。

C++做也不会,求大佬帮助谢谢
经典的01背包问题,使用动态规划求解,C++代码如下:include <bits\/stdc++.h> \/\/ C++万能头文件 using namespace std;using pii = pair<int, int>; \/\/ 每个物品的价格和重要度 int main() { int n, m; \/\/ 商品总钱数和个数 cin >> n >> m;vector<pii> items; \/\/ 记录m件商品 for...

Dev c++运行程序后等两秒才能输入?
出现问题的原因:1.输入语句前有操作(比如初始化或申请变量),这些都需要时间。如果开了好几个特别大数组或电脑运行慢,就会过几秒才能输入。解决方法:初始化不要用for,要用memset,省去不必要的变量申请。2.系统问题。比如我之前win7 32位的系统跑程序,得等几秒才能出结果。我换了win10就啥事...

相似回答