c - 我需要一个带有 C 语言字符串的输入

标签 c

我需要从 C 语言的文件中读取字符串,这是工作,现在我需要在每个字符串中找到以大写字母开头的单词。有任何意见吗?

示例:1) Windows 是一个很好的操作系统 2) Linux 是开源的

大写字母单词:Windows、OS、Linux、Open、Source。

#include <stdio.h>

int main()
{
  /* dichiarazioni variabili */

  FILE *fp;
  char vet1[100];
  char vet2[100];

  fp = fopen("file.txt", "r"); /* apro il file contenente la stringa */

  if (fp == NULL) {
    printf("\nIl file non esiste!\n");
  }

  while (!feof(fp)) {
    fgets(vet1, 100, fp);
    printf("%s\n", vet1);
  }

  fclose(fp);
}

最佳答案

检测大写字母就像阅读任何 GNU/Linux 发行版中的“ascii”手册一样简单,您可以在其中找到从 A 到 Z 的所有大写字母分别具有从 0x40 到 0x5A 的十六进制数字,并记住这一点:

#include <stdio.h>
#include <stdlib.h>


int main( int argc,char *argv[])
{
  char *buffer,c;
  size_t bufsize = 32; // add all the buffer that you need
  size_t characters;
  FILE *fp;
  if(argc != 2)
    return -1;
  buffer = (char *)malloc(bufsize * sizeof(char));
  fp = fopen(argv[1],"r");
  if( fp == NULL)
     return -2;
  while( !feof(fp) )
  {
    characters = getline(&buffer,&bufsize,fp);
    buffer[characters-1]='\0';
    if ( buffer[0] > 0x40 && buffer[0] < 0x5A )
        printf("buffer = %s",buffer);
  }

  return 0;
}

关于c - 我需要一个带有 C 语言字符串的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401665/

相关文章:

C 冒泡排序整数数组 - 输出问题

c - 确保释放锁的宏

c - 如何在 Mac OS X 上执行 Raw IO? (相当于 Linux O_DIRECT 标志)

c++ - 将多字符串复制到缓冲区

c - 编程语言中的术语 "context"以及加载和更新如何影响上下文?

c++ - 如何在源代码中查找内存泄漏

c - 没有控制语句的逻辑比较运算符

c - 在 C 编程中将当前日期和时间转换为 2 个不同的变量

c - 访问二维数组中的越界单元格

c - 如何检查变量是否包含特定数字?