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");
    }
} 

 

posted @ 2020-03-04 21:52  c语言我的最爱  阅读(815)  评论(0编辑  收藏  举报