- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个程序,用于读取用户输入的文本文件,文件内部包含 .br
、 .sp
和 等格式化功能.nf
.
.nf
表示不填充,也意味着当您在 .nf
之后看到任何格式化功能时,它们都应该被忽略,并且应该只以格式输出文本它最初出现在文本文件中。
例如:
.nf Hello my name is .br Jay.
输出:
Hello my name is Jay
如果 .nf
不存在,则输出将为:
Hello my name is
Jay.
这是我的代码:
int main(void) {
FILE *fp = NULL;
char file_name[257] = {'\0'};
char line[61] = {'\0'};
char word[61] = {'\0'};
int out = 0;
int blanks;
int space;
int useFormats = 1;
printf ( "Enter file name:\n");
scanf ( " %256[^\n]", file_name);
if ( ( fp = fopen ( file_name, "r")) == NULL) {
printf ( "could not open file\n");
return 1;
}
while (useFormats == 1){
while ( ( fscanf ( fp, "%60s", word)) == 1) { //breaks the sentence after .br
if ( strcmp ( word, ".br") == 0) {
printf ( "%s\n", line);
line[0] = '\0';
out = 1;
}
if ( strcmp ( word, ".nf") == 0) {// stop filling lines (no fill)
useFormats == 0;
line[0] = '\0';
out = 1;
}
if ( strncmp ( word, ".sp", 3) == 0) { // creates n amount of spaces after .sp
if ( ( sscanf ( &word[3], "%d", &blanks)) == 1) {
printf ( "%s\n", line);
while ( blanks) {
blanks--;
printf ( "\n");
}
line[0] = '\0';
out = 1;
}
else {
printf ( "%s\n", line);
line[0] = '\0';
out = 1;
}
}
else if ( strlen ( line) + strlen ( word) + 1 < 60) {
strcat ( line, " ");
strcat ( line, word);
out = 0;
}
else {
printf ( "%s\n", line);
strcpy ( line, word);
out = 1;
}
}
if ( !out) {
printf ( "%s\n", line);
}
fclose ( fp);
return 0;
}
}
我尝试创建一个名为 useFormats
的变量,该变量在运行时为 true,当它到达 .nf
功能时我将其设置为 false,但没有任何反应。我不确定是否应该删除 if
语句并创建另一个 while
循环来表示 while (useFormats == 0)
来实现.nf
功能。
最佳答案
这应该捕获“.nf”
token 并将useFormats设置为零。将 if ( useFormats == 1) {
添加到其他格式条件应该会禁用它们。
#include <stdio.h>
#include <string.h>
#define WIDTH 80
int main(void) {
FILE *fp = NULL;
char file_name[257] = {'\0'};
char line[61] = {'\0'};
char word[61] = {'\0'};
int out = 0;
int blanks = 0;
int center = 0;
int useFormats = 1;
int margin = 0;
printf ( "Enter file name:\n");
scanf ( " %256[^\n]", file_name);
if ( ( fp = fopen ( file_name, "r")) == NULL) {
printf ( "could not open file\n");
return 1;
}
while ( ( fscanf ( fp, "%60s", word)) == 1) {// read file to end one word at a time
if ( strcmp ( word, ".nf") == 0) {// no formatting)
useFormats = 0;
center = 0;
continue;
}
if ( strncmp ( word, ".ce", 3) == 0) {
if ( useFormats == 1) {
if ( ( sscanf ( &word[3], "%d", ¢er)) != 1) {
center = 0;
}
}
continue;
}
if ( strncmp ( word, ".sp", 3) == 0) {
if ( useFormats == 1) {
if ( ( sscanf ( &word[3], "%d", &blanks)) == 1) {
margin = 0;
if ( center) {
margin = WIDTH - ( ( WIDTH - strlen ( line)) / 2);
center--;
}
printf ( "%*s\n", margin, line);
while ( blanks) {
blanks--;
printf ( "\n");
}
line[0] = '\0';
out = 1;
}
else {
margin = 0;
if ( center) {
margin = WIDTH - ( ( WIDTH - strlen ( line)) / 2);
center--;
}
printf ( "%*s\n", margin, line);
line[0] = '\0';
out = 1;
}
}
continue;
}
if ( strcmp ( word, ".br") == 0) {
if ( useFormats == 1) {
margin = 0;
if ( center) {
margin = WIDTH - ( ( WIDTH - strlen ( line)) / 2);
center--;
}
printf ( "%*s\n", margin, line);
line[0] = '\0';
out = 1;
}
continue;
}
if ( strlen ( line) + strlen ( word) + 1 <= 60) {
strcat ( line, " ");
strcat ( line, word);
out = 0;
}
else {
margin = 0;
if ( center) {
margin = WIDTH - ( ( WIDTH - strlen ( line)) / 2);
center--;
}
printf ( "%*s\n", margin, line);
strcpy ( line, word);
out = 1;
}
}
if ( !out) {
margin = 0;
if ( center) {
margin = ( WIDTH - strlen ( line)) / 2;
center--;
}
printf ( "%*s\n", margin, line);
}
fclose ( fp);
return 0;
}
关于c - 如何实现 `.nf`格式化功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649520/
在 WSL2 中运行 docker info(在 ArchWSL 和 Ubuntu 20.04 上)我收到以下警告: WARNING: bridge-nf-call-iptables is disab
在一本在线 awk 手册中我找到了例子awk '{ if (NF > max) max = NF } END { print max }' 该程序打印任何输入行上的最大字段数。但我不明白 awk 如何
我有 NC_042565.1 1 1 0 0 1 0 0 1 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 NC_042565.1 2
我有 NC_042565.1 1 1 0 0 1 0 0 1 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 NC_042565.1 2
我试图了解两个命令之间的区别是什么(我期望两个命令有相同的结果): 案例一 echo 'one,two,three,four,five' |awk -v FS=, '{NF=3}1' one two
我有这样一个文件: ID1 as;uh;2 ID2 uh;3 jk PASS ID3 PASS ID4 as;uh;PASS kk;3 rt ID5 as ID6 PASS PASS uh 3;4 I
我试图在 $NF 之前打印参数.然而$NF--没有用。解决这个问题的方法是什么?问题是,我不知道我得到了多少参数,所以我总是需要 $NF和之前的arg。 亲切的问候 于尔根 host -t ptr 1
我编写了一个程序,用于读取用户输入的文本文件,文件内部包含 .br 、 .sp 和 等格式化功能.nf. .nf 表示不填充,也意味着当您在 .nf 之后看到任何格式化功能时,它们都应该被忽略,并且应
我有一个数据库,用于存储射击游戏的结果。我将它们放入 3NF 以允许系统扩展。所以它看起来像这样: Player ------------------- GameId integer PlayerId
我有以下文件: cat testing.txt ============== line1 1 line2 2 2 line3 3 3 line4 我可以理解 awk 'NF > 0' testing.
我对以下内容有些困惑: $ echo foo bar baz | awk '{printf "%d:", NF--; print NF}' 3:2 $ echo foo bar baz | awk '
我读了一些教程,但我不明白如何链接各种 promise 来读取文件,但一个接一个,我认为这非常简单,但我不明白。 其想法是打开一个文件,读取另一个文件的文件名,打开该文件,然后启动 Express 服
以下有什么区别 NumberFormat nf = NumberFormat.getInstance(); 和 NumberFormat nf = new NumberFormat() 为什么我们需要
美好的一天! 我是创建数据库的新手...我需要为我的招聘网络应用程序创建一个数据库。 我的数据库架构如下: 注意:我在其他表中包含了申请人 ID...例如考试、面试、考试类型。 我是否违反了任何规范化
我在关系模型中有以下关系(表) Person person_id, first_name, last_name, address Student person_id, matr_nr Teac
我查看了一些重要的论坛,例如 SMF 论坛、PhpBB 或 VBulleting 论坛,我意识到它们不在 3rd FN 中。 他们有很多 NULL 字段,例如,在 SMF 论坛中,成员行可以将所有这些
我需要从文件中的每条记录中获取最后 4 个唯一值。文件以逗号分隔,不同记录的列数可以不同。我的输入文件。 $ cat last_cols.txt F F,B F,B,A F,B,A,F F,B,A,F
我正在阅读 The UNIX Programming Environment 和第 4.4 节,关于 awk,有这个示例代码: awk ' FILENAME != prevfile {
我有一些关于 DB2 NF 模式的客户问题。谷歌对此知之甚少。 我已经能够 推断 以下,但我并不完全相信它...... NF 和 CM(兼容模式)是大型机上 DB2 v8 上的设置。 CM 中 z/O
我正在尝试优化一个旨在获取大型数据集的库,并且 然后对其应用不同的操作。现在图书馆正在工作,我想要 来优化它。 我的印象是非严格评估允许 GHC 组合操作,以便数据只迭代一次 编写函数的顺序,以便对参
我是一名优秀的程序员,十分优秀!