如何通过strtok复制返回的标记

时间:2016-01-12 17:25:32

标签: c strtok strcpy

所以基本上我不知道如何很好地使用这个命令,我在论坛周围搜索并且能够理解如何打印字符串并使用指针,但我想分割字符串并保存所有的标记不同的变量。

我试图做这样的事情

char s[20],*pt,name[10];
pt=strtok(s," ");

现在我想在名字字符串上保存第一个toke,但是我在终端上遇到错误,唯一有用的东西(只传递指针)只能得到1个字母。

  • name=pt;无效。
  • *(name)=*pt有效,但只给我一封信。

完整的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
FILE *f=fopen("tarefas.txt","r");
char s[50];

typedef struct{
char nome[20];
int trab;
int acab;
} tarefa;


int i=0,*dias;
tarefa *v;
char *pt;

v=(tarefa *) malloc(sizeof(tarefa));
dias=(int *) malloc(sizeof(int));


while(fgets(s,50,f)){
pt= strtok(s," ");

v[i].nome=s; //doesnt work

int t=strlen(v[i].nome);
v[i].nome[t]='\0';

printf("%s\n",s);

}

1 个答案:

答案 0 :(得分:1)

  

name=pt;不起作用。

  

v[i].nome=s; //doesnt work

无论如何,他们不应该工作。数组名称不是可修改的lvaues,因此不能在C中分配。

要复制字符串,您应该使用strcpy()

这样的东西
 strcpy(v[i].nome,s);

应该做得很好。

那就是说,你应该检查