2012-02-03 46 views

回答

6

您可以只指定在格式化字符串字段寬度:

#include <stdio.h> 

int main(void) 
{ 
    const char *s = "Hello world !"; 

    printf("%.4s\n", s); 
    return 0; 
} 

,或者,如果你想在運行時指定字段寬度:

#include <stdio.h> 

int main(void) 
{ 
    const char *s = "Hello world !"; 
    const int fw = 4; 

    printf("%.*s\n", fw, s); 
    return 0; 
} 

在輸出將爲:

Hell 
+0

哦,它的工作我做了同樣的事情,但我失蹤了。之後%因此它不工作...! – 2012-02-03 10:09:44

2

對於第一字符,你可以使用:

printf ("%c", *str);   // or 
printf ("%c", *(str+0));  // or 
printf ("%c", str[0]); 

對於不同的性格,只要伸出手用偏移抓住它。對於第二l在偏移3:

printf ("%c", str[3]);  // or 
printf ("%c", *(str+3)); 

對於子串,可以沿着使用該方法的結合的printf最大場寬度特徵:

printf ("%.2s", str+3);  // prints "lo" 

隨着所有這些解決方案,你想確保你不會從null結束符的錯誤一面開始。那會不會是:-)

如果你想有一個通用的解決方案,適用於任何字符串工作的好東西,是在尋找起點而言比較安全的,你可以使用:

void outSubstr (FILE *fh, char *str, size_t start, size_t sz, int padOut) { 
    if (start >= strlen (str)) { 
     if (padOut) 
      fprintf (fh, "%*s", sz, ""); 
     return; 
    } 

    if (padOut) 
     fprintf (fh, "%-*.*s", sz, sz, str + start); 
    else 
     fprintf (fh, "%-.*s", sz, str + start); 
} 

參數如下:

  • fh是要寫入的文件句柄。
  • str是字符串的開始。
  • start是開始打印的偏移量。
  • sz是要打印的最大字符數。
  • padOut是表示sz也是最小值大小的標誌。如果字符串中沒有足夠的字符來滿足大小,則輸出將被填充右邊的空格。
1

這將打印最多4個字符。

printf("%.4s", str); 
2

,您可以使用%C,在您的格式字符串:

printf("%c", *s); 

打印 'H'

印刷任意字符:

printf("%c", s[3]); 

打印 'L'

-1
numOfChars = 4; 
printf("%.*s\n", numOfChars, "Hello, world!"); 

其中numOfChars是您想要打印的字符數量。

+1

我很高興我的編輯就是你的意思。你不能直接把變量放在字符串本身,你必須使用'*'。 – paxdiablo 2012-02-03 08:56:43

+0

是的。從編程語言跳到其他人會讓我總是感到困惑。抱歉。 – DonCallisto 2012-02-03 08:58:22

+1

沒有probs,我曾經在我開發的一些Perl代碼中出錯,當我調查時,我在Python中編寫了一個完整的函數:-)該死的尷尬。 – paxdiablo 2012-02-03 09:00:51

0

真的少了系統的痛苦:

int main(void) 
{ 
    char c; 

    c = 'z'; 
    write(1, &c, 1); 
} 

無需在這裏重標準輸入輸出

然後你可以...

char *s = "Hello, World!"; 
write(1, s, numberOfChars); 

或者,如果你真的想這樣做炭通過字符:

void printnchars(char *s, int n) 
{ 
    int i; 

    i = 0; 
    while (i <= n) 
    { 
    write(1, s + i, 1); 
    i++; 
    } 
} 
+0

除了在ISO C中沒有'write'的事實:-)也許你的意思是'fputc'? – paxdiablo 2012-02-03 09:02:09

1
there is also a "substr()" function 

that return the substring from complete string. 

example 
printf("%s",substr(str,0,4)); 

it has syntax like this 

substr(arrayName,charStartingPosition, lengthOfCharacters); 

i hope this is easy to understand and no need to write more than 1 statement. 
相關問題