C语言-str字符串(大小, 地址, 函数,添加, 赋予变量, atoi, fget, char *str[])
构建字符串,计算字符大小,地址,输出其中的字符串
/* 字符串演示 */ #include <stdio.h> int main() { char str[] = "abcdef"; printf("%d\n", (int)sizeof(str)); printf("%s\n", "xyz"); printf("%s\n", str); //根据地址打印数据 printf("%c\n", str[0]); //使用的时候与arr数据是相同的 }
strlen()计算数据的长度, strcat()将数据进行串接,strcmp根据ascii比较大小, strcpy将原来的数据进行复制,memset()将数据的前几个字母都设置为同一个数,strstr进行字符串的查找
/* 字符串演示 */ #include <stdio.h> #include <string.h> int main() { char str[10] = "abc"; char *p_ch = NULL; int size = 0, tmp = 0; size = strlen(str); printf("str的大小是%d\n", size); p_ch = strcat(str, "deasdasfasf"); printf("%s\n", p_ch); printf("%s\n", str); //将字符串添加到str本身,因为使用的是地址 p_ch = strncat(str, "1113123123123", 3); //3表示加在后面的数字是三个 printf("%s\n", p_ch); printf("%s\n", str); tmp = strcmp("adb", "abc");//根据ASCII码值比较两个数的大小 printf("对比的结果是%d\n", tmp); tmp = strncmp("abd", "abc", 2); //只比较前两个数的大小 printf("对比的结果是%d\n", tmp); /* p_ch = strcpy(str, "123"); //使用"123"将数组进行覆盖 printf("%s\n", p_ch); printf("%s\n", str); */ p_ch = strncpy(str, "123", 3); //使用"123"将数组前面的几个数字进行覆盖 printf("%s\n", p_ch); printf("%s\n", str); memset(str, 'h', 9); //将str的前9个字符串都设置为h printf("%s\n", str); p_ch = strstr(str, "fa"); //用来在数组中查找数组的位置 printf("%s\n", p_ch); return 0; }
使用sprintf() 将字符串添加到buf数组中, 使用scanf将字符串添加到变量中
/* 字符串sprintf和sscanf */ #include <stdio.h> int main() { char buf[20] = {0}; char ch = 0; int val = 0; float fval = 0.0f; printf("%c %g %d\n", 'c', 2.3, 1); sprintf(buf, "%c %g %d", 'c', 2.3, 1); //将数据存放在数组中 printf("%s\n", buf); sscanf("p 23 6.4", "%c%d%g", &ch, &val, &fval); //将文字字符串各自存储在对应的变量中 printf("%c %d %g\n", ch, val, fval); return 0; }
stdlib里面的atoi,将字符串前面的数字转换为对应的数据
/* 字符串演示 */ #include <stdlib.h> #include <stdio.h> int main() { int val = 0; float val1 = 0.0f; val = atoi("24.5abc"); // 将前面字串字整数数字进行提取 printf("%d\n", val); val1 = atof("24.5abc");//将前面字符串float类型数字进行提取 printf("%g\n", val1); }
使用sprintf把数据记录到字符串里面,再使用strcat将字符串进行串接
/* 记录每次的成绩 */ #include <stdio.h> #include <string.h> int main() { char buf[25] = {0}; char tmp[10] = {0}; int val = 0; for (int val1 = 0;val1 <= 4;val1++) { printf("请输入您的成绩:"); scanf("%d", &val); sprintf(tmp, "%d,", val); strcat(buf, tmp); } buf[strlen(buf) - 1] = 0; printf("%s\n", buf); }
fget从键盘里获得数组,如果键盘里获取的数组大于字符串的内容就进行清除内存操作
/* 字符串演示 */ #include <stdio.h> #include <string.h> #include <stdio.h> int main() { char buf[10] = {0}; printf("请输入一个字符串:"); fgets(buf, 10, stdin); //从键盘上获得10个数字 printf("%s\n", buf); if (strlen(buf) == 9 && buf[8] != '\n') { scanf("%*[^\n]"); scanf("%*c"); } printf("请输入一个字符串:"); fgets(buf, 10, stdin); //从键盘上获得10个数字 printf("%s\n", buf); }
保险箱的密码尝试,这里使用的也是从键盘中获得字符串的方式,也使用了清除的按钮
/* 保险箱作业 */ #include <stdio.h> #include <string.h> int main() { char buf[7] = {0}; for (int tmp = 0;tmp < 3;tmp++) { printf("请输入您的密码:"); fgets(buf, 10, stdin); if (strlen(buf) == 6 && buf[5] != '\n') { scanf("%*[^\n]"); scanf("%*c"); } if (!strcmp(buf, "123456\n")) { printf("输入正确\n"); return 0; } } printf("您已经错误三次了\n"); return 0; }
字符数组的演示 char *str[] = {"a", "b", "c"}; 初始化字符数组
/* 字符数组演示 */ #include <stdio.h> int main() { char *str[] = {"a", "b", "c"}; //构造字符串数组 for (int num = 0;num <= 2;num++) { printf("%s\n", str[num]); } }
主函数的形式构造, 可以使用int main(int argc, char *argv[]) 来构造的输入主函数
/* 主函数参数形式构造 */ #include <stdio.h> int main(int argc, char *argv[]) { int num = 0; for (num = 0;num <= argc - 1;num++) { printf("%s\n", argv[num]); } }
使用输入主函数的鸡丫问题来构造输入函数
/* 鸡笼同兔问题 */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int head = 0; int foot = 0, tmp = 0; head = atoi(argv[1]); foot = atoi(argv[2]); for (tmp = 0;tmp <= head;tmp++){ if ((head - tmp) * 2 + (tmp) * 4 == foot) { printf("鸡的数量是%d, 兔子的数量是%d\n", head - tmp, tmp); break; } } if (tmp > head) { printf("没有找到合适的结果\n"); } }
每天更新pyQt5内容