C语言比较字符串问题(用字符数组存储数据,再进行合并)

比较两个字符串s1和s2,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。
我自己写的代码在输入“123 123”的时候结果错误了(应该是“result:0”,结果输出为“result:49”),想不明白是什么问题?是空格的问题吗?


#include <stdio.h>

int main()
{
    int ret = 0;
    int index = 0;
    char s1[100] = {0};
    char s2[100] = {0};
    printf("请输入s1:");
    gets(s1);

    printf("请输入s2:");
    gets(s2);

    // 将s1和s2中的字符从前往后逐个进行比较,相等继续往后,
    // 不相等时ret中结果不为0,!ret则为0  循环结束
    // 如果一个走到末尾,一个未走到末尾 ret也不为0, !ret为0,循环结束
    // 如果两个字符串相等,同时达到末尾,循环结束
    while (!(ret = s1[index] - s2[index]) && '\0' != s1[index] && '\0' != s2[index])
    {
        ++index;
    }

    printf("%d\n", ret);
    return 0;
}

用strcmp进行比较就行
具体要看你代码怎么写的

#include<stdlib.h>
#include<stdio.h>

int main()
{
   int i,sum=0;
   char s1[N]=".",s2[N]=".";// 以/0填充空白
   gets(s1);     //输入s1,s2
   gets(s2);
 
   for(i=0;s1[i]!='\0'||s2[i]!='\0';i++)  //两数组每对只要有一个不为\0就可以进行循环(为了减少循环次数)
   {
         sum=sum+s1[i]-s2[i];     //计算差值 
   }
 
   printf("%d",sum);    
   system("pause");
   return 0; 
}