警告:传递' const char *'参数类型' char *'丢弃限定符

时间:2017-04-11 13:17:02

标签: c gcc-warning

int main(int argc, char const *argv[])
{
    char original[5] = ".txt";
    int c;
    strcat(argv[1], original);
    FILE *find;
    find = fopen( argv[1], "r");
    if (find) {
        while ((c = getc(find)) != EOF)
            putchar(c);
        fclose(find);
    }

    return(0);
}

我该怎么办? 现在,我用c编程创建一个项目。

1 个答案:

答案 0 :(得分:0)

strcat(argv[1], original);

argv[1]的类型为const char*strcat的第一个参数为char*

argv中的字符串不应被修改。

你基本上需要这个(还有改进的余地):

char txtextension[5] = ".txt";
char filename[200];  // 200 will be hopefully enough 
strcpy(filename, argv[1]);
strcat(filename, txtextension);
FILE *find;
find = fopen(filename, "r");

<强>图片的标题说明

  1. char original[5] = ".txt";替换为char original[] = ".txt";。在后一种情况下,编译器会自动分配正确的内存大小。
  2. 根据代码的含义命名变量,因此original应以txtextension命名。