Tag: 字符

C函数strchr – 如何计算字符的位置?

我在C中有strchr函数的示例代码。 /* strchr example */ #include #include int main () { char str[] = “This is a sample string”; char * pch; printf (“Looking for the ‘s’ character in \”%s\”…\n”,str); pch=strchr(str,’s’); while (pch!=NULL) { printf (“found at %d\n”,pch-str+1); pch=strchr(pch+1,’s’); } return 0; } 问题是,我不明白,这个程序如何计算外观字符的位置。 我认为它与“pch”和“str”的指针有关,但这是如何工作的? 如果有人可以更详细地解释这一点,那就太棒了。 谢谢,eljobso

无需按下即可获得单个字符

我试图从用户那里获得单个字符输入而无需用户输入。 我试过这个: #include int main() { int input; for (;;) { input = getchar(); printf(“%d\n”, input); } } 但是,用户不仅需要按Enter键,还会注册两个按键(输入字符和换行符),即: $ ./tests a 97 10 c 99 10 由于我总是希望用户输入一个字符,并希望将此字符设置为char或int ,如何在不等待\n情况下获取字符。 我也试过使用fgets ,但因为我在循环中等待用户输入,所以只是连续执行printf而不会阻塞直到输入。 我的预期输出是: a97 b98 … 注意:我目前正在使用OSX,但我很满意适用于OSX或Linux的解决方案。

为什么printf(“%c”,1)返回笑脸而不是编码char为1

这是我的代码 #include int x,y; int main( void ) { for ( x = 0; x < 10; x++, printf( "\n" ) ) for ( y = 0; y < 10; y++ ) printf( "%c", 1 ); return 0; } 它会回归笑脸。 我到处搜索笑脸的代码或1的代码,但我没有找到任何链接或任何解释为什么1的char值返回笑脸,当1的ascii代码是SOH时。 我研究了这个问题的答案,但我没有找到解释为什么会发生这种情况的答案。

从“char”到“char *”的转换无效

这是将罗马数字(例如VI)转换为小数的程序。 该算法正在编写一个函数,该函数识别输入字符串的每个元素并返回十进制的相应值。 我们得到char Roman_num[20]对于每个元素, sum+=value(Roman_num[i]) 。函数原型是int value (char digit)它导致’ 从char转换为char *的无效转换’错误。 但是,当将每个元素的地址&a[i]传递给函数并将原型更改为int value (char *digit) ,它不会重复此错误,但会导致此switch-case中的另一个错误(在函数内部): switch (*digit)给出‘digit’错误不能出现在constant-expression中 我的问题是我不清楚:在这个例子中,我们是否必须只将地址传递给函数? 如果我们想传递值,单个字符值,那么如何? 最后但并非最不重要的是,*数字实际上是一个单个字符,那么为什么它不能出现在case()中的常量表达式中? 我将非常感谢你的帮助。 另一方面,你可以向我推荐一些书籍,以便深入了解C语言吗? 我现在正在使用C:How To Program book,我几乎不知道变量,函数如何在内部工作以便更深入地理解。 这是代码: int value (char *digit); int main (void) { char a[100]; int length,i,sum=0; printf(“Enter your Roman number: “); fflush(stdin); gets(a); printf(“\nThe Roman number that you have entered is […]

在C中删除字符串中的点

我正在C中制作一个小程序,我会在其中放入几个数字和点,然后删除所有点(。)。 我正在考虑一个循环,但我似乎不太明白我接下来应该做什么。 到目前为止我得到了这个: #include #include #include int main(int argc, char *argv[]) { char s[30]; int k=0; printf(“Enter your account number including dots. \n”); gets(s); printf(“Account number without dots:”); while (s[k]!=0) { //????? } return 0; 我是在正确的轨道上还是应该以不同的方式开始并且根本不使用while循环? 我只能找到一个解决方案,其中有一个特定的字符串不是由用户编写的,而是由程序员编写的……

如果字符的最大容量是256,如何存储1000的字符数组?

如果字符的最大容量是256,如何存储1000的字符数组 ? 是否可以声明:char s [1000];

非ASCII字符声明

我想存储一个字符(以便与其他字符进行比较)。 如果我声明这样的变量: char c = ‘é’; 一切运作良好,但我得到这些警告: warning: multi-character character constant [-Wmultichar] char c = ‘é’; ^ ii.c:12:3: warning: overflow in implicit constant conversion [-Woverflow] char c = ‘é’; 我想我理解为什么会有这些警告,但我想知道为什么它仍然有效? 我应该这样定义: int d = ‘é’; 虽然在内存中占用更多空间? 此外,我还通过以下声明获得以下警告: warning: multi-character character constant [-Wmultichar] int d =’é’; 我错过了什么吗? 谢谢 ;)

如何将整数转换为C中的字符?

例如,如果整数为97,则字符为’a’,或98为’b’。

计算C中的字符

我正在尝试编写一个计算字符串中所有字符的程序。 我原本拥有它,但后来意识到我无法计算空间。 我不明白为什么这不起作用。 for(m=0; z[m] != 0; m++) { if(z[m] != ‘ ‘) { charcount ++; } } 任何协助赞赏。 编辑*如果像这样扫描输入(字符串),它会有所不同吗? 是的,一切都已初始化。 我已经尝试打印z [m]评估的内容并且它不是“m”处字符串的实际值,我认为这是问题所在。 for(j=0; j<7; j++){ printf("Enter a string:\n"); scanf("%s", z); for(m=0; z[m] != 0; m++){ if(z[m] != ' '){ charcount ++; } }

C – 文件中的字符数

所以我想创建一个程序来计算文件中每个字符的出现次数。 例如: 字符0x67(g)的4个实例 11个字符0x68(h)的实例 等等 我不知道如何显示和计算实例。 有什么想法吗? #include const char FILE_NAME[] = “input.txt”; #include int main() { int count = 0; /* number of characters seen */ FILE *in_file; /* input file */ /* character or EOF flag from input */ int ch; in_file = fopen(FILE_NAME, “r”); if (in_file == NULL) { printf(“Cannot open %s\n”, […]