私は自分でcを学んでおり、実際にファイル内のTAbの数を数えるプログラムをコーディングしようとしています.行にタブがある場合は、行全体とこの行のタブの数を出力したいと思います. そして、それがそれほど難しくない場合は、行が80文字を超える場合にもそれを行うのを手伝ってほしいです。この行と文字数を印刷して、この主な機能を持っています:
include <stdio.h> /* printf */
/* Prototype from tablen.c */
void tablen(const char *filename);
int main(int argc, char **argv)
{
if (argc < 2)
{
printf("Usage: tablen filename\n");
printf("where: filename - file to process.\n");
return -1;
}
tablen(argv[1]);
return 0;
}
このメイン関数は非常に基本的なものなので、エラーがないことを願っています。そして、この機能も:
include <stdio.h> /* FILE, fopen, feof, fgets, fclose */
include <string.h> /* strlen */
void tablen(const char *filename)
{
/*Variables*/
int i; /*loop controller */
int tabs = 0; /*number of tabs*/
int line = 0; /*current line*/
int size_string; /*size of the string*/
File *file; /* open and read the file */
file = fopen(filename, "rt"); /*open the file for read text*/
size_string = strlen(filename);
/*if we can read the file*/
if(file)
{
/*while we don't reach the end of file, we still reading*/
while (!feof(file))
{
for(i = 0; i < size_string; i++)
{
if(filename[i] == 9) /*ASCII value of TAB is 9 or '\'*/
{
tabs++;
}
if(tabs > 0)
{
printf("# %i: (tabs: %i) |", line, tabs);
}
if(filename[i] == '\n')
{
line++;
tabs = 0;
}
}
}
}
}
私はこの疑似コードを書きましたが、それは正しいと思います タブをカウントする場合: まず、ファイル内にさらに行がある間に、読み取り/テキスト用にファイルを開きます (そして、1 つずつ読み取ります)。見つかった場合は、タブの数をカウントしますタブ付きの行、行とタブの数を出力しますもちろん、ファイルを閉じます
線の長さの確認用
最初に読み取り/テキスト用にファイルを開き、ファイルにさらに行があることを確認します。各行の長さを調べます。行が 80 文字を超える場合は、その行を長さ情報とともに出力します
ファイルを扱うのは初めてなので、正しい方法であるかどうかはわかりません