c語言沒有字符串(string)這種類型,但是可以用字符數(shù)組代替
輸入方法
如果知道字符數(shù)組的長度,我們可以用下面的方法輸入
char s[10];//長度為10的字符數(shù)組
for(int i=0;i<5;i++)//輸入五個字符
scanf("%c",&s[i]);
在不知道長度的情況下,可以用下面的方法輸入
char s[100];//定義一個足夠長的字符數(shù)組
scanf("%s",s);//方法一,注意不需要用&,因為數(shù)組名s就是數(shù)組的首地址
gets(s);//方法二
方法一和二都可以接收一串字符,區(qū)別是,方法一遇到空格和回車就會停止,方法二遇到回車才會停止
舉個例子,如果你輸入abc abc然后回車,輸出的時候,方法一只會輸出abc,而方法二可以輸出完整的abc abc
輸出方法
如果知道長度,可以用for循環(huán)直接printf輸出每個字符
如果不知道,可以用下面的方法
char s[100];
gets(s);//輸入
printf("%s",s);//輸出方法一
puts(s);//輸出方法二
要注意的是,如果你是用for循環(huán)來輸入字符的,那么不可以用puts或者%s來輸出,否則會出現(xiàn)亂碼。(比如vc的燙燙燙)
char s[10];//長度為10的字符數(shù)組
for(int i=0;i<5;i++)//輸入五個字符
scanf("%c",&s[i]);
puts(s);//輸出亂碼
printf("%s",s);//輸出亂碼
這是因為,如果你輸入用的是gets()或者scanf("%s",s),他會自動在字符的最后加上一個'\0',用puts或者%s輸出的時候,他會找到字符中的'\0',然后把'\0'前的字符全部輸出,而用for則不會給你加'\0'
如果我們把代碼改成下面這樣
char s[10];//長度為10的字符數(shù)組
for(int i=0;i<5;i++)//輸入五個字符
scanf("%c",&s[i]);
s[i]='\0';//給最后加上\0
puts(s);//輸出正常
printf("%s",s);//輸出正常