for (i = 0; i < size; i++) {
if((string[i] >= 65 && string[i] <= 90) || (string[i] >= 97 && string[i] <= 122) || string[i] == 10) {
sec_str[j] = tolower(string[i]);
putchar(sec_str[j]);
j++;
}
}
printf("%s\n", sec_str);
这是我的代码,试图将一个字符串复制到另一个字符串,剥离所有非字母的情况,这对我来说很好,我使用putchar(sec_str [j])来检查它们都很好,但是当我检查了printf(“%s”,sec_str),输出很乱。像这样的东西:
asantaspotstopsatnasa
asantaspotstopsatnasa
twasbrilligandtheslithytoves
twasbrilligandtheslithytoves
����r�$
yobananaboy
yobananaboy
ndth
neveroddoreven
neveroddoreven
h
thetimehascomethewalrussaid
thetimehascomethewalrussaid
����t�r�$
并打印printf
asantaspotstopsatnasa
twasbrilligandtheslithytoves
yobananaboy
neveroddoreven
thetimehascomethewalrussaid
正确
答案 0 :(得分:4)
您忘记在字符串末尾添加空终止符:)
#include <stdio.h>
#include <ctype.h>
...
for (i = 0; i < size; i++) {
if(ischar(string[i]) || (string[i] == 10) ) {
sec_str[j] = tolower(string[i]);
putchar(sec_str[j]);
j++;
}
}
sec_string[j] = '\0';
printf("%s\n", sec_str);