试图设置和打印指针的值

时间:2014-10-06 22:33:26

标签: c pointers

我有一些代码提示用户读取格式为[name] [someInt]的文件,但不是所有行都有[name]。因此,我将每一行解析为一个字符串数组,如果它的长度为2,那么它有一个名称并执行strcmp来查找匹配项,然后打印出相关的int。但是,我遇到了一些问题

  

错误:二进制*的操作数无效(有'char *'和'char *')

printf("%s\n" *ans);行进行编译时

    char * ans = NULL;

//open and read file line by line, below code is in line by line while loop
             char ** res  = NULL;
             char *  p    = strtok (line, " ");
             int n_spaces = 0, i;
             while (p) {
                 res = realloc (res, sizeof (char*) * ++n_spaces);

                 if (res == NULL) {
                     exit (-1); /* memory allocation failed */
                 }

                res[n_spaces-1] = p;
                p = strtok (NULL, " ");
                printf("%d\n", n_spaces);
                if(n_spaces == 2 && (strcmp(name,res[0]) == 0)) {
                    nameMatch = true;
                    printf("MATCH FOUND!\n");
                    ans = res[1];
                    printf("%s\n" *ans);
                    break;
                }
            }

3 个答案:

答案 0 :(得分:1)

printf("%s\n" *ans);
             ^

您在这些参数之间缺少逗号。编译器将*解释为乘法,而不理解你希望它如何乘以两个字符串。

即使有了这个改变,你(可能?)仍然会收到关于类型的警告。完全删除*;我很确定你想把字符串指针传递给printf,而不是字符串的第一个字符。

答案 1 :(得分:0)

你告诉res是NULL。那么,在malloc之前你使用realloc?你的错误可能就是这个。

答案 2 :(得分:-1)

printf("%s\n", *ans);代替printf("%s\n" *ans);