C标准库函数' strncpy'不工作

时间:2017-03-13 15:05:13

标签: c c-strings standard-library

C代码:

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

#define STRINGS 10
#define STR_LEN 20

int main(void)
{
    char words[STRINGS][STR_LEN];

    char input[STR_LEN];

    int i;
    int mycount;

    for(i = 0;i < STRINGS;++i;)
    {
        printf("Enter a word (or 0 to quit)\n:");

        scanf("%19s", input);

        if(input[0] == '0') break;

        strncpy(words[i], input, STR_LEN);

        mycount++;
    }

    printf("A total of %d strings were entered!\n",mycount);

}

问题:当我运行此代码并输入一些字符串时,它不会打印出我输入的字符串数量

enter image description here

2 个答案:

答案 0 :(得分:10)

你需要将mycount初始化为0。

int mycount =0;

答案 1 :(得分:3)

变量mycount未初始化。然后,您尝试通过for运算符在++循环中修改它。所以你正在读垃圾值并写垃圾值。这解释了你得到的输出。

读取未初始化的变量会调用undefined behavior。在这种情况下,它表现为垃圾值,但它可以很容易地输出预期值或导致崩溃。

在声明声明时初始化此变量。

int mycount = 0;