如果问题是“如何添加'?'到字符串的结尾?“我要回答:
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