Tag: string

你如何在C中将字母字符转换为n字符串为大写?

这就是我到目前为止所拥有的。 我只是想了解如何实现这个function。 char toupper(char s[]) { s[50] = “hello”; int i = 0; int len; len = strlen(s); while(i < len) //converting to upper until the length is reached. { s[i] = putchar(toupper(s[i])); i++; } return s[i]; }

如何SubString,限制使用C?

第1号 #include #include #include #include int main(int argc, char **argv) { static const unsigned char text[] = “000ßh123456789”; int32_t current=1; int32_t text_len = strlen(text)-1; ///////////////////////////////// printf(“Result : %s\n”,text); ///////////////////////////////// printf(“Lenght : %d\n”,text_len); ///////////////////////////////// printf(“Index0 : %c\n”,text[0]); printf(“Index1 : %c\n”,text[1]); printf(“Index2 : %c\n”,text[2]); printf(“Index3 : %c\n”,text[3]);//==> why show this ` `? printf(“Index4 : %c\n”,text[4]);//==> why show […]

printf(“%d”,“”)如何在C中工作?

我正在修改一些C概念并试过这个: printf(“%d %d %d”, “%da”, ‘a’, ‘A’); //16079992 97 65 我可以理解,对于a和A ,它打印ASCII值: 97和65 。 但是我不明白为什么它打印”%da” 16079992 。 事实上,我不理解C在将它们输出为%d整数时如何解释字符串。 这背后必须有一些算法/逻辑。 任何人?

字符串,获取和做

我正在用C做练习,但是我有一个问题,当我想重复cicle(做的时候),事实上,如果我输入1,程序再次由顶部开始,但它不会停止在gets(testo); 。 在没有解决方案的情况下,我尝试了很多方法来解决错误,有人可以帮助我吗? #include #include #include main(){ int cch, cw, i, j, w, ord, f; //counter and index char testo[80]; char alfa[50][25]; char swap[25]; do{ cch=0; cw=0; j=0; w=0; f=0; for(i=0;i<80;i++){ testo[i]='\0'; } printf("Write the text:\n"); gets(testo); //initialization 2d array for(i=0;i<50;i++){ for(j=0;j<25;j++){ alfa[i][j]='\0'; } } j=0; //Count word and characters if(testo[0]!='\0'){ cw=1; for(i=0;testo[i]!='\0';i++){ cch++; if(testo[i]==' […]

使用“D”代替“E”读取ASCII数字用于科学记数法

我有一个数字列表,如下所示: 1.234D+1或1.234D-02 。 我想用C读取文件。函数atof只会忽略D并只翻译尾数。 函数fscanf将不接受格式’%10.6e’因为它期望指数中的E而不是D 当我在Python中遇到这个问题时,我放弃了,只是在从string转换为float之前使用了字符串替换。 但在C中,我确信必须有另一种方式 。 那么,对于科学记数法,您如何使用D而不是E来读取带有数字的文件? 请注意,我并不是指如何读取字符串本身,而是如何将它们转换为浮点数。 谢谢。

将以null结尾的字符串与C中的非空终止字符串进行比较

我正在使用的反序列化库(messagepack)不提供以null结尾的字符串。 相反,我得到一个指向字符串开头和长度的指针。 将此字符串与普通的以null结尾的字符串进行比较的最快方法是什么?

字符串比C中的预期长

这是我的代码 #include #include int main(){ char pal[8] = “ciaooaic”; char pal1[7] = “ciaoaic”; int lenPal = strlen(pal); int lenPal1 = strlen(pal1); printf(“strlen(‘%s’): %d\n”, pal, lenPal); printf(“strlen(‘%s’): %d\n”, pal1, lenPal1); return 0; } 问题是,当我运行此代码时,输​​出是: strlen(‘ciaooaicP@’): 11 strlen(‘ciaoaic’): 7 第一个字符串还有一个P和@之间的另一个不可打印的字符。 我是个菜鸟,所以也许我错过了一些明显的东西。 有人能帮我吗? 编辑: 只需给一个额外的空间,比如char pal [9] =“ciaooaic”; char pal1 [8] =“ciaoaic”; 它有效,但为什么呢? 我明白应该有\ 0的空间,但“ciaoaic”没有它的工作……

使用指针和strtok()

我正在构建一个链表,需要你的帮助,因为我是C的新手。我需要输入一个如下所示的字符串:( (word)_#_(year)_#_(DEFINITION(UPPER CASE)) 例如:输入一个字符串输入: invest_#_1945_#_TRADE 基本上我正在寻找构建一个扫描定义的函数,并让我回到与之相关的单词。 输入要在字典中搜索的单词输入:TRADE输出:在“投资”一词中找到“TREADE” 到目前为止,我设法使用strtok()函数,但是现在我不知道如何处理打印第一个单词。 这是我能想到的: char split(char words[99],char *p) { p=strtok(words, “_#_”); while (p!=NULL) { printf(“%s\n”,p); p = strtok(NULL, “_#_”); } return 0; } int main() { char hello[99]; char *s = NULL; printf(“Enter a string you want to split\n”); scanf(“%s”, hello); split(hello,s); return 0; } 关于我该怎么做的任何想法?

strcat和malloc

目前,我需要将strcat()2个字符串放在一起。 问题是,我必须这样做3次。 (共6个连接)。 程序是这样,使用循环重复3次: Malloc一个字符串 使用for循环,调用strcat 2次 释放字符串 问题是即使在我释放字符串和重新malloc之后,strcat似乎仍然在连接前一个字符串。 例如: AA BB CC DD EE FF的预期输出 strcat字符串1:AABB strcat string 2:CCDD strcat字符串3:EEFF 实际产量: strcat字符串1:AABB strcat字符串2:AABBCCDD strcat string 3:AABBCCDDEEFF 有谁知道它为什么这样做? void sendInitialHand(card * deck) { char * stringToSend; playerNode * curNode; curNode = housePlayers.head; for (int i=0; i<housePlayers.playerCount; i++) { stringToSend = malloc(sizeof(char)*6); for (int j=0; jplayerFD) […]

c如何将字符变量与字符串进行比较?

以下代码在C中完全没问题,但在C ++中没有。 在以下代码中, if语句始终为false。 C如何将字符变量与字符串进行比较 int main() { char ch=’a’; if(ch==”a”) printf(“confusion”); return 0; }