2
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);

これは私のコードで、ある文字列を別の文字列にコピーしようとしていて、文字以外のすべてのケースを取り除いていましたが、それは私にとってはうまくいきます。 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

正しくなる

4

1 に答える 1

4

文字列の最後に null ターミネータを追加するのを忘れました:)

#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);
于 2012-10-25T03:36:18.050 に答える