作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个围绕特殊区域创建边框的函数(这些信息存储在以下结构表中):
typedef struct s_letter_stock
{
int element_nb;
int width;
int height;
t_pos square_p1;
t_pos square_p2;
} g_letter_stock;
//those values are for the example
g_letter_stock letter_infos[] = {{ 0, 0, 0, {0, 0}, {0, 0} },
{ 0, 0, 0, {0, 0}, {0, 0} }};
我发现了一个疯狂的错误:下面函数中的 for loop
第一次运行良好,但随后它停止了,就像在循环结束时有中断一样(当我打印 nb_elem
它具有正确的值)。所以基本上我不知道为什么 for
在 while
(在评论中)工作时停止。你知道这种奇怪的行为吗?我没主意了。
void create_borders(char **map, int nb_elem)
{
printf("nb_elem : %d\n", nb_elem);
for (int i = 0 ; i < nb_elem ; i++) //THIS dosnt work and stop once i = 1
// int i = 0; //ALL the commentes are part of the other
// int j = 0; //solution that i found which is working
// while (j < nb_elem)
{
int newx = -1;
int newy = -1;
while (newx <= letter_infos[i].width + 1 ||
newy <= letter_infos[i].height + 1)
{
if (letter_infos[i].square_p1.y - 1 >= 0 &&
newx <= letter_infos[i].width + 1)
map[letter_infos[i].square_p1.y - 1][letter_infos[i].square_p1.x + newx] = '@';
if (letter_infos[i].square_p1.x - 1 >= 0 &&
newy <= letter_infos[i].height + 1)
map[letter_infos[i].square_p1.y +
newy][letter_infos[i].square_p1.x - 1] = '@';
if (letter_infos[i].square_p2.y + 1 < strlen (map[0]) &&
newx <= letter_infos[i].width + 1)
map[letter_infos[i].square_p2.y + 1][letter_infos[i].square_p2.x - newx] = '@';
if (letter_infos[i].square_p2.x + 1 < my_tablen (map) &&
newy <= letter_infos[i].height + 1)
map[letter_infos[i].square_p2.y - newy][letter_infos[i].square_p2.x + 1] = '@';
newx++;
newy++;
}
printf ("i = %d\n", i);
i++;
//j++;
}
}
最佳答案
我看到每个循环有2次执行i++
(在 for (int i = 0 ; i < nb_elem ; i++)
和循环结束时)
关于c - For 循环不起作用,但 while 循环起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074849/
我是一名优秀的程序员,十分优秀!