终端上的奇怪字符

时间:2014-12-06 11:51:24

标签: c

有人可以解释一下,为什么我会在输出中得到这些奇怪的字符?

我收到了这段代码:

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

int main(int argc, char* argv[]){
    if(argc!=2){
        printf("Incorrect number of arguments\n");
        return -1;
    }
    int lenServer=0;
    int i=0;
    while(argv[1][i]!=':'){
        lenServer++;
        i++;
    }

    char server[lenServer];
    memcpy(server,argv[1],lenServer);

    printf("%s\n",server);
    return 1;

}

我在终端上得到了这个:

pedro@pedro-VirtualBox:~/Desktop/SDMEU$ gcc table_client.c -o table-client
pedro@pedro-VirtualBox:~/Desktop/SDMEU$ ./table-client ola:eu
ola N
pedro@pedro-VirtualBox:~/Desktop/SDMEU$ 

我不应该得到ola吗?

1 个答案:

答案 0 :(得分:2)

将NUL('\0')放在字符串的末尾。

char server[lenServer+1];
memcpy(server,argv[1],lenServer);
server[lenServer]=0;