我有以下内容:
unsigned char input[];
unsigned char *text = &input[];
我正在接受用户输入,如下所示:
do {
printf ("Please enter an numeric message terminated by -1:\n");
fgets(input, sizeof(input), stdin);
}
while (input[0] == '\n')
由于我的输出会给我一系列单个字符,如何 我能不能把它们联系起来。如果我输入如下输入:
14 156 23 72 122
当我尝试使用它时,它会将其分解为:
1 4 1 5 6 ...
换句话说,当我想将它作为unsigned char传递给函数时, 我想传递'14',所以函数可以读取14的二进制,而不是 1,然后4,等等任何帮助将不胜感激!
答案 0 :(得分:0)
现在看来,你的代码没有编译。
你不能像这样声明这些变量:
unsigned char input[];
unsigned char *text = &input[];
你需要说明input
应该有多大。我不确定你的第二个定义是什么。
您还需要在此行之后加分号
while (input[0] == '\n')
除此之外,如果输入由已知分隔符分隔,则可以使用strtok()
而不是逐字节读取字符串。
我取消了你的程序,因为它没有编译。这就是我假设您正在尝试使用您的代码,并相应地进行调整:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*
* Converts "input" separated by "delims" to an array of "numbers"
*/
size_t str_to_nums(const char* input, const char* delims, int* numbers, size_t numsize)
{
char* parsed = malloc(strlen(input) + 1); /* allocate memory for a string to tokenize */
char* tok; /* the current token */
size_t curr; /* the current index in the numbers array */
strcpy(parsed, input); /* copy the string so we don't modify the original */
curr = 0;
tok = strtok(parsed, delims);
while(tok != NULL && curr < numsize) { /* tokenize until NULL or we exceed the buffer size */
numbers[curr++] = atoi(tok); /* convert token to integer */
tok = strtok(NULL, delims); /* get the next token */
}
free(parsed);
return curr; /* return the number of tokens parsed */
}
int main(void)
{
char input[256];
int numbers[64];
size_t count, i;
puts("Please enter an numeric message terminated by -1:");
fgets(input, sizeof(input), stdin);
count = str_to_nums(input, " ", numbers, sizeof(numbers)/sizeof(*numbers)); /* string is separated by space */
for(i = 0; i < count; ++i) {
printf("%d\n", numbers[i]); /* show the results */
}
}
P.S。这不是连接。你要找的短语是&#34;字符串拆分&#34;或者&#34;标记化&#34;。
答案 1 :(得分:-1)