标签:
strtok :在一个字符串查找下一个符号
char *strtok( char *strToken, const char *strDelimit );
返回值:返回指向在strToken字符串找到的下一个符号的指针,当在字符串找不到符号时,将返回NULL.每
次调用都通过用NULL字符替代在strToken字符串遇到的分隔符来修改strToken字符串.
如果strtok函数第一个参数不是NULL,函数将找到字符串的第一个标记。strtok同时保存它在字符串中的位置。如果第一个参数是NULL,函数就在同一个字符串中从这个被保存的位置开始像前面一样查找下一个标记。字符串不存在更多的标记,则返回NULL;
char *array[32]; int index = 0; #if 0 array[index] = strtok(buf, " "); while(array[index] != NULL){ printf("%s\n", array[index]); index ++; array[index] = strtok(NULL, " "); } #else for(array[index] = strtok(buf, " "); array[index] != NULL; index++, array[index] = strtok(NULL, " ")) printf("%s\n", array[index]); #endif
以下是实际应用中的一段代码:
1 /*read file*/ 2 msg_t *read_t() 3 { 4 int i = 0; 5 int j = 0; 6 char* a[128]; 7 char* result = NULL; 8 char buf[128],tmp[128]; 9 FILE *fp; 10 char delims[] = " "; 11 memset(a,0,128); 12 // msg_t * msg = NULL; 13 14 if((fp = fopen("./c.txt","r"))== NULL) 15 { 16 perror("fopen"); 17 } 18 19 while(fgets(buf,1024,fp) != NULL)//读取文件 20 { 21 printf("%s",buf); 22 a[i] = strtok(buf,delims); 23 while(a[i] != NULL) {//进行切割 24 printf("%s\n",a[i]); 25 i++; 26 a[i] = strtok(NULL,delims); 27 } 28 #if DEBUG 29 msg[j].type = *(a[0]); 30 strcpy(msg[j].name,a[1]); 31 strcpy(msg[j].pass,a[2]); 32 msg[j].age = atoi(a[3]); 33 strcpy(msg[j].sex,a[4]); 34 msg[j].salary = atoi(a[5]); 35 memset(a,0,128); 36 j++; 37 i = 0; 38 msg[j].type = ‘#‘; 39 #endif 40 } 41 fclose(fp); 42 return msg; 43 } 44 /*write file*/ 45 int write_t(msg_t *msg) { 46 47 int i = 0; 48 int j = 0; 49 char* a[128]; 50 char* result = NULL; 51 char buf[128],tmp[128]; 52 FILE *fp; 53 char delims[] = " "; 54 memset(a,0,128); 55 #if DEBUG 56 while(msg->type != ‘#‘){ 57 printf("%c\t",msg->type); 58 printf("%s\t",msg->name); 59 printf("%s\t",msg->pass); 60 printf("%5d\t",msg->age); 61 printf("%s\t",msg->sex); 62 printf("%5d\n",msg->salary); 63 msg++; 64 } 65 #endif 66 67 if((fp = fopen("./a.txt","a")) == NULL){ 68 return -1; 69 } 70 memset(buf,0,128); 71 sprintf(buf,"%c %s %s %d %s %d\n",msg->type,msg->name,msg->pass, 72 msg->age,msg->sex,msg->salary);//字符串拼写 73 fwrite(buf,sizeof(buf),1,fp);//写入文件 74 fclose(fp); 75 76 return 0; 77 }
标签:
原文地址:http://www.cnblogs.com/youthshouting/p/4277910.html