C++ 字符数组转化成整型数组
发布网友
发布时间:2023-07-14 07:38
我来回答
共3个回答
热心网友
时间:2024-11-26 05:13
// 代码修改了,修改的地方都加了注释,看不懂再问我
// 其实你这个写法只能取到个位数字,如果是两位以上的数字,用这样的方法就不行了
#include "string.h"
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
cout<<"请选择你要的排序方式:"<<endl;
cout<<"1.冒泡排序"<<endl;
cout<<"2.选择排序"<<endl;
int choice;
cin>>choice;
cin.get();
cout<<"请输入需要排序的数字:"<<endl;
const int max_size=99;
char str[max_size];
cin.getline(str,max_size);
int array[max_size],i,count;
//count=strlen(str)-1;
count = strlen(str); // 这里应该用整个字符数组的长度
int j = 0; // 记录有多少个数字
for(i=0,j = 0;i<count;i++)
{
// str[i]有可能是空格,所以要判断一下
if (str[i] == ' ')
{
continue;
}
array[j]=str[i]-'0';
j++;
}
count = j;
for(i=0;i<count;i++)
cout<<array[i] ;
system("PAUSE");
return 0;
}
热心网友
时间:2024-11-26 05:13
str = "1 2\000\213\004\b\001\000\000\000\377\377\000\000\370\370\377\267\250\360\377\277\065\022Է5\020Է\250\360\377\277\255\213\004\b$\003\347\267\364\237\004\b\270\360\377\277 \207\004\b\200\020\377\267\364\237\004\b\350\360\377\277I\213\004\b$\003\347\267\364\377\346\267\060\213\004\b\350\360\377\277\065\022Է\200\020\377\267;\213\004\b"
array = {1, -16,
调试发现,str中有空格,在1和2之间,也就是你输入的1和2之间的空格
空格的ASCii值是32,‘0’是48,所以出现了一个-16,为了避免这种情况,你必须把str中的空格去掉。
热心网友
时间:2024-11-26 05:14
count=strlen(str)-1;
改为count=strlen(str);
并且你没写排序的代码啊,根本没排啊,只是原样输出。追问
count=strlen(str)-1;也还是不对的;
排序的函数还没写,转化整型数组就出问题了;
追答你不要带空格,直接输入12353这样是不会出错的。
如果你一定需要加空格,就要对输入赋值修改下。