c语言中字符串想减输出阿斯克码值得问题

img

img

img

img

img

img

能问一下怎样才能让“\0”-字符都能有结果呀,比如andd-an,让范围更广,更全面。

你是想实现类似strcmp()函数吧,循环后面还要加个判断,如果有一个字符串先结束,你还要再减一次

#include <stdio.h>

int main()
{
    char s1[100] = {0};
    char s2[100] = {0};
    int i = 0, res = 0;
    printf("请输入s1:");
    fgets(s1, 100, stdin);
    printf("请输入s2:");
    fgets(s2, 100, stdin);
    while (s1[i] != '\0' && s2[i] != '\0')
    {
        res = s1[i] - s2[i];
        if (res != 0)
            break;
        i++;
    }
    if (res == 0)
        res = s1[i] - s2[i];
    printf("结果为:%d\n", res);
    return 0;
}

字符串的比较只能是相同长度的比较,不同长度字符串没有比较的意义。因为本身字符就不存在进制的概念,就没有什么进一退一的计算了,只能同一个位置的字符相减

你想的到什么结果,andd-an得到什么

ASSII码值是啥,你要理解啊。
ASSII是针对一个字符的,不是一个字符串的。
ASSII码表百度看一下,针对一个字符,我们看到的是字符,但计算机底层其实还是0和1,其实如果把存字符的八位不按assii码表转成字符输出,按照数字输出,就是assii表的值,

比如:

img