c note
go 程序员写c的痛苦...
1, char *argv[]
char *argv 代表argv是一个字符串
而 char *argv[]则代表argv是一个字符串数组
2, 字符串数组
argv : 字符和字符串的区别. 赋值字符 argv[i][j] , 赋值字符串 : argv[i] . 这是因为字符串是特殊的字符数组,首地址既是字符串地址.
字符串和字符的赋值方式不同,其操作和判断方法也随之变化.
字符的操作可以使用字符处理函数,字符串处理可以使用字符串处理函数.
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char c='c'; char *s="abcde"; printf("%s",s); char *ss[]={"aa","bb","dd"}; printf("===>%s\n",*(ss+1)); }
3....label 执行顺序
/* label真的是一个挨着一个运行的,只有goto可打断这个执行顺序 每个label至少要有一条语句,哪怕是空语句. https://blog.csdn.net/jiankangshiye/article/details/8747283 */ #include <stdio.h> void main() { int a=0; int b; //printf("hello"); lable_000: //printf("label_000\n"); ; lable_001: printf("hello, lable_001\n"); lable_002: a++; lable_003: if(a<5) goto lable_000; printf("hello,end"); lable_004: printf("label真的是一个挨着一个运行的,只有goto可打断这个执行顺序.\n"); printf("每个label至少要有一条语句,哪怕是空语句.\n"); }
4. split with c style
#include <string.h> #include <stdio.h> int main () { char str[80] = "11,22,445,ss,,,ff,,"; const char s[2] = ","; char *token; int[32] =[]; /* 获取第一个子字符串 */ token = strtok(str, s); /* 继续获取其他的子字符串 */ while( token != NULL ) { printf( "%s\n", token ); token = strtok(NULL, s); } return(0); }