gpt4 book ai didi

c - 只读取文件中每一行的第一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:57 25 4
gpt4 key购买 nike

我目前正在尝试读取和处理“.c”文件每一行中的第一个字符。到目前为止,我已经找到了这段代码,但 n 甚至没有在循环中打印出来:

void FileProcess(char* FilePath)
{
char mystring [100];
FILE* pFile;
int upper = 0;
int lower = 0;
char c;
int n =0;
pFile = fopen (FilePath , "r");
do {
c = fgetc (pFile);
if (isupper(c)) n++;

} while (c != EOF);

printf("6");
printf(n);
fclose (pFile);
}

最佳答案

几点:

  1. 您没有正确打印 n。您将它作为“格式化字符串”提供给 printf。令人惊讶的是你能逃脱惩罚——这通常会造成严重破坏。
  2. 您一次阅读一个字符。如果只想打印每行的第一个字符,最好一次读一行,然后打印第一个字符。使用 fgets 将整行读入缓冲区(确保缓冲区足够大)。

示例(使用来自@chux 的输入更新 - 并使用一些额外的代码进行检测以帮助调试“n=1”问题):

void FileProcess(char* FilePath)
{
char mystring [1000];
FILE* pFile;
int upper = 0;
int lower = 0;
char c;
int n =0;
pFile = fopen (FilePath , "r");
printf("First non-space characters encountered:\n")
while(fgets( myString, 1000, pFile) != NULL)
int jj = -1;
while(++jj < strlen(myString)) {
if ((c = myString[jj]) != ' ') break;
}
printf("%c", c);
if (isupper(c)) {
printf("*U*\n"); // print *U* to show character recognized as uppercase
n++;
}
else {
printf("*L*\n"); // print *L* to show character was recognized as not uppercase
}
}

printf("\n");
printf("n is %d\n", n);
fclose (pFile);
}

注意 还有其他更强大的读取行的方法以确保您拥有一切(我最喜欢的是 getline() 但它并非对所有编译器都可用)。如果您确定您的代码行不是很长,这将起作用(尽管可能使缓冲区大于 100 个字符)

关于c - 只读取文件中每一行的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523774/

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