【发布时间】:2016-09-05 12:37:15
【问题描述】:
我正在尝试将字符串类型的数字存储到二维数组中。将字符串存储为数字时,它根本不存储它,而是显示0000。
while(m<sm) /*storing string into integer array */
{
if(isdigit(input4[m])) /* string to 2D array conversion*/
{
K=input4[m]-'0';
K1=input4[m+2]-'0'; // changed from m+1 to m+2
cout<<K<<"\t"<<K1;
arr[K][K1]=2;
cout<<"\n";
}
m++;
}
for(int i =0; i<input1 ;i++){
for(int j =0;j<input2;j++){
cout<<arr[i][j];
}
cout<<endl;
}
输入: 2,1,2,2,3,2,2,2,2,3,2,3,3,3,1,3
输出: 2 1 1 -4 2 2 2 -4 3 2 2 -4 2 2 2 -4 2 3 3 -4 2 3 3 -4 3 3 3 -4 1 3 3 -7 0000 0001 0111 0011
我的问题是第二列是什么?它应该是: 2 1 2 2 3 2 依此类推,因为这些是 K 和 K1 的值。我想将字符串形式的元素存储到二维数组中,方法是将两个常规元素与矩阵的坐标进行对话,然后我想将 1 存储在坐标 K 和 K1 处。它仅在 6 个坐标上存储 1,但根据输入必须在 8 个坐标上。
【问题讨论】:
-
你有没有逐句调试你的程序?我也无法重现。请发帖minimal reproducible example
-
@FirstStep:
isdigit是一个标准的 C 函数。 -
是的。我使用了 bits/stdc++.h 一个头文件,isdigit 工作得非常好我已经调试它没有问题,但我不知道为什么它不在坐标位置存储 1
-
@DeepakMalhotra:这不是标准标题,
isdigit来自<cstdlib>。但这是一个不相关的问题(这就是为什么这是评论,而不是答案) -
@DeepakMalhotra 不是检查编译器错误的编译器,而是允许您遍历执行代码的调试器。听起来您可能需要学习如何使用调试器来逐步执行代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。进一步阅读:How to debug small programs