所以即时通讯尝试从使用strtok函数迭代通过用户输入的字符串获取二进制数。如果用户输入alpha,则输出0,如果用户输入beta,则输出1.因此,如果用户输入“alpha beta alpha alpha alpha”,则输出应该是“01010”。我有以下的代码,但我不知道哪里会出错,因为它没有做我描述的行为如何使用strtok打印二进制数字?
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
int main(int argc, char * argv[])
{
char userinput[250];
long binaryarray[250];
char *token;
int counter = 0;
long binarynumber = 0 ;
printf("enter alpha or beta");
scanf("%s", userinput);
token = strtok(userinput, " ");
while (token != NULL)
{
if(!strcmp(token, "alpha"))
{
binaryarray[counter] = 0;
counter += 1;
}
if(!strcmp(token, "beta"))
{
binaryarray[counter] = 1;
counter += 1;
}
token = strtok(NULL, " \0");
}
for(int i = 0; i < counter; i++)
{
binarynumber = 10 * binarynumber + binaryarray[i];
}
printf("%ld", binarynumber);
}
我该如何解决这个问题?
好吧,我刚刚发布的实际代码 – h101