程序不计数

Program not coutting

本文关键字:程序      更新时间:2023-10-16

我正在使用以下代码,但它只要求我输入并关闭,而不计算我的输入

#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
#include <stdlib.h> 

using namespace std;
int main(){
    int balance=0;
    int withdraw=0;
    char* str;
    cin.getline(str,10);
    cout<<str;  
    withdraw=atoi(strtok(str," "));
    balance=atoi(strtok(NULL," "));
    cout<<withdraw<<" "<<balance;
    return 0;

}
char* str;

这只给你一个指针。那个指针不指向任何地方,特别是不指向你可以写的char。当你调用cin.getline(str,10)时,它尝试写到这个指针指向的地方。这就产生了未定义行为。一个简单的修复方法是使str成为10 char s的数组:

char str[10];

但是,我建议您开始使用std::string,而不是找出如何使用std::string执行strtok类似的操作。提示:看std::istringstream

您需要为str分配内存。

char *str = new char[10];  

,否则使用未初始化的指针将调用未定义行为。在使用完str之后,调用delete来释放分配的内存。

delete[] str;

与其使用char *,不如使用std::string