2016-01-12 73 views
-2

所以基本上我不知道如何處理這個命令,我搜索了各地的論壇,並可以理解如何打印字符串和使用指針,但我想分割字符串並將所有令牌保存在不同的變量中。如何複製strtok返回的令牌

我試圖做這樣的事情

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

現在我想節省名字符串的第一個土氣,但我得到了終端和唯一可行的事情上的錯誤(只路過指針)只給我1個字母。

  • name=pt; does not work。
  • ​​作品,但只讓我1封信。

的完整代碼

#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

讀'人網絡 – birdoftheday

+0

http://linux.die.net/man/3/strtok? –

+0

我說我有BTW –

回答

0

name=pt;不工作。

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

他們不應該工作,反正。陣列名稱不可修改,因此不能在C中指定。

要複製字符串,應該使用strcpy()

喜歡的東西

strcpy(v[i].nome,s); 

應該做的工作就好了。

這就是說,你用返回的指針執行任何操作之前,應檢查

+0

strcopy其中我的源是令牌的指針工作? –

+0

@JoãoGomes爲什麼不呢?你試過了嗎? –

+0

我只是笨笨的,第一年不是izi:/ –