【发布时间】:2021-07-20 13:33:22
【问题描述】:
我正在尝试使用 rand() 打印随机单词。 我认为我在指针算法上犯了一个错误,因为我得到了一个奇怪的输出。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main ()
{
srand(time(0));
const int randomBit = rand() % 2;
char * sz[] ={"good", "bad"};
switch (randomBit)
{
case 0:
for (char *i=*sz; *i<(sz+3); i++)
{
printf("%c", *i);
}
break;
case 1:
for (char *i=*(sz+3); *i!=0x0; i++)
{
printf("%c", *i);
}
break;
default:
break;
}
return 0;
}
我的错误是什么? 谢谢。
【问题讨论】:
-
这段代码读起来很痛苦。为什么不打印整个字符串?
-
你可以编写单元测试,在一定程度上保证逻辑是正确的
-
你将 *i 初始化为 *sz,然后检查 *i 是否小于 (sz+3)
-
@sirmeowsalot 描述您要输出的内容。
-
sirmeowsalot 1) “因为我得到了一个奇怪的输出。”并且不发布该输出或预期输出会吸引反对票。最好发布使用的输入(这里没有),看到输出,预期输出。 2) 节省时间,启用所有编译器警告以捕获
*i<(sz+3)等问题。
标签: c pointers pointer-arithmetic