c++ 编译器报告“错误:程序中有“\240””

wlzqhblo  于 2023-02-26  发布在  其他
关注(0)|答案(8)|浏览(330)

我需要实现以下功能:

void calc ( double* a, double* b, int r, int c, double (*f) (double) )

参数a、r、c和f是输入,b是输出。"a"和"b"是具有"r"行和"c"列的二维矩阵。"f"是函数指针,可以指向以下类型的任何函数:

double function‐name ( double x ) {
    …
}

函数calc将矩阵a中的每个元素(即aij)转换为矩阵b中的bij = f(aij)。
我实现了calc函数,如下所示,并将其放入一个程序中进行测试:

#include <stdlib.h>
#include <iostream>

using namespace std;

double f1(double x){
    return x * 1.7;
}

void calc (double* a, double* b, int r, int c, double (*f) (double))
{
    double input;
    double output;

    for(int i=0; i<r*c; i++)
    {
        input = a[i];
        output = (*f)(input);
        b[i] = output;
    }
}

int main()
{
    // Input array:
    int r=3;
    int c=4;
    double* a = new double[r*c];
    double* b = new double[r*c];

    // Fill "a" with test data
    //...

    for (int i=0; i<r*c; i++)
    {
        a[i] = i;
    }

    // Transform  a to b
    calc(a, b, r, c, f1);

    // Print to test if the results are OK
    //...

    for (int i=0; i<r*c; i++)
    {
        b[i] = i;
    }

    return 0;
}

问题是,我无法编译它。这是当我点击 * 编译和执行 * 按钮时 * DevC ++* 的输出:

怎么啦?
我感谢任何意见,使执行更有效。

zkure5ic

zkure5ic1#

正如前面的回复中提到的,这通常发生在编译复制粘贴代码的时候。如果你有一个Bash shell,下面的命令通常可以工作:

iconv -f utf-8 -t ascii//translit input.c > output.c
kiayqfof

kiayqfof2#

看起来你的源代码中有非法字符。我不知道\240应该是什么字符,但很明显它在第10行的开头
在您发布的代码中,该问题不存在:* * 一个

eni9jsuy

eni9jsuy3#

/240错误是由于行的每个代码前有非法空格。
例如

printf("Anything");

代替

printf("Anything");

在IDE中复制和粘贴代码时,此错误很常见。

uyhoqukh

uyhoqukh4#

您的程序中包含无效/不可见字符。
当你从另一个网站或文档中复制粘贴代码时,你很可能会发现这些看不见的字符。将代码从网站复制到另一个文本文档中,然后复制粘贴到你的代码编辑器中可能会起作用,但根据你的代码长度,你应该一个字一个字地把它打出来。

2sbarzqh

2sbarzqh5#

我得到了同样的错误,当我刚刚复制了完整的行,但当我重写代码再次,而不是复制粘贴,写它完全然后错误不再存在。
结论:可能有一些不可接受的话,以语言得到复制导致这个错误。

niknxzdl

niknxzdl6#

**解决方案:**删除该行代码(如果是从另一个源文档复制的),然后自己键入。
错误:程序中的“\240”只是字符编码错误消息。

根据我的经验,这只是一个字符编码的问题。例如,如果你从网页上复制一段代码,或者你在IDE中复制和粘贴之前先在文本编辑器中编写它,它可以与源文档或编辑器的字符编码一起提供。

3yhwsihp

3yhwsihp7#

由于整个代码中存在非法空格,我也遇到过同样的问题。
我通过选择其中一个空格并使用find and replace将所有匹配项替换为常规空格来修复它。

kyks70gy

kyks70gy8#

我做了以下工作来解决这个问题:
将损坏的代码粘贴到一个txt文件中。用一些十六进制编辑器打开代码文件。用空字符串替换文档中出现的每个“C2A0”十六进制链。保存它。现在你应该可以复制文本代码,没有任何问题。

相关问题