所以基本上我不知道如何很好地使用这个命令,我在论坛周围搜索并且能够理解如何打印字符串并使用指针,但我想分割字符串并保存所有的标记不同的变量。
我试图做这样的事情
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);
}
答案 0 :(得分:1)
name=pt
;不起作用。
和
v[i].nome=s; //doesnt work
无论如何,他们不应该工作。数组名称不是可修改的lvaues,因此不能在C中分配。
要复制字符串,您应该使用strcpy()
。
像
这样的东西 strcpy(v[i].nome,s);
应该做得很好。
那就是说,你应该检查
strtok()
返回非NULL。strlen()
返回的令牌,并在复制前检查目标缓冲区大小,以防止缓冲区溢出。malloc()
and family in C
.。