c - 如何将指针中的值保存到 char 数组中?

标签 c

我有一个包含这样数据的文件

{0 /Data1/ , 0x00, 0, 0xFF},

{1 /data2/ , 0x00, 0, 0xFF},

{2 /data3/ , 0x00, 0, 0xFF},

{3 /data4/ , 0x00, 0, 0xFF}, ...

我只想打印每一行的第二列。下面是我处理的代码。

#include<stdio.h>
#include<string.h>
int main ()
{
char filename[] = "file.txt";
FILE *file = fopen(filename, "r");
if(file!= NULL)
{
char line[128];
char * word1;
char  word2;
char  word3;
int i=0;
clrscr();
while ( fgets( line, sizeof line, file)!= NULL)
{
i=0;
word1 = strtok(line, " ,");

while(word1!= NULL)
{
i++;
if(i==2 ){

printf("%s\n",word1);
}
word1 = strtok(NULL," ,");
}

}
fclose(file);
}
else
{
perror(filename);
}


getch();

return 0;
}

它工作正常。我可以将每行打印的值保存到一个数组中吗? 我试过这样的事情

if(i==2){
word2 = * (word1);
} 
printf("%s\n",word1);

但它给了我一个空指针赋值。如何将我打印的值存储到数组中?

最佳答案

您只将字符串 word1 的第一个字符保存到 word2。

如果你想存储所有第二列,你需要分配一个指向 (char *) 的动态指针数组,然后为每个单词/列分配空间给单词并用 strcpy 复制,因为 word1 在 while 的每次迭代中都在变化所以你不能只保存引用。

关于c - 如何将指针中的值保存到 char 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180701/

相关文章:

c - 为 Flex 定义了 C token 文件?

c - C 中的 Hangman。有关数组和字符串的问题

c - 为什么要在 libpcap 程序中重新声明 TCP 和 IP header ?

c - 两个结构的大小相同,尽管其中一个结构中有一个结构实例

c++ - 使用 strncmp 函数在 Arduino IDE 中出错

c++ - C/C++ 中奇异复方矩阵的伪逆 (SVD)

c - 为什么增加 float 会产生与预期不同的结果?

c++ - 我如何在链接描述文件中使用存档中的目标文件?

c - 在微调按钮中右对齐 (gtk/C)

c - 对二维数组进行排序并找到索引并存储在数组中