Tag: char

表达式必须是可修改的L值

我这里有char text[60]; 然后我做了一个if : if(number == 2) text = “awesome”; else text = “you fail”; 并且它总是说表达式必须是可修改的L值。

C:scanf for char无法正常工作

我最近在我的电脑上运行了ac程序。 它有一个for循环,其中扫描一些char。 for循环运行3次。 在每次运行期间,它打印运行计数,然后扫描char d的值。 该计划如下 #include int main(){ int f; char d; for(f=0;f<3;f++){ printf("Choice %d\n", f); scanf("%c", &d); } return 0; } 现在麻烦的是,当我运行程序时,当f为1时,for跳过scanf部分。现在,如果我更改了代码如下 #include int main(){ int f; int d; for(f=0;f<3;f++){ printf("Choice %d\n", f); scanf("%d", &d); } return 0; } 现在程序运行正常。 并且forf循环的每次迭代都执行scanf。 这里似乎有什么问题? 我的意思是当d是int类型时它工作正常,但是当d是char类型时它不能正常工作。

将字符串文字与char文字连接起来

我想连接一个字符串文字和char文字。 在语法上不正确, “abc” ‘d’ “efg”呈现编译器错误: xc:4:24:错误:预期’,’或’;’ 在’d’之前 到现在为止,我必须使用snprift(不必要),尽管字符串文字的值和编译时知道的char文字。 我试过了 #define CONCAT(S,C) ({ \ static const char *_r = { (S), (C) }; \ _r; \ }) 但它不起作用,因为S的空终止符未被剥离。 (除了给出编译器警告。) 有没有办法编写一个宏来使用 “abc” MACRO(‘d’) “efg”或 MACRO1(MACRO2(“abc”, ‘d’), “efg”)或 MACRO(“abc”, ‘d’, “efg”) ? 如果有人问我为什么要这样:char文字来自一个库,我需要将字符串作为状态消息打印出来。

char数组不可赋值

好的,所以我想在char数组中保存一个单词,但它给了我一个错误 这是我的代码 #include #include #include #include int main(void) { char yesno[30] = “n”; //yes/no answer char class[30] = “undefined”;//choosen class int classchoosen = 0; /* initialize random seed: */ srand ( time(NULL) ); printf(“Welcome, which class do you wanna play with? \n”); printf(“Type W for Warrior, M for Mage or R for Ranger. Then press […]

在char中分配多个字符

为什么这个程序输出’y’ #include int main(void) { char ch=’abcdefghijklmnopqrstuvwxy’; printf(“%c”,ch); return 0; } 代码在ideone

如何在C中将struct转换为char数组

我正在尝试将结构转换为char数组以通过网络发送。 但是,当我这样做时,我从char数组得到了一些奇怪的输出。 #include struct x { int x; } __attribute__((packed)); int main() { struct xa; ax=127; char *b = (char *)&a; int i; for (i=0; i<4; i++) printf("%02x ", b[i]); printf("\n"); for (i=0; i<4; i++) printf("%d ", b[i]); printf("\n"); return 0; } 这是各种ax值的输出(在使用gcc的X86上): 127: 7f 00 00 00 127 0 0 0 128: ffffff80 00 […]

malloc的最佳实践是什么?

如果以下任何一项是正确的,并且被认为是创建一个能够容纳100个字符的字符串的最佳做法? char * charStringA = malloc(100); char * charStringB = malloc(sizeof(char)*100); char * charStringC = (char*)malloc(100); char * charStringD = (char*)malloc(sizeof(char)*100);

strcat将char连接到字符串上?

使用GDB,我发现在尝试此操作时出现了分段错误: strcat(string,&currentChar); 鉴于该字符串被初始化为 char * string = “”; 和currentChar是 char currentChar = ‘B’; 为什么会导致分段错误? 如果strcat不能用于此,我怎么能将char连接到一个字符串?

在C中,为什么不能将整数值赋给int *,就像将字符串值赋给char *一样?

我一直在浏览网站,但尚未找到答案。 用一个例子来解释这个问题是最容易的(至少对我来说)。 我不明白为什么这是有效的: #include int main(int argc, char* argv[]) { char *mystr = “hello”; } 但是这会产生一个编译器警告(“初始化使整数从没有强制转换的整数中生成”): #include int main(int argc, char* argv[]) { int *myint = 5; } 我对第一个程序的理解是创建一个名为mystr的变量,类型为pointer-to-char,其值是字符串文字“hello”的第一个字符(’h’)的地址。 换句话说,使用此初始化,您不仅可以获取指针,还可以定义指针指向的对象(在本例中为“hello”)。 那么,为什么int *myint = 5; 看似没有实现与此类似的东西,即创建一个名为myint的变量类型指针指向int,其值是值’5’的地址? 为什么这个初始化既不给我指针也定义指针所指向的对象?

如何获取字符串的第n个字符?

我有一个字符串, char* str = “HELLO” 如果我想从中获得E ,我该怎么做?