C 语言笔记

                     

贡献者: addis

  • 本词条处于草稿阶段。

1. 常用的字符串处理

#include "string.h"
char s1[20] = "some string1";
char s2[20] = "some string2";
strlen(s1) // 字符串长度
strcpy(s1, s2) // 复制(s2 可以是 literal)
strcmp(s1, s2) // 比较
strcat(s1, s2) // 连接
strrev(s1) // 反转

2. printf

#include<stdio.h>

void main()
{
char s[20];
scanf("%s",&s);
printf("%s\n",s);
}
具体的格式代码见这里

int i = 1234;
printf("=== int ===\n");
printf("%6.5d\n", i); // " 01234"

printf("=== string ===\n");
string s = "abcdABCD";
printf("%s\n", s.c_str()); // "abcdABCD"

double x = 12.345;
printf("=== double 1 ===\n");
printf("%8.3f\n", x); // "  12.345"
printf("%10.3e\n", x); // " 1.235e+01"
printf("%g\n", x); // "12.345"
printf("%5.3g\n", x); // " 12.3"

double y = 0.000012345678;
printf("=== double 2 ===\n");
printf("%g\n", y); // "1.23457e-05"
printf("%10.3g\n", y); // "  1.23e-05"

   如果不想输出到命令行而是输出到字符串,就用 int sprintf(char *str, const char *format, ...)。返回写入的字符数。该函数返回写入到 str 的总字符数。

3. scanf

#include <stdio.h>
int main()
{
  int x,y,z;
  scanf("%d+\n,\n=%d",&x,&y);
  z=x*y;
  printf("x=%d,y=%d\n",x,y);
  printf("xy=%d\n",z);
}
// 输入:
// 123+
// ,
// =234
// 输出:
// x=123,y=234
// xy=28782
引号内除了特殊字符,其它都需要输入一摸一样的,否则会出错。但是,1.变量前面可以多打任意多个空格和回车(后面不可以),2.任意多个空格或回车相连等效。

4. getchar

#include <stdio.h>
#include <string.h>
void main()
{
 int i=1;
 char str[5]={0};
    while(i<=5)
   {str[i]=getchar();i++;}

 i=1;
 while(i<=5)
 {printf("%d  ",str[i]);i++;}
 printf("\n");

 i=1;
 while(i<=5)
 {printf("%c",str[i]);i++;}
 printf("\n");
}

5. struct 和 union

struct 名称 {} // 声明变量: struct 名称 变量
typedef struct {} 名称 // 声明变量: 名称 变量
typedef enum {} 名称 // 同理
typedef union {} 名称 // 同理
union {} // 和 struct 类似, 但变量共用内存

6. 函数指针

// 函数指针
double(*p1)(double) = sin;
// 定义函数指针类
typedef double(*Tpf)(double);
Tpf p3 = sin;
// 定义函数类
typedef double(Tf)(double);
Tf *p2 = sin;
// 作为类型参数(&sinsin 等效)
vector<double(*)(double)> arr {&sin, cos} arr;
// 调用函数(dereference 可选)
cout << "sin(1) = " << arr[0](1) << endl;
cout << "cos(1) = " << (*arr[1])(1) << endl;

7. 文件处理


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利