【发布时间】:2014-07-09 00:13:28
【问题描述】:
我有一个 char* 类型的标记,我想获取它的第二个元素。例如,令牌都包含 4 个长课程编号,例如 1405,我想抓住第二个字符或 4,并将其变成整数。我使用 strcpy 将字符串添加到 char 字符串数组中以获取 4,但我遇到了一些错误,我不太确定如何修复它们。这是我的代码
#include <stdio.h>
#include <string.h>
int search(struct id array[],char* tok);
int main(void)
{
char* token2 = "1405";
char* text[] = malloc(strlen(token2)+1);
strcpy(text,token2);
int i,number;
for(i=0;i<4;i++)
if(i==1)
{
number = atoi(token2[i]); }
printf("%d\n",number);
我得到以下编译错误
gcc structures_arrayof.c
structures_arrayof.c: In function ‘main’:
structures_arrayof.c:23:20: warning: incompatible implicit declaration of built-in function ‘malloc’ [enabled by default]
char* text[] = malloc(strlen(token2)+1);
^
structures_arrayof.c:23:5: error: invalid initializer
char* text[] = malloc(strlen(token2)+1);
^
structures_arrayof.c:24:5: warning: passing argument 1 of ‘strcpy’ from incompatible pointer type [enabled by default]
strcpy(text,token2);
^
In file included from structures_arrayof.c:5:0:
/usr/include/string.h:129:14: note: expected ‘char * __restrict__’ but argument is of type ‘char **’
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
【问题讨论】:
-
text 只是一个 char*,而不是一个 char * 数组。还包括用于 malloc 的 stdlib.h。
-
malloc()位于<stdlib.h>中,您未将其包括在内。无论如何,你的程序是不完整的。哎呀,即使你的main()也不是。 -
@MichaelDorgan char *text[] 是非法的吗?肯定错了,不违法。
-
和
char* text[] =应该是char *text = -
atoi需要一个字符串作为输入,而不是char。对于char,x-'0'无论如何都足够了。