Strcpy和strtok不起作用

时间:2014-12-10 14:33:27

标签: c++

我需要打印给定char的组件(在这种情况下是分开的pewhites),我不明白为什么这不起作用(不编译):(或{{3 }})。

错误是:

error C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.  c:\users\ellly\documents\visual studio 2013\projects\consoleapplication15446\consoleapplication15446\source.cpp 18  1   ConsoleApplication15446
error C2664: 'char *strcpy(char *,const char *)' : cannot convert argument 1 from 'char' to 'char *'    c:\users\ellly\documents\visual studio 2013\projects\consoleapplication15446\consoleapplication15446\source.cpp 21  1   ConsoleApplication15446

代码:

#include <iostream>
#include <cstring>
using namespace std;
char s[20000], *p, a[5000], separator[] = " ";
int k = 0, i;
void separare();
void afisare();
int main()
{
    cout << "Sirul de nr:"; cin.get(s, 100, '\n');
    separare();
    afisare();
    system("pause");
    return 0;
}
void separare()
{
    p = strtok(s, separator);
    while (p)
    {
        strcpy(a[k], p);
        k++;
        p = strtok(NULL, separator);
    }
}
void afisare()
{
    int i;
    for (i = 0; i < k; i++)
        cout << a[i] << " ";
}

1 个答案:

答案 0 :(得分:0)

您的代码似乎没问题,如果您在Linux上运行,您必须检查文件/ lib / modules / $(uname -r)/ build是否指向头文件的有效位置(通常在/ usr /中)的src / Linux的头-XXXX)。
安装新内核和标题后很多次,这个链接被破坏,然后你的程序无法链接到库,因此它不会编译。
希望它有所帮助。

顺便说一下,你不能使用[k]作为strcpy,因为这是取消引用一个char,而输入必须是char *。您应该使用指针符号,即(a + k)在这种情况下可以使用。