c语言几个点

来源:互联网 发布:unity3d 灯光 编辑:程序博客网 时间:2024/05/21 15:49

1.逐行读取文件:http://www.cnblogs.com/kissazi2/archive/2012/10/29/2744153.html

#include <stdio.h>   int main()  {      char filename[] = "D:\\阶段性学习\\大三上\\1.课程学习\\编译原理\\0903\\实验二\\test.c"; //文件名     FILE *fp;      char StrLine[1024];             //每行最大读取的字符数     if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读     {          printf("error!");          return -1;      }       while (!feof(fp))      {          fgets(StrLine,1024,fp);  //读取一行         jk //输出     }      fclose(fp);                     //关闭文件     return 0;  }


2.切分字符串:http://baike.baidu.com/link?url=5p9qlw7ZzG1eWBDfz13rnjwxHPKf4v8_375sZoFoxTZuuqAd9AEJ7aOXwnEzHS0vVKskQZGwW9pfa6svrTOK9q

strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。第一次调用strtok需要传入要分割的字符串str进行初始化,随后对同一个字符串继续分割传入NULL即可。这个地方需要注意,如果不传入NULL,那么就会出现死循环,一直返回str第一个被分割出的子串。

#include<string.h>#include<stdio.h>int main(void){    char input[16]="abc,d";    char*p;    /*strtok places a NULL terminator    infront of the token,if found*/    p=strtok(input,",");    if(p)        printf("%s\n",p);        /*Asecond call to strtok using a NULL        as the first parameter returns a pointer        to the character following the token*/    p=strtok(NULL,",");    if(p)        printf("%s\n",p);    return 0;}

函数第一次调用需设置两个参数。第一次分割的结果,返回串中第一个 ',' 之前的字符串,也就是上面的程序第一次输出abc。
第二次调用该函数strtok(NULL,","),第一个参数设置为NULL。结果返回分割依据后面的字串,即第二次输出d。
strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置

3.执行shell命令

popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。

#include<string.h>#include<stdio.h>int main(void){    FILE * fp;    char buffer[204800];    char line[200];    fp = popen("top -n 1 -b","r");    if (fp != NULL) {        while (fgets(line, 200, fp) != NULL) {                strcat(buffer, line);        }        printf("buffer=%s\n", buffer);    }    pclose(fp);    return 0;}


0 0