Tag: c字符串

根据长度崩溃对静态数组中的字符串进行排序? |错误的分配/访问|

我想创建一个字符串数组,并根据它们的长度(最小 – >最大)按顺序对它们进行排序,但程序在所有输入后崩溃。 并且它绕过元素0(在输入期间直接从元素1开始) #include #include main() { int i,j,N; printf(“\nInput amount of alphanumericals: “); scanf(“%d”,&N); { int min; char *swap=(char*)malloc(sizeof(char)*150); char *A[N],**temp; for(i=0;i<N;i++) *(A+i)=malloc(sizeof(char)*N);//Error Here temp=A; for(i=0;i<N;i++){ printf("\nInput %d element:",i+1); fgets(temp+i,150,stdin);//And Here } printf("\n\nData ["); for(i=0;i<N;i++) printf(" %s",A[i]); printf(" ]\n\n"); //insertion sort for(i=0;i<N;i++){ min=i; for(j=i+1;j<N;j++){ if(strcmp(A[j],A[min])<0){ min=j; } } if(min!=i){ swap=A[i]; A[i]=A[min]; A[min]=swap; } […]

当我们用c中的字符串文字初始化一个char数组时,是否会发生垃圾收集?

当我们在C中编写以下代码行时, char local_arr[] = “I am here”; 文字“我在这里”被存储在内存的只读部分(比如RM )。 我如何想象它是如何在RM中连续存储的(是吗?)。 然后,数组local_arr (即本地数组)通过索引从RM中的位置复制此数组索引。 但是在local_array复制之后,文字会发生什么? 它是否丢失从而导致内存泄漏? 或者是否有类似Java的垃圾收集器来清理未引用的对象? 例如,如果我写一段代码如下: for(int i=0;i<100000;i++) char local[] = "I am wasting memory"; 我不会用完记忆吗? 每次迭代都会在每次迭代时创建相同文字的新实例吗? 或者他们都会引用相同的文字,因为每次文字的价值是相同的? RM是属于堆内存还是堆中的专用段? 本地数组也存储在堆栈中,对吧? 如果我使用动态数组或全局数组怎么办? 那么会发生什么?

不为null终止C样式字符串

给一个字符串,比方说, char *str = “Hello,StackOverflow!” char newStr[30]; int l = strlen(str); for(int i =0 ; i<l ; i ++ ) newStr[i] = str[i]; printf("%s" , newStr); 现在,我们知道c字符串的最后一个字符必须是’\0′ ,因为这里我们没有明确地做同样的事情(在字符串newStr的最后一个索引处存储’\ 0’),这个程序应该崩溃,因为printf将找不到字符串的结尾。 但是我注意到它有时很好用,有时它不是。 可能是什么问题呢 ? 它实际上几乎每次都在工作。 是不应该崩溃或给出一些运行时错误? 在C ++中也会出现同样的情况吗?

从C字符串中删除第一个和最后一个字符

我有一个看起来像”Nmy stringP”的C字符串,其中N和P可以是任何字符。 如何在C中将其编辑为”my string” ?

如何从C中的字符串中提取子字符串?

我尝试使用strncmp但它只有在我给它一个特定数量的字节我想要提取时才有效。 char line[256] = This “is” an example. //I want to extract “is” char line[256] = This is “also” an example. // I want to extract “also” char line[256] = This is the final “example”. // I want to extract “example” char substring[256] 我如何提取“”之间的所有元素? 并把它放在变量substring?

char * str =“…”和char str =“……”之间的区别?

可能重复: C中的char s []和char * s有什么区别? 关于C中指针和字符串的问题 我正在读C中的字符串,我很困惑。 我可以用两种方式“声明”字符串: char *str = “This is string”; char str2[20] = “This is string”; 这两个声明有什么区别? char str2[20]何时优先于char *str ?

为什么get()被弃用?

在我的代码中使用gets()时,编译器会大喊大叫 warning: the ‘gets’ function is dangerous and should not be used.` 和 warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] 任何具体原因?