C 如何读取两个空格之间的数字?

C 如何读取两个空格之间的数字?,c,C,我有个问题。如果我有 char a[50]={" 99 98 100 97 101 "}; 我想要另一个字符串数组,它给我这样的值: char b[50]={"bcdae"}; 那怎么办呢 (ASCII值a=97,依此类推)“bcdae”只是一个数字数组:[99、98、100、97、101、0]。毕竟,计算机内存中没有“字母”,只有数字。最后一个数字0表示字符串的结尾 因此,您的任务似乎是反复从字符串中读取一个数字(检查scanf函数),并将读取的值放入一个数字数组中 提示:了解解析数字时

我有个问题。如果我有

char a[50]={" 99 98 100 97 101 "};
我想要另一个字符串数组,它给我这样的值:

char b[50]={"bcdae"};
那怎么办呢

(ASCII值a=97,依此类推)

“bcdae”
只是一个数字数组:
[99、98、100、97、101、0]
。毕竟,计算机内存中没有“字母”,只有数字。最后一个数字
0
表示字符串的结尾

因此,您的任务似乎是反复从字符串中读取一个数字(检查
scanf
函数),并将读取的值放入一个数字数组中


提示:了解解析数字时读取的字符数量可能会有所帮助-请检查 int main(){ 字符a[50]={“99 98 100 97 101”}; 字符b[50]={0}; char*p=b;//p现在指向b int i,num,pos=0; //%d返回每个数字 //%n返回到该点为止消耗的字节数 而(sscanf(a+pos、%d%n、&num、&i)==1) { *p++=(char)num;//b[0]…b[n]被设置为num,该值被转换为char pos+=i;//按读取的字节递增位置 } printf(“%s\n”,b);//cbdae 返回0; }
以下初始化似乎与您的意思不同(尽管它们是编译的):


如果你的意思是:

char a[50] = {99, 98, 100, 97, 101};
char b[50] = "bcdae";
char a[50] = {99 , 98 , 100,  97, 101};
char b[50] = {'b', 'c', 'd', 'a', 'e'};
char a[50] = " 99 98 100 97 101 ";
char b[50] = "bcdae";
那么这两个数组的内容是相同的


如果你的意思是:

char a[50] = {99, 98, 100, 97, 101};
char b[50] = "bcdae";
char a[50] = {99 , 98 , 100,  97, 101};
char b[50] = {'b', 'c', 'd', 'a', 'e'};
char a[50] = " 99 98 100 97 101 ";
char b[50] = "bcdae";
那么这两个数组的内容是相同的


如果你的意思是:

char a[50] = {99, 98, 100, 97, 101};
char b[50] = "bcdae";
char a[50] = {99 , 98 , 100,  97, 101};
char b[50] = {'b', 'c', 'd', 'a', 'e'};
char a[50] = " 99 98 100 97 101 ";
char b[50] = "bcdae";
这相当于您发布的内容,然后您可以使用:

#include "string.h"

void a2b(char a[],char b[])
{
    int i = 0, j;
    char* pch = strtok(a," ");
    while (pch != NULL)
    {
        b[i] = 0;
        for (j=0; pch[j]!=0; j++)
        {
            b[i] *= 10;
            b[i] += pch[j]-'0';
        }
        i++;
        pch = strtok(NULL," ");
    }
    b[i] = 0;
}

但是,请注意,上面的代码更改了第一个数组的内容。

在循环中使用sscanf和sprintf。Psh,计算机内存中没有数字,只有电子电荷和它们的缺乏。
char a[50]={“99 98 100 97 101”}是有效的。字符类型的数组可以由字符串文字初始化,也可以用大括号括起来。字符串文字的连续字符(如果有空间或数组大小未知,则包括终止的空字符)初始化数组的元素。6.7.8初始化14@BLUEPIXY:谢谢。1.它仍然“闻起来”像OP是上面提到的前两个选项之一。2.上面提到的第三个选项提供了一个解决方案,以防这确实是OP的意思。以下初始化似乎不正确,请删除或修改。此外,我的答案已经被接受,这一事实清楚地说明了这一点。@BLUEPIXY:这样更好吗?