2009-09-12 59 views
1

我想在C中,將打印一個字符串作爲參數的函數。這在C中甚至可能嗎?C編程。如何使方法來打印一個字符串

我在我的頭文件中有這樣的東西,但字符串不是一個有效的標識符。我知道C中沒有字符串,但string.h類是什麼?

#include <string.h>  

#ifndef _NEWMAIN_H 
#define _NEWMAIN_H 

#ifdef __cplusplus 
extern "C" { 
#endif 

    void print (string message){ //this is where i need help 
     printf("%s", message); 
    } 


#ifdef __cplusplus 
} 
#endif 

#endif /* _NEWMAIN_H */ 
+0

謝謝大家。我學到了一些新東西。 – user69514 2009-09-12 02:56:03

回答

5

在C中,沒有天然string類型。

C將字符串處理爲空終止的char數組。

例如:

char* string = "this is a string"; 

string.h存在對C字符串,這是char*類型的執行字符串操作的功能。

當打印使用printf一個字符串,一個將通過在char*一個變量:

char* string_to_print = "Hello"; 
printf("%s", string_to_print); 

有關在C字符串信息越多,Wikipedia page on C strings將是一個良好的開端。

+2

我認爲大多數C編譯器讓你可以使用非const指針指向字符串文字,但「這是一個字符串」真的是const,應該指向const char *。 – 2009-09-12 03:57:27

3
void print (const char* message) { 
      printf("%s", message); 
} 
0

C中沒有字符串,因爲C中沒有類。0123> 提供了處理C中字符串文本操作的例程,使用指向char的指針。

你會想改寫這個樣:

void print(const char* message) { 
    printf(message); // You don't need the formatting, since you're only passing through the string 
} 

話雖這麼說,它不是真正的不僅僅是直接調用的printf有什麼不同。

+7

即使只是「%s」,也應該使用格式化。如果您打印的字符串是「%s」,則說明您遇到問題。 – Craig 2009-09-12 02:44:59

+0

@Craig僅當您從不可靠的來源(例如用戶或外部)打印字符串時,然而,在沒有格式的情況下打印自己的字符串是安全的。教條不好 - 你需要知道爲什麼。 – qrdl 2009-09-12 06:21:47