小编Hem*_*mil的帖子

为什么此非空终止的字符串正确打印

昨天,我进行了单元测试。程序之一是复制字符串并找出没有字符串功能的长度。这是我写的代码:

#include <stdio.h>

int main(){
    char str1[100], str2[100] = {'a'};

    printf("Enter a string\n");
    fgets(str1, sizeof(str1), stdin);

    int i;
    for(i = 0; str1[i] != '\0'; i++){
        str2[i] = str1[i];
    }   

    str2[i] = '\0';

    printf("Copied string = %s", str2);

    printf("Length of string = %d", i-1);
}
Run Code Online (Sandbox Code Playgroud)

我有一个相当令人惊讶的观察!即使添加了注释str2[i] = '\0',该字符串也将正确打印,即,'a'在初始化中没有多余的,据我所知,不应将其覆盖。

评论后str2[i] = '\0',我希望看到以下输出:

test
Copied string = testaaaaaaaaaaaaaaaaaaaaaaaaaaa....
Length of string = 4
Run Code Online (Sandbox Code Playgroud)

这是输出:

test
Copied string = test
Length of string = 4
Run Code Online (Sandbox Code Playgroud)

如何str2正确打印?编译器可以识别字符串的复制并静默添加空终止符吗?我正在使用gcc,但是clang也会产生类似的输出。

c string initialization c-strings

6
推荐指数
1
解决办法
75
查看次数

过期后重新订阅时,Google Play 商店不会返回 obfuscatedExternalAccountId

重现步骤:

  1. 在应用程序中订阅订阅
  2. 前往 Google Play 商店并取消订阅。
  3. 返回订阅页面
  4. 等待订阅到期
  5. 订阅现在将显示在过期标题下方。
  6. 单击重新订阅。

我收到的 Google Play 商店通知是:

{
    "version": "1.0",
    "packageName": "package.name",
    "eventTimeMillis": "111111111111",
    "subscriptionNotification": {
        "version": "1.0",
        "notificationType": 4,
        "purchaseToken": "purchase token",
        "subscriptionId": "first_subscription"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用订阅 get api时,我得到:

{
    "startTimeMillis": "1635472371631",
    "expiryTimeMillis": "1635472675112",
    "autoRenewing": false,
    "priceCurrencyCode": "EUR",
    "priceAmountMicros": "4300000",
    "countryCode": "IN",
    "developerPayload": "",
    "cancelReason": 1,
    "orderId": "GPA.3388-8947-4636-69596",
    "purchaseType": 0,
    "acknowledgementState": 0,
    "kind": "androidpublisher#subscriptionPurchase"
}
Run Code Online (Sandbox Code Playgroud)

如果我既没有混淆的ExternalAccount id 也没有要查询的linkedPurchaseToken,我该如何识别用户?

in-app in-app-subscription

5
推荐指数
1
解决办法
1850
查看次数

如何在C ++中查找上周一的日期

我想制作一个不输入任何内容并返回上一个星期一的日期的程序。(我不在乎时区。我只担心公历)。我正在使用Howard Hinnant的日期。这是我目前正在做的事情:

#include <iostream>
#include <date/date.h>

int main() {

    auto todays_day = date::year_month_weekday(date::floor<date::days>(std::chrono::system_clock::now()));

    auto todays_date = date::floor<date::days>(std::chrono::system_clock::now());

    int offset = 0;

    auto weekday = todays_day.weekday();

    if(weekday == date::Tuesday)
        offset = 1;
    else if (weekday == date::Wednesday)
        offset = 2;
    else if (weekday == date::Thursday)
        offset = 3;
    else if (weekday == date::Friday)
        offset = 4;
    else if (weekday == date::Saturday)
        offset = 5;
    else if (weekday == date::Sunday)
        offset = 6;

    auto lastMonday = date::year_month_day(todays_date - date::days(offset));

    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ date c++-chrono

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

无法读取存在的值

我正在制作图书馆管理软件.我有一个获取书籍信息的方法:

public static Book GetInfoAboutBook(string title)
    {
        using (SqliteConnection db = new SqliteConnection("Filename=" + fileName))
        {
            db.Open();

            Book b = new Book();

            SqliteCommand sqliteCommand = new SqliteCommand
            {
                Connection = db,
                CommandText = "select Title, Author, Publisher, ISBN, Quantity, CoverImageLocation, Tags from MyBooks where Title = '@Title'",
            };

            sqliteCommand.Parameters.AddWithValue("@Title", title);

            SqliteDataReader query = sqliteCommand.ExecuteReader();

            if(query.Read())
            {
                b.Title = query.GetString(0);
                b.Author = query.GetString(1);
                b.Publisher = query.GetString(2);
                b.Quantity = query.GetInt32(3);
                b.CoverImageLocation = query.GetString(4);
                b.Tags = query.GetString(5);
            }

            return b;
        }
    }
Run Code Online (Sandbox Code Playgroud)

无论输入是什么,'b'都不会被初始化.我确保所有输入实际上都存在于数据库中.但它不起作用.我调试了这个函数.query.Read()永远不会成功.这就是书对象保持为空的方式.这是Book类: …

c# sqlite uwp

0
推荐指数
1
解决办法
119
查看次数