![](/img/trans.png)
[英]Why does 'write()' take a const buffer while 'read()' doesn't?
[英]Why Does the function doesn't take the value
我正在处理 C 中的一个问题,该问题将开始和结束时间作为输入,并建议所有可能的一小时。 插槽,我在我的代码中编写了一个简单的函数,当我运行它时,我没有收到任何错误,但是我得到了不相关的输出,当我通过 gdb 运行我的代码时,我看到我的函数不接受输入数据而是采用它为0
#include<stdio.h>
#include<stdlib.h>
int solve(int* L, int* R, int* N)
{
int slot[2];
int i, j;
if (L[0] == 1)
{
slot[0] = L[0];
slot[1] = L[0] + 1;
}
for (i = 1; L[i] != 0; i++)
{
for (j = 0; R[j] != 0; j++)
{
if (R[j] < L[i + 1])
{
slot[0] = R[j];
slot[1] = R[j] + 1;
}
}
}
for (i = 0; i < *N; i++)
{
printf("%d\t", slot[i]);
}
return 0;
}
int main()
{
int N = 0;
int* L, * R;
int i;
scanf("%d", &N);
printf("%d", N);
L = (int*)calloc(N, sizeof(int));
R = (int*)calloc(N, sizeof(int));
for (i = 0; i < N; i++)
{
scanf("%d\t", &L[i]);
}
for (i = 0; i < N; i++)
{
scanf("%d\t", &R[i]);
}
for (i = 0; i < N; i++)
{
printf("%d\t", L[i]);
}
for (i = 0; i < N; i++)
{
printf("%d\t", R[i]);
}
solve(L, R, &N);
free(L);
free(R);
return 0;
}
请帮助我在我的代码中找到错误
L[i] != 0
循环中的样式条件可能会超出数组的范围。 由于您阅读了 N 个数字,因此您可能打算循环到 N(由于使用[i+1]
可能少了 1 个),或者您的意思是L = (int*)calloc(N+1, sizeof(int));
以确保 0 终止符。 R 自然也是如此,只是你从不使用 [j+1]。
当我调试您的代码时,我看到输入数据已被接受。 我看到的问题是,当涉及到这个solve
函数中的 for 循环时, L[i] != 0
或R[j] != 0
使循环像一个无限循环左右,因为代码给出了不相关的废话数字比您为 L 和 R 数组指定的元素(数量 N)更多。 当我写for(i=0; i<*N; i++)
和for(j=0; j<*N; j++)
时,它可以用您指定的元素结束循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.