c - 一起使用 char 和 int

标签 c text char int

我正在尝试使用 char 来识别文本的结果。

例如,我有一个 file.txt,其中包含以下字母:iiixxiix

我想用数字替换 i:123xx67x 等。

我应该做什么才能得到这样的结果?我似乎无法使用 int 来替换 char ( srt[i] = c; ) 并且我不知道如何解决这个问题。

#include <stdio.h>

int main()
{
   FILE *fp;
   char str[60];
   int i;
   int c = 1;

   /* opening file for reading */
   fp = fopen("file.txt" , "r");
   if(fp == NULL)
   {
      perror("Error opening file");
      return(-1);
   }
   if( fgets (str, 22, fp)!=NULL )
   {
     for (i = 0; i < 22; i++)
     {
         if (str[i] == 'i')
         {
             str[i] = '0';
         }
        printf("%c", str[i]);
     }
   }
   fclose(fp);

   return(0);
}

最佳答案

C 规范要求所有数字字符都连续编码。如果你看看常见且最常用的 ASCII encoding您将看到数字从 48 编码到 57

这意味着使用整数索引i(模10)并添加'0'来获取字符非常容易。

简单的例子:

for (int i = 0; i < 22; ++i)
{
    printf("Index %d to character '%c'\n", i, (char) (i % 10 + '0'));
}

关于c - 一起使用 char 和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345744/

相关文章:

c - 在 C 中对 char* 中的数字求和

c - 用用户输入填充 *char[]

java - 读取.txt文件并制作数组(java)

c - strtok(我想)错误我无法理解

C 结构体指针算术

c - 将 char 附加到 C 字符串

c - 如何用 c 写入文本文件(具有预期功能)

c - C 中用户定义的数组大小

c# - 扩展 System.Windows.Forms.Button 并更改 c# 中的默认文本

html - 您如何设置 HTML middot 的样式?