首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将指针值放入数组中

将指针值放入数组中
EN

Stack Overflow用户
提问于 2013-06-20 20:04:29
回答 3查看 150关注 0票数 0

我有以下部分代码:

代码语言:javascript
复制
         i = 0;
         while (ptr != NULL)
         {
          if (i == 0)
             strcat(machine, ptr); 
          if (i == 2)
             strcat(number, ptr);
          if (i == 4)
             strcat(hr, ptr); 
          if (i == 6)
             strcat(dw, ptr); 
          if (i == 8)
             strcat(vcc, ptr);
          i++;
         }
         printf("Final: %s, %s, %s, %s, %s\n", machine, number, hr, dw, vcc);

我得到的结果是:

代码语言:javascript
复制
Final: 3, 34, 56, 67, 56

如何将它们保存在位置5-9的10位数组中?就像这样:

代码语言:javascript
复制
0 0 0 0 0 3 34 56 67 56

我写了以下代码,但它没有完成,因为我不知道如何在表中传递&machine,&number,&hr,&dw,&vcc

代码语言:javascript
复制
FILE *ft = fopen("Desktop/mytext.txt","a+");
struct tm *tp;
time_t t;
char s[80];

t = time(NULL);
tp = localtime(&t);
strftime(s, 80, "%d/%m/%Y  %H:%M:%S", tp);
char table1[1][10];
for(int i = 0; i<1; i++)
{
    fprintf(ft,"%s ",s);
    for(int j = 0; j<10; j++)
    fprintf(ft,"%d ",table1[i][j]);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-20 20:21:15

假设您已经将值输入到"machine,number,hr,dw,vcc“(who are char*)中

您不能将它们存储到char table11中,因为它是一个数组表,它只能包含一个10个字符的数组。

因此,您需要一个字符**,如下所示:

代码语言:javascript
复制
char *table1[10] = {0};

table1[5] = machine; 
table1[6] = number;
table1[7] = hr; 
table1[8] = dw; 
table1[9] = vcc;

但是要显示它,你会遇到一些问题,但你总是可以这样做:

代码语言:javascript
复制
for (int i = 0; i < 10; i++)
{
 if (table1[i] == NULL)
   printf("0 ");
else
   printf("%s ", table1[i]);
}
printf("\n");

但在您的情况下,为什么不简单地使用int10?

票数 2
EN

Stack Overflow用户

发布于 2013-06-20 20:20:02

还不清楚你到底想要什么,只是试一试。

代码语言:javascript
复制
char table1[1][10]={0};    
    table1[0][5]= machine;
    table1[0][6]=number;
    table1[0][7]=hr;
    table1[0][8]=dw;
    table1[0][9]=vcc;
票数 0
EN

Stack Overflow用户

发布于 2013-06-20 20:21:00

假设您能够操作第一段代码,一种可能的方法是:

代码语言:javascript
复制
   i = 0;
   int offset = 5;
   char* table[1][10];       

   while (ptr != NULL)
     {
      if (i == 0)
         strcat(machine, ptr);
      if (i == 2)
         strcat(number, ptr);
      if (i == 4)
         strcat(hr, ptr); 
      if (i == 6)
         strcat(dw, ptr); 
      if (i == 8)
         strcat(vcc, ptr);
      table[0][5+(i/2)] = ptr;   
      i++;
     }
  printf("Final: %s, %s, %s, %s, %s\n", machine, number, hr, dw, vcc);

在第二段代码中,我将去掉外部的for循环,只需编写:

代码语言:javascript
复制
   for(int j = 0; j<10; j++)
      fprintf(ft,"%d ",table1[0][j]); 

假设您确实只有一个这样的数组,正如您的声明所暗示的那样。

请注意,上面的解决方案只能在函数内部局部工作,因为返回局部变量不起作用。为了能够全局使用表结构,您可能希望将值malloc()strcpy()放入数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17213199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档