我想吧c++的程序改写成c的 但是发现结果不对 请大佬看看应该怎么改

C++
#include
#include
#include
using namespace std;
int main()
{
string a,b;
int s;
int p=1,p2=1;
cin>>a>>b;
for (int i=0;i<a.length();i++)
{
s=a[i]-64;
p=p*s;
}
for (int i=0;i<b.length();i++)
{
s=b[i]-64;
p2=p2*s;
}
if (p%47==p2%47)
cout<<"GO";
else
cout<<"STAY";
return 0;
}

我自己写的C
#include
#include
int main()
{
char a;
char *b;
int s1=1,s2=1,i;
int k1,k2;
scanf("%s\n%s",&a,&b);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++){
k1=a[i]-64;
s1
=k1;
}
for(i=0;i<sizeof(b)/sizeof(b[0]);i++){
k2=b[i]-64;
s2*=k2;
}
if(s1/47==s2/47) printf("GO");
else printf("STAY");
return 0;
}


1.char a;//这个定义成字符型,不是数组跟c++ string a对不上
2.char *b;//没有开空间
3.scanf("%s\n%s",&a,&b);//格式有问题,不用\n,指针或者数组不需要&操作符
4.sizeof(a)/sizeof(a[0]);//这样,不管a是char 还是char[]求出来都不对,应该strlen(a),a为数组;
5.sizeof(b)/sizeof(b[0])//b 是指针,sizeof(指针)求出来4(32位操作系统)或者8(64位操作系统)
6.k1=a[i]-64;
  s1=k1;
  if(s1/47==s2/47)
  算法跟c++不一样,算出来是不是一样,我没验证;
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 256

int main()
{
    char a[BUF_SIZE] = {};
    char *b = (char *)malloc(BUF_SIZE*sizeof(char));
    memset(b,0x0,BUF_SIZE*sizeof(char));

    int s1=1,s2=1,i;
    int k1,k2;
    scanf("%s %s",a,b);

    printf("a_length=%d    b_length=%d   a=%s  b=%s\n",strlen(a),strlen(b),a,b);

    for(i=0;i<strlen(a);i++){
        k1=a[i]-64;
        s1*=k1;
    }
    for(i=0;i<strlen(b);i++){
        k2=b[i]-64;
        s2*=k2;
    }
    if((s1%47) == (s2%47))
        printf("GO");
    else
        printf("STAY");

    return 0;
}

sizeof(a)/sizeof(a[0])
修改为strlen,否则求出来的不是字符串的长度,而是数组的长度