gpt4 book ai didi

c - 如何使用 strtok 打印二进制数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:10 24 4
gpt4 key购买 nike

所以我试图通过使用 strtok 函数迭代用户输入的字符串来获取二进制数。如果用户输入 alpha,它会打印 0,如果用户输入 beta,它会输出 1。因此,如果用户输入“alpha beta alpha beta alpha”,输出应该是“01010”。我有以下代码,但我不确定我哪里出错了,因为它没有执行我描述的行为

#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);
}

我该如何解决这个问题?

最佳答案

问题是,对于

  scanf("%s",userinput);

扫描 在遇到第一个空格后停止。所以,它不能像

这样扫描和存储输入

alpha beta alpha beta alpha

由空格分隔。引用 C11,第 §7.21.6.2 章

s

Matches a sequence of non-white-space characters.

可能的解决方案:您需要使用 fgets()读取带有空格的用户输入。

关于c - 如何使用 strtok 打印二进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com