char str[] = "hello world";
printf("%s",str);
printf語句打印所有字符的字符串達到'\0'
所以如果我想在stdout
僅打印4 str
第1個字符?
char str[] = "hello world";
printf("%s",str);
printf語句打印所有字符的字符串達到'\0'
所以如果我想在stdout
僅打印4 str
第1個字符?
您可以只指定在格式化字符串字段寬度:
#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
對於第一字符,你可以使用:
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
也是最小值大小的標誌。如果字符串中沒有足夠的字符來滿足大小,則輸出將被填充右邊的空格。這將打印最多4個字符。
printf("%.4s", str);
,您可以使用%C,在您的格式字符串:
printf("%c", *s);
打印 'H'
印刷任意字符:
printf("%c", s[3]);
打印 'L'
numOfChars = 4;
printf("%.*s\n", numOfChars, "Hello, world!");
其中numOfChars
是您想要打印的字符數量。
我很高興我的編輯就是你的意思。你不能直接把變量放在字符串本身,你必須使用'*'。 – paxdiablo 2012-02-03 08:56:43
是的。從編程語言跳到其他人會讓我總是感到困惑。抱歉。 – DonCallisto 2012-02-03 08:58:22
沒有probs,我曾經在我開發的一些Perl代碼中出錯,當我調查時,我在Python中編寫了一個完整的函數:-)該死的尷尬。 – paxdiablo 2012-02-03 09:00:51
真的少了系統的痛苦:
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++;
}
}
除了在ISO C中沒有'write'的事實:-)也許你的意思是'fputc'? – paxdiablo 2012-02-03 09:02:09
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.
哦,它的工作我做了同樣的事情,但我失蹤了。之後%因此它不工作...! – 2012-02-03 10:09:44