如果問題是「如何添加'?'到字符串的結尾?「我要回答:
1)使用strcat
添加一個或多個字符,例如:
#include<stdio.h>
#include<string.h>
int main(){
char new_string[101] = {0}; // +1 to be sure that enough place for '?' will be available
// {0} to init empty string
char string[100];
scanf("%s", string);
printf("original_number = %s\n", string);
int i;
int l = strlen(string) - 1;
for (i = 0; i <= l; i++){
new_string[i] = string[l - i];
printf("%c\n", new_string[i]);
}
strcat(new_string, "?");
printf("rev_number = %s\n", new_string);
}
2)把?
和循環結束後添加字符\0
,如:
#include<stdio.h>
#include<string.h>
int main(){
char new_string[101]; // +1 to be sure in place for '?'
char string[100];
scanf("%s", string);
printf("original_number = %s\n", string);
int i;
int l = strlen(string) - 1;
for (i = 0; i <= l; i++){
new_string[i] = string[l - i];
printf("%c\n", new_string[i]);
}
// add one more char
new_string[i] = '?';
// set the string end
new_string[i + 1] = '\0';
printf("rev_number = %s\n", new_string);
}
請注意,如果用0
填充所有數組作爲char new_string[101] = {0};
,則不需要將末尾字符串與new_string[i + 1] = '\0';
相加,因此如果初始化與第一次相同,則第二個變體可以更短t的一
對於片段我有相同的輸出
UPDATE:在處理字符串
還有一個建議。當輸入與scanf
製成,你知道多少字符可以被存儲在您的字符數組中使用下面的方法來防止違反數組邊界
char string[10]; // if you have 10 bytes
scanf("%9s", string); // ask not more than 9 characters
的記住,你需要「\ 0」多一個字節(空終止符)。
'炭new_string [100];' - >'炭new_string [100] = {0};' – BLUEPIXY
哇! ,它的工作,你能告訴我背後的邏輯,char new_string [100] = {0}; –
由於'new_string'尚未初始化,所以會顯示垃圾。有必要事先用0初始化,或者在字符串後添加空終止符(「'\ 0'')。 – BLUEPIXY