C语言:常用技巧及误用

一、字符串存储在数组中

cpp 复制代码
int main()
{
    char* arr[7] = {"xiaoming","zhangsan","李四"};
    printf("%s\n", arr[0]);
    printf("%s\n", arr[2]);
    return 0;
}


二、scanf()函数用法

2.1 scanf()输入字符串

cpp 复制代码
int main()
{
    char arr[100];
    scanf("%s", arr);

    printf("%s\n", arr);
    for (int i = 0; arr[i] != '\0'; i++)
        printf("%c ", arr[i]);
    return 0;
}

2.2 scanf()输入格式用法

%d%d两个连在一起,输入框输入完第一个数字后,换行才能输入第二个

cpp 复制代码
int main()
{
    int a, b;
    scanf("%d%d", &a,&b);
    printf("%d %d\n", a,b);
    return 0;
}

中间使用"-"间隔符,在输入框中输入完第一个数字后,输入"-"后,再输入第二个数字

cpp 复制代码
int main()
{
    int a, b;
    scanf("%d-%d", &a,&b);
    printf("%d %d\n", a,b);
    return 0;
}

若输入1-234-56,并不是a=1,b=2,c=3,d=4...

实际上,在输入完"-"后,234会赋给b,第二个"-"会赋给c,导致格式错误

cpp 复制代码
int main()
{
    int a,b,c,d,e,f;
    scanf("%d-%d%d%d-%d%d", &a,&b, &c, &d, &e, &f);
    return 0;
}


三、 printf()函数用法

3.1 "#"用法

cpp 复制代码
int main()
{
    int n1 = 11,n2 = 2;
    printf("%#03d\n",n1);  //001
    printf("%#02d\n",n2);  //02
    printf("%x\n", n1);    //b
    printf("%#x\n",n1);    //0xb
    return 0;
}

3.2 限定宽度

cpp 复制代码
int main()
{
    int n1 = 123;
    printf("%5d\n",n1);   //"  123"
    printf("%-5d\n", n1); //"123  "
    return 0;
}

3.3 总是显示正负号

cpp 复制代码
int main()
{
    int a = 1,b = -1;
    printf("%+d\n",a);   //+1
    printf("%+d\n",b);   //-1
    return 0;
}

3.4 输出部分字符

cpp 复制代码
int main()
{
    char arr[] = "hello world";
    printf("%.5s\n",arr);   //hello
    return 0;
}


四、数字、字符互转

4.1 字符转数字

cpp 复制代码
int main()
{
    int a = atoi("123");
    int b = atoi("-123");
    int c = atoi("a123");
    int d = atoi("123a");
    printf("%d\n", a);   //123
    printf("%d\n", b);   //-123
    printf("%d\n", c);   //0
    printf("%d\n", d);   //123
    return 0;
}

4.2 数字转字符

cpp 复制代码
int main()
{
    char arr[100];
    int a = 123;
    sprintf(arr, "%d", a);
    printf("%s\n", arr);

    for (int i = 0; arr[i] != '\0'; i++)
        printf("%c ", arr[i]);
    return 0;
}

相关推荐
zyeyeye29 分钟前
C++入门:从HelloWorld到命名空间揭秘
c语言·开发语言·c++·算法
wuminyu2 小时前
Kafka配置TLS/SSL加密传输时零拷贝失效分析
java·linux·c语言·jvm·c++
yanlaifan4 小时前
C语言标准版本简单介绍
c语言
wuyk55513 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
xx~t14 小时前
嵌入式——51单片机1
linux·c语言·单片机·嵌入式硬件·51单片机
Navigator_Z15 小时前
LeetCode //C - 1240. Tiling a Rectangle with the Fewest Squares
c语言·算法·leetcode
码行山野赴时序归途16 小时前
C语言预处理指令:编译前的“幕后导演“
c语言·开发语言
2401_8582861119 小时前
130.【C语言】可变参数宏
c语言·开发语言
彧azz19 小时前
B树原理与C语言实现
c语言·数据结构·b树
零依赖极客19 小时前
《30 天手搓 ARM 架构零依赖纯 C 推理引擎》课程介绍与大纲
c语言·开发语言·arm开发·人工智能·嵌入式硬件·ai编程