c语言char数组赋值解决方案

c语言char数组赋值
char splitStr[20];
char ciphertext[100];
int i,flag = 0;
gets(ciphertext); //输入字符串
for(i= 0; i < strlen(ciphertext); i++) //遍历读取字符串每个字符
{
  splitStr[flag] = plaintext[i]; //将每个字符复制给splitStr数组
  printf("%s",splitStr); //为什么这样输入会出现乱码?
  flag++;  
}

请问splitStr[flag] = plaintext[i];这句是将splitStr[flag]中存的是plaintext[i]的地址还是值?
printf("%s",splitStr); //为什么这样输入会出现乱码?


------解决方案--------------------
值...
------解决方案--------------------
探讨

你想打印字符串可以一个for循环。乱码是因为,你指向的是一个值或字符,而你用字符串形式打印。你可以单步调试下。

或者

puts(splitStr)

splitStr[flag]中存的是plaintext[i]的值。

------解决方案--------------------
C/C++ code

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char splitStr[20];
    char ciphertext[100];
    int i,flag = 0;
    gets(ciphertext); //输入字符串
    for(i= 0; i < strlen(ciphertext); i++) //遍历读取字符串每个字符
    {
        splitStr[flag] = ciphertext[i]; //将每个字符复制给splitStr数组
        flag++;  
    }
    splitStr[flag]='\0';
    printf("%s",splitStr); //为什么这样输入会出现乱码?
    return 0;
}