Tag: char

在C中传递char指针

好的,所以我试图将char指针传递给另一个函数。 我可以使用char数组来完成此操作,但不能使用char指针。 问题是我不知道它的大小所以我不能声明main()函数中的大小。 #include void ptrch ( char * point) { point = “asd”; } int main() { char * point; ptrch(point); printf(“%s\n”, point); return 0; } 但这不起作用,这两个作品: 1) #include int main() { char * point; point = “asd”; printf(“%s\n”, point); return 0; } 2) #include #include void ptrch ( char * point) { strcpy(point, […]

C-为什么char c = 129将转换为-127?

如果我们将+128分配给char变量,那么由于二进制等价( 10000000-first bit tells sign ),它被转换为-128 。 二进制当量为129是10000001 ,它将被转换为什么值? char c = 129; 谢谢,S

获取子字符串的索引

我有char * source ,我想要从它中提取subsrting,我知道它是从符号“abc”开始,并在源结束时结束。 使用strstr我可以得到poiner,但不是位置,没有位置我不知道子串的长度。 如何获得纯C中子字符串的索引?

为什么char的符号没有在C中定义?

C标准规定: ISO / IEC 9899:1999,6.2.5.15(第49页) char,signed char和unsigned char这三种类型统称为字符类型。 实现应将char定义为具有与signed char或unsigned char相同的范围,表示和行为。 确实gcc根据目标平台定义。 我的问题是,为什么标准会这样做? 除了可怕的和难以发现的错误之外,我看不到任何可能来自模糊类型定义的内容。 不仅如此,在ANSI C(C99之前)中,唯一的字节大小类型是char,因此使用char进行数学运算有时是不可避免的。 所以说“一个人永远不应该使用char来表示数学”并非如此。 如果是这种情况,更明智的决定是包括三种类型“ char , ubyte , sbyte ”。 有没有理由,或者它只是一些奇怪的向后兼容性问题,以便将坏(但常见)编译器定义为标准兼容?

转义printf()中的所有特殊字符

是否有一种简单的方法来转义printf()函数中的所有特殊字符? 我想知道如何做到这一点的原因是因为我打印了一些字符,其中可能包含特殊字符,如空字符( \0 )和哔声字符,我只想查看字符串的内容。 目前我正在使用以下代码 它适用于空字符。 逃脱所有特殊角色的最简单方法是什么? int length; char* data = GetData( length ); // Fills the length as reference for( int i = 0; i < length; i++ ) { char c = data[ i ]; printf( "%c", ( c == 0 ? '\\0' : data[ i ] ) ); }

char * array和char array

如果我写这个 char *array = “One good thing about music”; 我实际创建一个数组? 我的意思是这样的一样吗? char array[] = {“One”, “good”, “thing”, “about”, “music”};

使用scanf()从键盘读取时从上一个输入读取换行符

这应该是非常简单的,但是我无法从键盘读取连续的输入。 这是代码: #include #include int main() { char string[200]; char character; printf (“write something: “); scanf (“%s”, string); printf (“%s”, string); printf (“\nwrite a character: “); scanf (“%c”, &character); printf (“\nCharacter %c Correspondent number: %d\n”, character, character); return 0; } 怎么了 当我输入一个字符串(例如:计算机)时,程序会读取换行符( ‘\n’ )并将其置于character 。 以下是显示的外观: write something: computer computer Character: Correspondent number: 10 此外,该程序不适用于包含多个单词的字符串。 […]

C:函数在代码中跳过用户输入

我遇到了这个function(战舰游戏的一部分)的问题,它将完美地运行它,但在后续的执行中,它会跳过: scanf(“%c”,&rChar); 出于某种原因,rChar在没有上述代码的用户输入的情况下变成另一个值。 我试过在整个函数中输入显示rChar值的printf语句。 函数Conv_rChar_Int()将用户输入的Char转换为整数值。 但是因为rChar没有作为指针传递,所以rChar的值rChar保持不变,直到用户在下一次迭代中替换它。 (再次使用printfvalidation)。 奇怪的是,它在这些代码行之间发生了变化。 并且从不提示用户输入rChar 。 printf(“please enter the row you want to place your %d ship in\n”,length); scanf(“%c”,&rChar); 请记住,它只发生在第一次之后。 即使我在每次迭代后重新初始化变量rChar , r , c和dir ,这个问题仍然会发生。 我99%肯定问题是在这个函数内而不是在它内部调用的任何函数中(因为rChar在每一行之后保持不变,除了上面的两行之外)。 提前感谢您的帮助。 如果您对代码有任何疑问,我会尝试解释一下。 int Gen_Ship_Place(int length, int flag3, int PlayGrid[10][10]){ int ShipPlaceFlag = 0; //coordinates and direction int r; char rChar; int c; int dir; […]

实现良好的“itoa()”function的正确方法是什么?

我想知道我执行“itoa”function是否正确。 也许你可以帮我把它变得更“正确”,我很确定我错过了什么。 (也许已经有一个库按我想要的方式进行转换,但是……找不到任何东西) #include #include #include #include char * itoa(int i) { char * res = malloc(8*sizeof(int)); sprintf(res, “%d”, i); return res; } int main(int argc, char *argv[]) { …

在C / C ++(ms)中将char 转换为/从tchar 的最简单方法是什么?

这似乎是一个非常柔软的问题,但我总是很难查找这个函数,因为似乎有很多关于char和tchar的引用的变化。