我正在尝试在我的代码中实现格式化功能,首先是
我读了用户输入的文本文件和格式化功能
例如" .br"," .sp"和" .ce"包含在此文本文件中。
所以我试图做一个if语句,如果程序找到了单词" .br"它
应该立即打破并在新行上开始下一个单词,但我真的
无法想办法做到这一点。
#include <stdio.h>
#include <string.h>
int main(void) {
FILE *fp = NULL;
char file_name[257] = {'\0'};
char line[61] = {'\0'};
char word[61] = {'\0'};
int out = 0;
printf ( "Enter file name:\n");
scanf ( " %256[^\n]", file_name);
if ( ( fp = fopen ( file_name, "r")) == NULL) {
printf ( "This file does not exist.\n");
return 1;
}
while ( ( fscanf ( fp, "%60s", word)) == 1) {
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 ((word) == ".br"){
}
}
if ( !out) {
printf ( "%s\n", line);
}
fclose ( fp);
return 0;
}
我为&#34; .br&#34;创建了IF语句。功能,但我真的需要帮助或一些
了解实际放入循环的内容。
答案 0 :(得分:1)
添加if条件以将单词与“.br”进行比较。打印出当前行并设置line
以接受空字符串中的下一个单词。
#include <stdio.h>
#include <string.h>
int main(void) {
FILE *fp = NULL;
char file_name[257] = {'\0'};
char line[61] = {'\0'};
char word[61] = {'\0'};
int out = 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) {
if ( strcmp ( word, ".br") == 0) {
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;
}
答案 1 :(得分:0)
if( 0 == strcmp( word, ".br" ) )
{
printf( "%s", line );
printf( "\n" );
}
注意字符串无法与==
进行比较,必须使用strcmp()
发布的代码需要重新排列,因此在检查令牌line[]
是否不是格式序列之前,字符不会放入word[]
。