我有以下部分代码:
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);
我有这些结果:
Final: 3, 34, 56, 67, 56
如何将它们保存在5-9位置的10位阵列中? 就是这样:
0 0 0 0 0 3 34 56 67 56
我写了下面的代码,但它没有完成,因为我不知道如何在表中传递& machine,& number,& hr,& dw,& vcc
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]);
}
答案 0 :(得分:2)
假设您已经将您的值放入“机器,号码,小时,dw,vcc”(谁是char*
)
你不能将它们存储到你的char table1 [1] [10]中,因为它是一个数组表,只能包含一个10个字符的数组。
所以你需要一个看起来像这样的字符:
char *table1[10] = {0};
table1[5] = machine;
table1[6] = number;
table1[7] = hr;
table1[8] = dw;
table1[9] = vcc;
但要显示它你会遇到一些问题但是 你总是可以这样做:
for (int i = 0; i < 10; i++)
{
if (table1[i] == NULL)
printf("0 ");
else
printf("%s ", table1[i]);
}
printf("\n");
但是在你的情况下你为什么不简单地使用int [10]?
答案 1 :(得分:0)
目前尚不清楚你究竟想要什么,只是在试一试
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;
答案 2 :(得分:0)
鉴于您能够操作第一段代码,可能的方法是:
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循环,然后写:
for(int j = 0; j<10; j++)
fprintf(ft,"%d ",table1[0][j]);
鉴于您确实只有一个这样的数组,如您的声明所示。
请注意,上述解决方案只能在函数内部本地工作,因为返回局部变量不起作用。为了能够全局使用表结构,您可能希望将malloc()
和strcpy()
值放入数组中。