❶ 怎麼用c語言去掉文本文件中的空白行
//以下程序好像有點復雜,不過目前我只能想到這個
//基本思想是先建一個臨時文件將原文件修改後的內容放入臨時文件,再將臨時文件內容考回原文件,最後刪除臨時文件
#include <stdio.h>
int main()
{
FILE *fpi,*fpo;
char A[100];
fpi=fopen("in","r");//待修改的文件
fpo=fopen("bc.txt","a+");//臨時文件
while(fgets(A,100,fpi))//將刪除空行後的內容暫時存在bc.txt中
{
if(A[0]=='\n'||A[0]=='\r')
continue;
else
fputs(A,fpo);
}
fpi=fopen("in","w");//重新打開abc.txt,並刪除其原先內容w表示如果abc.txt存在,則刪除其內容
rewind(fpo);//重新定位臨時文件,並將文件指針定位到文件頭部,准備讀
while(fgets(A,100,fpo))
{
fputs(A,fpi);//將bc.txt的文件讀到abc中
}
fclose(fpi);//關閉文件指針
fclose(fpo);
remove("bc.txt");//刪除臨時文件
}
❷ c語言如何去除無謂的空格,空行
這樣的結果可以嗎,源代碼附件發上來,滿意請採納
❸ C語言 如何利用trim函數出除字元串頭尾的指定字元
1、trim()方法返回調用字元串對象的一個副本,但是所有起始和結尾的空格都被刪除了,例子如下:String s=" Hello World ".trim();就是把"Hello World"放入s中。
2、常式:
voidtrim(char*s,charc)
{
char*t=s;
while(*s==c){s++;};
if(*s)
{
char*t1=s;
while(*s){s++;};
s--;
while(*s==c){s--;};
while(t1<=s)
{
*(t++)=*(t1++);
}
}
*t=0;
}
intmain()
{
charmm[]="**helloword!**";
trim(mm,'*');
printf("%s ",mm);
}
❹ c語言如何刪除輸出的最後的一個字元
可以通過輸出\b來實現。 \b 是C語言的轉義字元之一,其含義為退格(BS),ascii碼值為8。 當輸出\b時,其顯示效果為游標退後一格。 需要注意的是,只是游標退後,並不會刪除字元,所以要達到真正的刪除效果,還需要再輸出一個字元。如果在後退後系統不再輸出其它字元,那麼需要手動輸出一個空白字元來達到刪除的作用。 比如 printf("\b "); 即在\b後馬上輸出一個空格,原本的最後一個字元就會被空格覆蓋,實現刪除的效果。 另外一個需要注意的點為,\b只能夠退格,不能推行,所以如果最後一個字元為換行符,那麼是無法實現刪除最後一個字元的效果的。
❺ 如何去除c語言中無謂的空行和空格
程序不是給你了嗎,怎麼又開了新帖
❻ C語言編程~~讀入一個txt文件,輸出時要將其中的空行過濾掉!高人幫忙!!
前面把空格看錯了,現在改好了。
把需要讀入一個txt文件放在源文件的目錄下就可以了 ,並且把代碼里的「源文件名」相應改下就可以了
#include <stdio.h>
int main()
{
FILE *A=NULL,*B=NULL;
int ch;
A=fopen("d:\\源文件名.txt","rb");if(!A)exit(-1);
B=fopen("d:\\輸出文件(如果沒有可以隨便起一個名字).txt","wb");if(!B)exit(-1);
printf("開始:");
while((ch=fgetc(A))!=EOF)
{
if((ch!='\n'))
if(fputc(ch,B)==EOF)exit(-1);
}
fflush(B);
fclose(A);
fclose(B);
printf("結束。\n");
return 0;
}
❼ 用C語言編譯程序:刪除C++源程序中的多餘空行及注釋文字
代碼如下:#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>void
main()
{
FILE*
fp
=
fopen("test.cpp",
"r");
if(NULL
==
fp)
{
return;
}
fseek(fp,
0L,
SEEK_SET);
char
char_line[1024]
=
{0}; int
totoalline
=
0;
printf("/****************原始文件*************************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
printf("%s",
char_line);
memset(char_line,
0,
1024);
totoalline++;
}
printf("/****************原始文件結束,共%d行*************/\n",
totoalline); fseek(fp,
0L,
SEEK_SET);
totoalline
=
0;
FILE*
fp_to
=
fopen("result.cpp",
"w");
printf("\n\n/****************去除冗餘後的文件*****************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
int
i;
for(i=0;
i<size-1;
i++)
{
if('/'
==
char_line[i]
&&
'/'
==
char_line[i+1])
{
break;
}
}
if(0
!=
i)
{
bool
flag_tab
=
0;
for(int
j=0;
j<i;
j++)
{
if('\t'
!=
char_line[j]
&&
'
'
!=
char_line[j])
{
flag_tab
=
true;
break;
}
}
if(flag_tab)
{
char*
ret
=
(char*)malloc(sizeof(char)*(i+1));
ret[i]
=
0;
memcpy(ret,
char_line,
i);
printf("%s\n",
ret);
//寫入到新文件
fwrite(ret,
sizeof(char),
i,
fp_to);
fwrite("\r\n",
sizeof(char),
2,
fp_to);
free(ret);
totoalline++;
}
}
memset(char_line,
0,
1024);
}
printf("/****************去除冗餘後的文件結束,共%d行*****/\n",
totoalline);
printf("詳情查看resutl.cpp\n");
fclose(fp);
fclose(fp_to);
}
❽ C語言 怎麼在輸出沒有結果時空行,有結果的話怎麼在最後一個數字不顯示空格
增加一個變數記錄要不要加空格或換行就可以了。步驟如下:
1)定義一個int flag=0;
2)把printf("%d ",number);修改為:
if(flag==0)
{
printf("%d",number);
flag=1;
}
else
{
printf(" %d",number);
}
3)在return 0;之前加入以下語句:
if(flag==0)
{
printf("\n");
}