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

相关推荐
Yuki’4 分钟前
网络编程---UDP
c语言·网络·网络协议·udp
.YM.Z40 分钟前
C语言——文件操作
c语言·文件操作
GanGuaGua1 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
神里流~霜灭4 小时前
(C++)数据结构初阶(顺序表的实现)
linux·c语言·数据结构·c++·算法·顺序表·单链表
草莓熊Lotso6 小时前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
鹿鹿学长14 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
伴杯猫14 小时前
【ESP32-IDF】基础外设开发2:系统中断矩阵
c语言·单片机·嵌入式硬件·mcu·物联网·github
Want59516 小时前
C/C++圣诞树①
c语言·开发语言·c++
l1t18 小时前
轻量级XML读写库Mini-XML的编译和使用
xml·c语言·解析器
小莞尔19 小时前
【51单片机】【protues仿真】基于51单片机停车场的车位管理系统
c语言·开发语言·单片机·嵌入式硬件·51单片机