查找“前導空格”的最主要目的就是為了知道如何刪除這些空格。
前導空格是指變數、常量值等有效內容前面的空格。不僅是C語言,其它語言中,關於前導空格的概念應該都是一樣的。
日常工作中,由於使用軟體不同,產生的數據檔案也不盡相同,有許多軟體生產的數據檔案採用固定格式,往往造成有效數據前填補空格,這些空格對其他軟體的套用造成障礙,必須刪除這些空格才可使用。查找“前導空格”的最主要目的就是為了知道如何刪除這些空格。
計算機語言
一、VFP中消除前導空格函式(ltrim())將字符表達式前面的空格全部刪除,並將結果返回。
語法:
trim(字元表達式)
返回值的類型:
字元型
參數:
字元表達式:指定的字元表達式,該函式將刪除其後續空格。
舉例:
在講str()函式時我們舉過一個例,即把一個字元與一個數值相加時,應採用如下形式:
? '季度'+str(1,1)
但是當我們沒有辦法確定這個數值的位數時,這個辦法就行不通了,您不可能規定它的長度只能是1或2等等。那么怎么辦呢,採用LTrim()函式可以解決了:
? '項目'+ltrim(str(sz))
這裡假設事先已有一個數值存入了sz變數,但不知道這個數值是幾,也就更不知道有幾位數,那么在隱含狀態下,str()函式將把sz轉換為長度為10的字元,其前面可能有若干空格,通過ltrim()函式的處理,不論前面有多少空格,都可以得到如下結果(假設數值是15):
項目15
#include<stdio.h>
/*刪除前導空格的函式*/
void headspace(char* s)
{
int i,j;
for(i=0;s[i]==32;i++); /*循環結束後的i值為前導空格的個數*/
if(i==0) return;
for(j=i;s[j]!="\0";j++) s[j-i]=s[j];
s[j-i]="\0";
}
/*刪除後繼空格的函式*/
void tailspace(char* s)
{
int i=0,k;
while(s[i]!="\0")i++;
for(k=i-1;s[k]==32;k--);
s[k+1]="\0";
}
/*main函式可以用來測試函式的正確性*/
main()
{
char s[20];
printf("\n");
gets(s); /*輸入一個字元串*/
puts(s); /*輸出字元串*/
printf("\n");
printf("%d\n",strlen(s)); /*輸出原字元串的長度(不包含結束標誌)*/
headspace(s);
puts(s);
printf("\n");
printf("%d\n",strlen(s)); /*輸出刪除前導空格後的字元串的長度*/
tailspace(s);
puts(s);
printf("\n");
printf("%d\n",strlen(s)); /*輸出刪除後繼空格後的字元串的長度*/
}