Tag: 字符串

将一个字符数组分配给另一个给出错误。 为什么?

数组的名称是指向第一个元素的指针。 那么为什么一个字符数组不能分配另一个数组呢? #include int main() { char str1[]=”Hello”; char str2[10]; char *s=”Good Morning”; char *q; str2=str1; /* Error */ q=s; /* Works */ return 0; }

C程序从字符串数组中提取不同的子字符串

我想从包含字符串数组的文件中提取不同的子字符串。 我的文件类似于此。 abcdxxx efghijkyyy lmzzz ncdslanclsppp kdfmsqqq cbskdnsrrr 从上面的文件我想提取xxx,yyy,zzz,ppp,qqq,rrr(基本上是最后3个字符)并存储到数组中。 我提到这个链接如何从C中的字符串中提取子字符串? 但感觉不可行,因为我文件中的内容是动态的,可能会因下次执行而改变。 有人可以简要介绍一下吗? 这是我的方法 FILE* fp1 = fopen(“test.txt”,”r”); if(fp1 == NULL) { printf(“Failed to open file\n”); return 1; } char array[100]; while(fscanf(fp1,”%[^\n]”,array)!=NULL); for(i=1;i<=6;i++) { array[i] += 4; }

是否应使用C中的文字初始化具有指定大小的静态声明字符数组?

例如, gcc编译好了…… char s[7] = “abc”; 但它给出了错误“赋值不兼容的类型”与… char s[7]; s = “abc”; 有什么不同?

在声明一个字符的数组时是否需要提供空字符?

C中的字符串常量存储为字符数组,而按元素创建这样的数组元素时,是否需要提供空字符。 我需要存储一个字符串常量,比如S[number]= “hello\n” 。 字符串常量在C中存储为字符数组,此外,这样的字符串由空字符’\0’终止。 将短语存储在数组中时,是否需要考虑空字符并分配额外的空间,或者我只需要提及需要存储的字符数?

C:如何比较两个字符串?

编辑:这是重复的,我已经标记了它。 见[问题] 为什么C中的“a”!=“a”? 所以我试图根据结构中的字段打印出特定的消息。 该字段包含字符串“1”。 每当我运行printf(“%s”, record.fields[2]); 输出为1 ; 我没有格式警告。 但是,当我针对相应的字符串(在本例中为“1”)检查字段时,它未通过检查: if (record.fields[2] == “1”) { printf(“The field is 1!”); }

如何摆脱警告:从字符串常量到char *的弃用转换

如何摆脱以下警告。 warning: deprecated conversion from string constant to char* [-Wwrite-strings] 这是代码。 #include #define MY_STRING “drivers.txt” void printMyString(char str[]){ printf(str); } int main(){ printMyString(MY_STRING); }

使用递归函数反转字符串

我目前正在学习C,我无法通过这项练习。 我必须创建一个递归函数来将string1反转为string2 。 这是我的代码。 我很乐意感谢你的帮助。 #include #define MAX 100 void reverse(char s1[],char s2[],int n,int j); int main() { char string1[MAX]=”How Are You Mate”; char string2[MAX]=””; int n=0; int i=0; int j=0; for(i=0;string1[i]!=’\0′;i++) n++; reverse(string1,string2,n,j); printf(“String-a normal:\n%s\n”,string1); printf(“String-a reverse:\n%s\n”,string2); return 0; } void reverse(char s1[],char s2[],int n,int j) { if(n>0) { s2[j]=s1[n]; reverse(s1,s2,n-1,j+1); } else s2[j]=’\0′; […]

malloc内存到指针的指针

当使用指向char的指针时,我遇到了这个问题: void setmemory(char** p, int num) { *p=(char*)malloc(num); } void test(void) { char* str=NULL; setmemory(&str,100); strcpy(str,”hello”); printf(str); } int main() { test(); return 0; } 上面的代码是正确的,但我无法弄清楚为什么在这里使用指针char ** p的指针? 为什么只使用指向char的指针? 所以我把这个片段改成下面,发现它不起作用,有人能告诉我为什么吗? 谢谢! void setmemory(char* p, int num) { p=(char*)malloc(num); } void test(void) { char* str=NULL; setmemory(str,100); strcpy(str,”hello”); printf(str); } int main() { test(); return 0; }

字符串比较C – strcmp()

我试图比较两个字符串,但我没有实现这一点。 为什么? #include #include int main(){ float a = 1231.23123; char b[32]; sprintf(b, “%f”, a); printf(“%s\n”, b); char c[32] = “1231.23123”; if (strcmp(c, b) == 0){ printf(“SUCCES\n”); } else{ printf(“DIFFER\n”); } return 0; } 结果: 1231.231201 DIFFER

如何在C中逐字翻译句子?

#include int main(void) { int i,j; int wordstart = -1; int wordend = -1; char words[]= “this is a test”; char temp; // Reverse each word for (i = 0; i < strlen(words); ++i) { wordstart = -1; wordend = -1; if(words[i] != ' ') wordstart = i; for (j = wordstart; j < strlen(words); […]