Tag: char

struct中的int字段没有初始化的值是多少?

在代码中:… #define MAXELEMNTS 100 struct book { int number; char name[31]; char author[31]; int year; char publisher[31]; }; struct book bkStruct[MAXELEMENTS]; … 在初始化其他char字段时,默认情况下整数字段(数字和年份)是否初始化为0但不是这两个? 或者他们有神知道什么价值? 根据我的经验,他们确实有值= 0,但我不确定这是一般规则所以我必须确定! 最好的问候,Papo

如何将char数组case 和连接到C中的char指针?

我想连接两个字符’7’和’9’来形成这个字符串“79”。 首先,我初始化了变量。 (限制:我只能使用字符类型,我不能再使用另一个字符变量。) char *charac = (char *) malloc(sizeof(char) * 200); char *combined = (char *) malloc(sizeof(char) * 200); 然后我给出了charac [0]和charac [1]的值。 charac[0] = ‘7’; charac[1] = ‘9’; printf(“charac[0] : %c\n”, charac[0] ); printf(“charac[1] : %c\n”, charac[1] ); 我想连接charac [0]和charac [1] strcpy(combined, (char*)charac[0]); strcat(combined, (char*)charac[1]); printf(“combined : %s\n”, combined); free(combined); 但上面的代码不起作用。 我收到错误消息:“警告:从不同大小的整数转换为指针”。 阅读完所有意见和建议后,我获得了我想要的输出结果。 这是最终的代码: char […]

C \ C ++:初始化ASCII特殊字符?

如何初始化特殊的ASCII字符,例如EOT(0x04),ENQ(0x05)? char CHAR1 = ‘\EOT’; char CHAR2 = ‘\ENQ’; 它是否正确?

在c / c ++中,是否可以在double(8-bytes)类型的变量中存储8个字符(每个1字节)?

我正在将一些传统的Fortran77代码迁移到C / C ++。 在Fortran77代码中,如果从文件中读入8个字符,则可以将它们存储在real * 8类型的变量中而不会出现问题。 是否有可能在C或C ++中做类似的事情? 如果是这样,我该怎么做? 我无法在互联网上找到任何解决方案。 我需要使用C / C ++读取8个字符并将它们存储在double类型的变量中,然后传递回Fortran并对应于原始的真实* 8变量。 非常感谢您的帮助。 编辑:为了回应@sixlettervariables,我将稍微澄清一下我的用例。 我对他的建议的问题是我在运行时只知道每一行的格式(即哪些字段是字符串,哪些数字),因此我无法知道结构应该静态的成员。 这些字段还需要按读入顺序占用连续的内存块。 具体地说,在程序的一次运行中,每行的格式可能是: f1:string,f2:number,f3:number,f4:string ,但在另一个f1:string中,f2:string,f3:string,f4:number ,f5:数字 。 对于我需要的第一种情况: struct { char[8] f1; double f2; double f3; char[8] f4} 对于第二个我需要: struct { char[8] f1; char[8] f2; char[8] f3; double f4; double f5} 也许有一些方法可以用模板做到这一点?

字符数组的初始化字符串太长C

我正在研究一个接受输入并输出与输入相对应的数值的程序。 我在char部分得到了错误。 我不明白为什么当数组中只有27个字符的大小为27时会出现错误? int main () { char greek[27] = “ABGDE#ZYHIKLMNXOPQRSTUFC$W3”; }

将格式化文件读入C中的char数组

我有一个非常简单的问题。 我需要将文件的内容读入C中的char数组。文件将始终格式化为两列字母,例如: AB BC EX CD 每个字母代表图形上的一个顶点,我将在稍后处理。 我已经学会了使用C ++和Java编程,但我并不特别熟悉C语言。 引起我无法弄清楚的问题的是文件多行多长的事实。 我需要每个字母占据数组中的一个插槽,所以在这种情况下它是: array[0] = ‘A’, array[1] = ‘B’, array[2] = ‘B’, array[3] = ‘C’等等。 最终我需要数组不包含重复项,但我可以稍后处理。 我在本学期早些时候编写了一个程序,它从一个文件中读取一行内容并且工作正常,因此我复制了大部分代码,但在这种情况下它不起作用。 这是我到目前为止所拥有的: #include #include int main (int argc, char *argv[]) { int i; int count = 0; char * vertexArray; char ch = ‘\0’; // open file FILE *file = fopen( […]

ASCII表 – 负值

可能重复: 负ASCII值 int main() { char b = 8-‘3’; printf(“%c\n”,b); return 0; } 我运行这个程序,我得到一个看起来像问号(?)的标志。 我的问题是,为什么它打印出来而不打印任何内容,因为据我所知,ASCII表中的b值为-43,这是不存在的。 顺便说一下,当我编译这段代码时: int main() { char b = -16; printf(“%c\n”,b); return 0; } 我一无所获。

检查字符串中是否存在所有char值

我正在做这个任务,我被困住了。 目标是读取文件并查找文件中String中是否存在这些char值。 我必须将文件中的String与作为参数放入的另一个String进行比较。 但是,只要每个char值都在文件的String中,那么它就“匹配”。 示例(输入和输出): ./a.out file1完成 完成是在笨蛋 完成不是在小狗 示例(file1): 梼 狗 正如您所看到的那样,比较字符串无关紧要,文件每行也跟着一个单词。 我把一个程序放在一起,查找char值是否存在于另一个String中,但这只是问题的一部分。 知道如何去做吗? #define _GNU_SOURCE #include #include #include int main(int argc, char **argv){ FILE *f = fopen(argv[1], “r”); char *line = NULL; size_t len = 0; ssize_t read; char *word = argv[2]; if(argc != 3){ printf(“./a.out \n”); exit(EXIT_SUCCESS); } if(f == NULL){ printf(“file […]

用scanf()读取字符

此代码适用于掷骰子游戏 。 #include #include #include #include int roll_dice(void); bool play_game(void); int main() { int i, ch,win = 0,lose = 0; bool flag; srand((unsigned)time(NULL)); do { flag = play_game(); if(flag) { printf(“You win!”); win++; } else { printf(“You lose!”); lose++; } printf(“\n\nPlay again(Y/N)? “); scanf(“%c”, &ch); ch = getchar(); printf(“\n”); }while(ch == ‘Y’ || ch == […]

为什么“char *”可以指向“const char *”?

可以在VC或gcc上正确编译以下代码: char *str = “I am a const!”; str[2] = ‘n’; 但是,显然存在运行时错误。 因为“我是一个常客!” 是一个const char *,为什么编译器不会给出错误甚至是警告? 此外,如果我定义char a[] = “I am const!” ,a中的所有元素都可以修改,为什么这次字符串文字变得不nonconst ?