C - 运行我编译的 .exe 文件时出错

标签 c

我使用geany编译我的代码,没有发现错误。 但是当我运行 .exe 文件时,程序停止工作,而且我不是一个好的程序员,这是学校的工作。

我的程序包括读取 2 个单词,在这个单词中,它将计算每个单词有多少个字母,然后将单词 A 中的字母数除以单词 B 中的字母数。

这是我的代码

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i, j;
    float n;

    printf ("Insert first word:\n");

    for(i=0; argv[1][i] != '\0'; i++);

    printf ("Insert second word:\n");

    for(j=0; argv[2][j] != '\0'; j++);

    n=i/j;

    printf("%.4f", n);

    return 0;
}

最佳答案

在这一行

n = i/j;

您正在执行整数除法。例如,假设 i 为 3,j 为 5,那么您执行 3/5 ,它等于 0

但我认为您正在寻求执行 3.0/5.0 并希望得到答案 0.6。所以需要进行浮点除法。您可以通过将其中一个操作数强制转换为 float 来强制执行此操作。

n = (float)i/j;
<小时/>

在问题中,您写的是 Int 而不是 int。我认为这是提问时的转录错误。但也许你真正的代码看起来像这样。在这种情况下,您需要将其更改为 int 才能编译。

您遇到的另一个可能的问题是程序期望在命令行上传递参数。您是否向程序传递了两个参数?换句话说,您需要像这样执行您的程序:

program.exe firstword secondword

如果您没有传递参数,那么在尝试访问 argv[] 中不存在的参数时,您将遇到运行时错误。至少您应该向程序添加一个检查以确保argc==3

如果您想从 stdin 读取输入,而不是传递命令行参数,请使用 scanf

关于C - 运行我编译的 .exe 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16374675/

相关文章:

c - c 中的移位运算符替换

c - extern 和 static 的正确用法是什么?

c - 在c中的通用链表上使用选择排序

c - 查找素数的程序意外崩溃

c - 捕获WM_CHAR消息时如何检测UNICODE字符?

c++ - 在一系列 char* 缓冲区中寻找序列号?

c - 对库包含的函数的 undefined reference

c - 如何为ARMCC声明全局浮点寄存器

c++ - 使用 malloc() 为 const char 字符串动态分配内存

使用带有 Arduino 的瑞士流量计计算脉冲,它是如何完成的?