我正在编写一个程序来模拟乌龟和兔子之间的比赛。
它们都沿着两个不同的由 70 个元素组成的一维数组移动,当然,由于它们向前和向后移动,它们最终可能会超出元素 0 或 69。
我想使用指针比较来检查它们是否这样做,所以问题来了:
我知道如果我们比较指向同一数组元素的指针,则指针比较是合法的,因为否则我们无法确定它们在内存中的位置。尽管如此,假设我们有:
char arr[70];
char *p1 = &arr[0]
char *p2 = &arr[69]
Run Code Online (Sandbox Code Playgroud)
我们不能确定p1 > p1 - 3 和p2 < p2 + 6,因为在这种情况下,地址将是连续的?我们确切地知道哪个先出现,哪个先出现,对吧?
我做了各种测试,看起来确实如此,但我想确定一下。
我无法修复代码中的奇怪错误。
我编写了一个程序来打印最初以“MM/DD/YYYY”格式编写的日期,以格式化“Month DD, YYYY”。
该程序很简单:我将日期存储在数组中char,然后strtok分别获取月、日、年并将指向它们的指针存储在数组中char *。最终将代表月份的字符串部分转换为int ,从而将其作为打印月份的索引;日和年分别打印。
该程序可以工作,但我真的无法理解这样一个事实:如果我输入 08(八月)或 09(九月)作为月份,它就不会工作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read_date( char * const);
void collect_data( char * const, char *[] );
int convert_month( char * );
int main() {
char *months[12] = {"January", "February", "March", "April", "May", "June", "July","August", "September", "October", "November", "December" };
char orig_date[11];
char *date_elem[3];
int month;
read_date( orig_date );
collect_data( orig_date, date_elem );
month = convert_month( date_elem[0] );
puts("\n*New format*\n");
printf( …Run Code Online (Sandbox Code Playgroud)