Tag: 字符串

如何从C语言中删除给定字符串中的所有空格和制表符?

什么C函数,如果有的话,从字符串中删除所有前面的空格和制表符? 谢谢。

为什么我可以在用双引号声明时使用指针作为字符串,而不是在C中用花括号括起来?

如果我声明并使用这样的指针: int counter; char *pCow = “pCow goes MOO”; for(counter = 0; counter < 14; counter++) printf("%c", pCow[counter]); 它显示整个字符串并且工作,是的,并且有很多欢乐。 但是,如果我使用这样的初始化器: int counter; char *pCow = {‘p’,’C’,’o’,’w’,’ ‘,’g’,’o’,’e’,’s’,’ ‘,’M’,’O’,’O’,’\0′}; for(counter = 0; counter < 14; counter++) printf("%c", pCow[counter]); 程序崩溃了,pCow拒绝为我的享乐主义乐趣而呻吟! 3 Warnings. 0 Errors line 11 (near initialization for ‘pCow’) [enabled by default] C/C++ Problem line 11 […]

如何将字符串可移植转换为不常见的整数类型?

一些背景:如果我想用,例如, scanf()将字符串转换为标准整数类型,如uint16_t ,我将使用 SCNu16 ,如下所示: #include #include uint16_t x; char *xs = “17”; sscanf(xs, “%” SCNu16, &x); 但是像pid_t这样的更不常见的整数类型没有任何这样的东西; 仅支持普通的整数类型。 要转换为另一种方式,可移植printf()一个pid_t ,我可以将它转换为intmax_t并使用PRIdMAX ,如下所示: #include #include #include pid_t x = 17; printf(“%” PRIdMAX, (intmax_t)x); 但是,似乎没有办法将scan scanf()移植到pid_t 。 所以这是我的问题:如何便携? #include #include pid_t x; char *xs = 17; sscanf(xs, “%u”, &x); /* Not portable! pid_t might not be int! […]

函数中的C和指针 – 更改不保存

我有这个简单的代码似乎工作(我检查调试器)但是当函数执行结束时,字符串不保存在原始变量中。 void getString(char *iText); int main() { char *inputText=malloc(sizeof(char)); getString(inputText); puts(inputText); free(inputText); system(“pause”); return 0; } void getString(char *iText) { char c; int i=0; while((c=getchar()) != ‘\n’) { iText = realloc(iText,sizeof(char)*(i+1)); iText[i]=c; i++; } iText = realloc(iText, sizeof(char)*(i+1)); iText[i]=’\0′; } 当这个小脚本结束时,我看到一些 ε■ε■ε■ε■ε■ε■ε■ε■ε■ε■ε■ε■▲יע`* 如果我在我的main函数中编写这段代码它正在工作,所以我猜这与我在函数中使用指针的方式有关。

确定字符串是否是C中的有效IPv4地址

什么是确定字符串是否包含IPv4地址的好方法? 我应该使用isdigit()吗?

使用C预处理器为scanf构造字符串文字?

我正在尝试创建一个sscanf字符串文字,以帮助在C99中防止缓冲区溢出。 目标是这样的: #define MAX_ARG_LEN 16 char arg[MAX_ARG_LEN] = “”; if (sscanf(arg, “%”(MAX_ARG_LEN-1)”X”, &input) > 0) 显而易见的“手动”解决方案如下: #define MAX_ARG_LEN 16 #define MAX_ARG_CHARS “15” char arg[MAX_ARG_LEN] = “”; if (sscanf(arg, “%”MAX_ARG_CHARS”X”, &input) > 0) 但是,在缓冲区大小为16的情况下,我更喜欢自动生成“%15X”。此链接几乎适用于我的应用程序: 将预处理程序标记转换为字符串但不处理-1。 建议?

C函数用于大写数组中单词的第一个字母

我对C很陌生,在创建以下function时遇到了障碍。 我想使用这个函数来为一个静态字符数组(char string []创建单词大写的第一个字母。它看起来不错,但我得到一些语法错误,这可能是非常基本的。编译器错误: 错误:无效转换从const char’ to const char *’初始化`size_t strlen(const char *)的参数1’只读位置的赋值 void Cap(char string[]){ int i; int x = strlen(string); for (i=1;i<x;i++){ if (isalpha(string[i]) && string[i-1] == ' '){ // only first letters of a word. string[i]= toupper(string[i]); }if (isalpha(string[0])) { string[0]=toupper(string[0]); } } }

检查C中的字符串是否是回文结构

我有一个关于这个代码的问题,我正在写一个练习。 我要检查字符串是否是回文。 我无法更改函数的声明。函数只返回1,当所有字母都相同(如“aaaa”)但如果我用其他回文(如“anna”)收取句子,函数返回0,我无法弄清楚为什么会出现这种情况。谢谢! char* cargar (char*); int pali (char*); int main() { char*texto=NULL; texto=cargar(texto); int res=pali(texto); if(res==1){printf(“\nPalindrome”);} else printf(“\nNot palindrome”); return 0; } char* cargar (char*texto) { char letra; int i=0; texto=malloc(sizeof(char)); letra=getche(); *(texto+i)=letra; while(letra!=’\r’){ i++; texto=realloc(texto,(i+1)*sizeof(char)); letra=getche(); *(texto+i)=letra;} *(texto+i)=’\0′; return texto; } int pali (char* texto) { int i; for(i=0;*(texto+i)!=’\0′;i++){ }i–; if(i==0||i==1){return 1;} if(*texto==*(texto+i)){ […]

将字符串传递给C中的函数 – 有或没有指针?

当我将字符串传递给函数时,有时我会使用 char *functionname(char *string name[256]) 有时我会在没有指针的情况下使用它(例如: char functionname(char string[256]) 我的问题是,我什么时候需要使用指针? 我经常在没有指针的情况下编写程序而且它有效,但有时却没有。

处理存储在C中多个字符串的指针数组中的单个字符串的问题

提供指向字符串的指针数组作为输入。 任务是反转存储在指针输入数组中的每个字符串。 我创建了一个名为reverseString()的函数,它反转传递给它的字符串。 据我所知,此function正常工作。 在指针的输入数组中存储/引用的字符串逐个发送到reverseString()函数。 但是当使用temp变量交换传递的字符串的值时,代码在reverseString()函数中的某个点挂起。 我无法弄清楚代码在交换值时挂起的原因。 请帮我解决一下这个。 代码如下: #include void reverseString(char*); int main() { char *s[] = {“abcde”, “12345”, “65gb”}; int i=0; for(i=0; i< (sizeof(s)/sizeof(s[0]) ); i++ ) { reverseString(s[i]); printf("\n%s\n", s[i]); } getch(); return 0; }//end main void reverseString(char *x) { int len = strlen(x)-1; int i=0; char temp; while(i <= len-i) { […]