我需要打印给定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] << " ";
}
答案 0 :(得分:0)
您的代码似乎没问题,如果您在Linux上运行,您必须检查文件/ lib / modules / $(uname -r)/ build是否指向头文件的有效位置(通常在/ usr /中)的src / Linux的头-XXXX)。
安装新内核和标题后很多次,这个链接被破坏,然后你的程序无法链接到库,因此它不会编译。
希望它有所帮助。
顺便说一下,你不能使用[k]作为strcpy,因为这是取消引用一个char,而输入必须是char *。您应该使用指针符号,即(a + k)在这种情况下可以使用。