Tag: char

将char指针数组传递给C中的函数?

我有以下代码: int main(){ char **array; char a[5]; int n = 5; array = malloc(n *sizeof *array); /*Some code to assign array values*/ test(a, array); return 0; } int test(char s1, char **s2){ if(strcmp(s1, s2[0]) != 0) return 1; return 0; } 我正在尝试将char和char指针数组传递给函数,但上面的代码会导致以下错误和警告: temp.c:在函数’main’中: temp.c:6:5:警告:隐式声明函数’malloc'[-Wimplicit-function-declaration] temp.c:6:13:警告:内置函数’malloc’的不兼容隐式声明[默认启用] temp.c:10:5:警告:隐式声明函数’test'[-Wimplicit-function-declaration] temp.c:顶级: temp.c:15:5:错误:’test’的冲突类型 temp.c:15:1:注意:具有默认促销的参数类型不能与空参数名称列表声明匹配 temp.c:10:5:注意:先前的’test’隐式声明就在这里 temp.c:在函数’test’中: temp.c:16:5:警告:隐式声明函数’strcmp'[-Wimplicit-function-declaration] 我试图了解问题所在。

用字母数字检查字符是大写还是小写

我有这个C代码。 如果我输入LOL123,它应该显示它是大写的。 而且lol123是小写的。 在检查isupper或更低时,如何使用isalpha排除非数字输入? #include #define SIZE 6 char input[50]; int my_isupper(char string[]); int main(){ char input[] = “LOL123”; int m; m= isupper(input); if( m==1){ printf(“%s is all uppercase.\n”, input); }else printf(“%s is not all uppercase.\n”, input); return 0; } int my_isupper(char string[]){ int a,d; for (a=0; a<SIZE); a++){ d= isupper(string[a]) ; } if(d != […]

如何在c中找到两个字符串之间的文本

我需要在c中提取2个字符串模式之间的文本。 例: aaaaaaTEXT TO EXTRACTaaaaaaaaa PATTERN1= PATTERN2= 谢谢。

strlen是否为二进制和ascii数据返回相同的值

请找到以下代码段。 unsigned char bInput[20]; unsigned char cInput[20]; 从函数中,我在bInput获得二进制数据,并使用strlen(bInput)确定其长度。 我将bInput转换为二进制转换为ASCII并存储在cInput并打印其长度。 但两者都不同。 我是编程新手。 请指导其行为。

无符号字符c = 255是“11111111”还是不是?

这是我的问题代码: #include “stdio.h” int main() { char a = -1; unsigned char b = 255; unsigned char c = 0; if((~a) == c) printf(“OK 1”); else printf(“bad 1”); printf(“\n”); if((~b) == c) printf(“OK 2”); else printf(“bad 2”); printf(“\n”); } 我希望这打印: OK 1 OK 2 但是,我得到OK 1和坏2! 如果unsigned char b是255(11111111),那么~b应该是00000000.为什么它不等于c? 我使用gcc在Linux SUSE上工作。

将std :: string转换为char * for C函数时需要注意什么?

我已经阅读了许多post,询问有关如何将C ++ std::string或const std::string&转换为char*以将其传递给C函数的问题,而且似乎有很多关于这样做的警告。 人们必须要注意字符串是连续的和许多其他的东西。 关键是我从来没有真正理解需要注意的所有要点以及为什么 ? 我想知道是否有人可以总结关于从std::string转换为传递给C函数所需的char*的警告和挫折? 这当std::string是一个const引用时,它只是一个非const引用,当C函数改变char*时它不会改变它。

使用%u读取签名的字符

#include int main() { int i,n; int a = 123456789; void *v = &a; unsigned char *c = (unsigned char*)v; for(i=0;i< sizeof a;i++) { printf("%u ",*(c+i)); } char *cc = (char*)v; printf("\n %d", *(cc+1)); char *ccc = (char*)v; printf("\n %u \n", *(ccc+1)); } 该程序在我的32位Ubuntu机器上生成以下输出。 21 205 91 7 -51 4294967245 前两行输出我能理解=> 第1行 :在内存中存储字节的顺序。 第二行 :第二个字节值的有符号值(2的补码)。 […]

将char指针赋给char和char数组变量

为什么以下确定? char *a; char b[]=”asdf”; a=b; 但以下不是? char a[10]; char b[]=”asdf”; a=b; 上面给出了错误:赋值中不兼容的类型。

scanf / getchar只在第一次循环时正常工作?

我试图让用户输入一个他们想要的次数(并为每个数字创建一个链表节点)。 但是,我尝试了多种清除字符输入缓冲区的方法,但无济于事。 奇怪的是,代码将执行一次但不能正确执行第二次。 例如,使用下面的代码,终端读取: would you like to enter an integer? y Enter an integer: 4 would you like to enter an integer? y **program terminates** 在我使用scanf(“%c”, yesno); 我甚至不能在最后一行输入’y’。 它刚刚终止。 struct node *read_numbers(void){ struct node *first = NULL; int n; char yesno; yesno = ‘y’; while( yesno == ‘y’){ printf(“Would you like enter an integer […]

字符串常量与C中的char数组

可能重复: C中的char s []和char * s有什么区别? 更多的是一般性问题,而不是试图解决问题,我一直在阅读C编程语言书,他们注意区分 char amessage[] = “blah”; char *pmessage = “blah”; 一个是char数组,另一个是指向字符串常量的指针。 他们说修改char数组是可以接受的,但你不应该修改字符串常量,因为它会触发未定义的行为。 我的问题是:不是以与char数组相同的方式存储在内存中的字符串常量吗? 为什么我可以修改它 char *p = “this is a string constant”; *(p+2) = ‘a’; printf(“%s”, p); 如您所料,结束打印“thas是一个字符串常量”。 我可以理解它是如何有意义的,因为字符串常量不应该最终在运行时被更改,因为它可能会混淆其他人/你自己处理你的代码并不期望它的价值改变,但纯粹function性的术语是什么错误的什么是可能触发的未定义行为,以及当char数组不能时它会如何机械地适得其反? 我只是想知道我是否遗漏了一些关于字符串常量如何在内存中工作以及编译器如何看到它们的内容。