gpt4 book ai didi

c - 在 Solaris 中编译行计数程序时,与 MacOSX 相比多了三行

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:58 27 4
gpt4 key购买 nike

我在MacOSX下用XCode写了如下代码。将代码移至 Solaris 服务器时,会计算出三行额外的行数,但我不明白为什么。

#include <stdio.h>
#define MAXLINE 281 // 281 is a prime number!!
char words[4][MAXLINE]; // words array to hold menu items
char displayfilename[4][MAXLINE]; //filename array to hold filename for display function
char exit_choice[4][MAXLINE]; //for user interaction and end of each function
int i; //standard array variable
int loop = 1; //control variable for my loop
int main()

{
printf("Enter filename: ");
scanf("%s", displayfilename[i]);
FILE *fp;
int clo_c , clo_nc, clo_nlines;
fp = fopen(*displayfilename,"r"); // open for reading */

if ( fp == NULL )
{
printf("Cannot open for reading!\n");

}

clo_c = getc( fp ) ;
while ( clo_c != EOF )
{
if (clo_c == '\n')
clo_nlines++ ;

clo_nc++ ;
clo_c = getc ( fp );
}

fclose( fp );

if ( clo_nc != 0 )
{

printf("There are %d lines in this file.\n", clo_nlines);
}
else
printf("File is empty, exiting!\n");
}

谁能给我解释一下 Solaris 向 clo_nlines 添加了三个?

最佳答案

您没有初始化 clo_nlines - 因此您得到了“未定义的行为”。

在 C 中声明一个变量不会将它的值设置为任何东西 - 它只是为该变量分配一些内存,以及该位中的任何垃圾(好吧,不是位,但你明白了 >.>)内存是变量开始时的样子。

关于c - 在 Solaris 中编译行计数程序时,与 MacOSX 相比多了三行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com