如何显示C字符串的最后N个字符?

时间:2016-03-02 20:43:00

标签: c++11

我试图做一些编程作业,但我无法弄清楚如何显示C字符串的最后N个字符。到目前为止,这是我的尝试。我也应该询问字符数并验证它。任何帮助将不胜感激。

for i in list1:
    for j in list2:
        if i['medication_name'] == j['medication_name']:
            i['fulfillment_time'] = j['fulfillment_time']

1 个答案:

答案 0 :(得分:1)

像往常一样的家庭作业问题,我不会给出解决方案,但会提供一些提示。

  • 我假设“验证”你的意思是检查字符串是否足够长。例如,您不能显示长度仅为7个字符的字符串的最后12个字符。但是,您当前尝试查看字符串的 n 字节无法正常工作。如果字符串短于 n 字节,则将其索引超出范围并调用未定义的行为。如果它更长 - 这是完全有效的,事实上,除了琐碎的情况之外将是这种情况 - 你的测试错误地返回所请求的长度无效。
  • 你应该做的是计算字符串的长度 N ,然后测试 n N 。您可以使用标准库函数std::strlen来获取NUL终止字符数组的长度。或者你可以自己循环并计算在第一个NUL字节之前你看到的字节数。
  • C风格的字符串只是一个指向内存中字节的指针,隐式契约表示直到它后面的第一个NUL字节的任何字节都属于该字符串。因此,如果将 m N 添加到指针,则会得到从 m -th开始的子字符串(从零开始)字节。
  • 因此,为了获得带有 N 字符的字符串的 last n 字符的子字符串,您如何确定

顺便说一句:NUL字节是char,整数值为0.您可以将其编码为'\0'(就像您所做的那样),但0也可以正常工作。