int main(void)
{
int i,j=0,k; //initialization
char equation[100]; //input is a string (I think?)
int data[3]; //want only 3 numbers to be harvested
printf("Enter an equation: ");
fgets(equation, 100, stdin); //not so sure about fgets()
for (i = 0; i < equation[100]+1; i++) { //main loop which combs through
//"equation" array and attempts
//to find int values and store
while (j <= 2) { //them in "data" array
if (isdigit(equation[i])) {
data[j] = equation[i]
j++;
}
}
if (j == 2) break;
}
for (k = 0; k <= 2; k++) { //this is just to print the results
printf("%d\n", data[k]);
}
return 0;
}
您好!这是我在C中的入门课程的程序,我试图梳理一个数组,然后将数字分配给另一个数组,然后我可以访问和操作它。
然而,每当我运行这个时,我得到0 0 0作为我的“数据”数组中的三个元素。
我不确定我的逻辑或数组语法是否出错,因为我是数组新手。
提前致谢!!! :)
答案 0 :(得分:0)
您的代码中存在一些问题:
for (i = 0; i < equation[100]+1; i++) {
应该是
size_t equ_len = strlen(equation);
for (i = 0; i < equ_len; i++) {
无论输入是什么,equation[100]
的值都不确定,因为char equation[100];
,equation
只有100个元素,最后一个是equation[99]
。
equation[i] = data[j];
应为
data[j] = equation[i];
我想您希望将数字存储在equation
到data
。
break;
应该删除。
此break;
语句将跳出while
循环,结果是您将equation
中的最后一位数存储到data[0]
(假设您已切换{{} 1}}和data
,如#2中所述。
如果您想要equation
中的前三位数字,您应该执行类似
equation
equ_len = strlen(equation);
j = 0;
for (i = 0; i < equ_len; i++) {
if (j <= 2 && isdigit(equation[i])) {
data[j] = equation[i];
j++;
}
if (j > 2) break;
}
应为printf("%d\n", data[k]);
printf("%c\n", data[k]);
将提供%d
的ASCII码,例如,如果data[k]
的值为字符“1”,则data[k]
将打印50(ASCII码'1'而不是1。
这是我的最终代码,基于OP代码:
%d
经过测试:
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main(void)
{
int i,j,k;
char equation[100];
int data[3];
int equ_len;
printf("Enter an equation: ");
fgets(equation, 100, stdin);
equ_len = strlen(equation);
j = 0;
for (i = 0; i < equ_len; i++) {
if (j <= 2 && isdigit(equation[i])) {
data[j] = equation[i];
j++;
}
if (j > 2) break;
}
for (k = 0; k <= 2; k++) {
printf("%c\n", data[k]);
}
return 0;
}