導航:首頁 > 操作系統 > linuxc讀取行

linuxc讀取行

發布時間:2023-10-05 09:17:31

『壹』 linux 下如何編寫c程序,獲得命令行結果


void executeShell(const char *shell){

FILE *stream;

char buf[1024];

memset( buf, '', sizeof(buf) );//初始化buf,以免後面寫如亂碼到文件中

stream = popen( shell , "r" ); //將命令的輸出 通過管道讀取(「r」參數)到FILE* stream

fread( buf, sizeof(char), sizeof(buf), stream); //將剛剛FILE* stream的數據流讀取到buf中

pclose( stream );

printf("%s ",buf);//列印輸出結果

}

『貳』 C語言文件讀取問題 linux

剛按你的需求寫了個小程序,看看這個能滿足你的要求不,
遍歷一個目錄,查找不是隱藏的文件,然後輸出出來,
至於你要干什麼嘛,名都給你遍歷出來,估計你自己就會做了吧.
這個遍歷不是深度的,只遍歷你輸入的目錄的當前目錄.
編譯的話,帶gcc的環境,把這個隨便起個名
gcc
xxx.c
就行了..
運行時要加個參數
比如,生成的可執行程序是a.out
./a.out
/root/--->加的參數就是你要遍歷的路徑.
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<time.h>
#include
<stdio.h>
#include
<stdlib.h>
#include
<dirent.h>
int
main(int
argc,char
**argv)
{
struct
stat
s;
struct
stat
ss;
DIR
*dir
=
NULL;
struct
dirent
*dt
=
NULL;
if
(argc
!=
2)
{
printf("./xxx
dirpath
to
run
this
proc\n");
return
1;
}
if(lstat(argv[1],&s)
<
0)
{
printf("lstat
error\n");
return
1;
}
if(S_ISDIR(s.st_mode))
{//確定path是dir
dir
=
opendir(argv[1]);
if
(dir
==
NULL)
{
printf("open
dir
error\n");
return
1;
}
if
(chdir(argv[1])
<
0)
{//進入目錄
printf("chdir
error\n");
return
1;
}
while((dt
=
readdir(dir))
!=
NULL)
{
if(dt->d_name[0]
==
'.')
{//隱藏文件或./..目錄不進行查找
continue;
}
if(lstat(dt->d_name,
&ss)
<
0)
{
continue;
}
if
(S_ISREG(ss.st_mode))
{//列印普通文件
printf("file:%s\n",dt->d_name);
}
}
}
return
0;
}

『叄』 linux c怎麼實現從文件的最後一行一行向前讀文件

下面的例子使用mmap讀最後20行(假設最後20行不會超過1024位元組)
/*-
* Copyright (C), 1988-2014, mymtom
*
* vi:set ts=4 sw=4:
*/
#ifndef lint
static const char rcsid[] = "$Id$";
#endif /* not lint */
/**
* @file last20.c
* @brief
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <unistd.h>
#include <limits.h>
#include <stdio.h>
#include <string.h>
char *memchrr(const void *v1, const char *v2, int c)
{
char *s1, *s2;
char *p;
s1 = (char *)v1;
s2 = (char *)v2;
for (p = s2; p >= s1; --p) {
if (*p == c)
return p;
}
return NULL;
}
#define READSIZE 1024
int main(int argc, char *argv[])
{
int ret;
FILE *fp;
char *addr;
size_t len;
int prot;
int flags;
int fd;
off_t off;
off_t rem;
long pagesize;
struct stat buf;
pagesize = sysconf(_SC_PAGESIZE);
fp = fopen("last20.c", "rb");
fd = fileno(fp);
ret = fstat(fd, &buf);
if (buf.st_size <= READSIZE || buf.st_size <= pagesize) {
off = 0;
len = buf.st_size;
} else {
off = buf.st_size - READSIZE;
rem = off % pagesize;
off = off - rem;
len = READSIZE + rem;
}
/*
printf("size=%d READSIZE=%d off=%d len=%d\n",
(int)buf.st_size, (int)READSIZE, (int)off, (int)len);
*/
prot = PROT_READ;
flags = MAP_PRIVATE;
addr = mmap(NULL, len, prot, flags, fd, off);
fclose(fp);
{
int i, n;
char *head, *tail;
size_t size;
char line[1024];
tail = addr + len - 1;
n = 20;
for (i = 0; i < n; ++i) {
head = memchrr(addr, tail - 1, '\n');
if (head == NULL) {
size = tail - addr;
memcpy(line, addr, size);
line[size] = '\0';
} else {
size = tail - head - 1;
memcpy(line, head + 1, size);
line[size] = '\0';
tail = head;
}
printf("%s\n", line);
if (head == NULL) {
break;
}
}
}
munmap(addr, len);
return 0;
}
運行結果為:
./last20 | tac | cat -n
line[size] = '\0';
} else {
size = tail - head - 1;
memcpy(line, head + 1, size);
line[size] = '\0';
tail = head;
}
printf("%s\n", line);
if (head == NULL) {
break;
}
}
}
munmap(addr, len);
return 0;
}

『肆』 如何用C語言在linux上統計文件行數

統計行數可以通過統計換行符 來實現。不過需要注意的是,有些文件最後一行並不存在換行符,所以代碼中需要對此作處理。

可以在達到文件結尾後,判斷前一個字元,如果不是換行符,那麼應補加最後一行統計。

代碼如下:

假定輸入文件為in.txt,該文件存在且可讀。

#include<stdio.h>
intmain()
{
FILE*fp=NULL;//文件指針。
intc,lc=0;//c為文件當前字元,lc為上一個字元,供結尾判斷用。
intline=0;//行數統計
fp=fopen("in.txt","r");//以只讀方式打開文件。
while((c=fgetc(fp))!=EOF)//逐個讀入字元直到文件結尾
{
if(c==' ')line++;//統計行數。
lc=c;//保存上一字元。
}
fclose(fp);//關閉文件
if(lc!=' ')line++;//處理末行

printf("文件共有%d行。 ",line);

return0;
}

樣例輸入輸出:

如in.txt有如下內容:

testline1
testline2

則會輸出:

文件共有2行。

『伍』 linux下c語言 讀取文件內容

沒測試過,不過問題應該是fgetc這里
fgetc獲取到第一個字元,比如第一行的'#'號,然後fgets獲取到後面的字元,列印當然就沒有第一個字元了,解決方式要麼只用fgets,要麼把fgetc獲取的字元也列印出來

閱讀全文

與linuxc讀取行相關的資料

熱點內容
無理的命令 瀏覽:506
問道手游解壓失敗是什麼原因 瀏覽:772
mysql命令提示 瀏覽:369
apachephp中文亂碼 瀏覽:335
pythonimportpylab 瀏覽:236
阿里雲app伺服器價格表 瀏覽:978
appstore怎麼搶手機 瀏覽:843
列印伺服器是什麼列印隊列 瀏覽:357
網上怎麼用app辦理營業執照 瀏覽:859
sql如何查看伺服器地址 瀏覽:777
編譯速度和系統有關嗎 瀏覽:56
復盛製冷壓縮機 瀏覽:982
雲伺服器共享手機流量 瀏覽:842
星界邊境像素壓縮 瀏覽:459
演算法分析與設計二手 瀏覽:983
學編程如何配電腦 瀏覽:971
怎麼看特徵找卡密的加密方式 瀏覽:526
方舟非官方伺服器怎麼賺錢 瀏覽:516
明日之後伺服器無效是怎麼回事 瀏覽:272
蛋殼公寓app如何查水電表 瀏覽:718