小编Tal*_*ete的帖子

指针比较

我正在编写一个程序来模拟乌龟和兔子之间的比赛。

它们都沿着两个不同的由 70 个元素组成的一维数组移动,当然,由于它们向前和向后移动,它们最终可能会超出元素 0 或 69。

我想使用指针比较来检查它们是否这样做,所以问题来了:

我知道如果我们比较指向同一数组元素的指针,则指针比较是合法的,因为否则我们无法确定它们在内存中的位置。尽管如此,假设我们有:

char arr[70];
char *p1 = &arr[0]
char *p2 = &arr[69]
Run Code Online (Sandbox Code Playgroud)

我们不能确定p1 > p1 - 3p2 < p2 + 6,因为在这种情况下,地址将是连续的?我们确切地知道哪个先出现,哪个先出现,对吧?

我做了各种测试,看起来确实如此,但我想确定一下。

c pointers

3
推荐指数
1
解决办法
96
查看次数

日期转换程序中的奇怪错误

我无法修复代码中的奇怪错误。

我编写了一个程序来打印最初以“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)

c arrays string

2
推荐指数
1
解决办法
86
查看次数

标签 统计

c ×2

arrays ×1

pointers ×1

string ×1