Tag: 字符串

打包八位字节串

可能重复: 填充一个八位字符串 我有65个不同位长的参数,我需要填写一个八位字节串。 参数化将以八位字节串连续填充。 例如,假设第一个参数是1位长,那么它将在八位字节串的第一个八位位组的第0位填充。 现在第二个参数假设为9位长。 因此,该参数的前7位将填充在相​​同的八位位组中,接下来的2位应该位于下一个八位位组的第0位和第1位位置。 类似地,其他参数将填充在八位字节串中。 我试着编写一个函数,在这里我传递指向当前八位字节的指针,位位置和源指针,数据将被复制到这里。 但我发现逻辑实现有困难。 我尝试了很多逻辑(位操作,位移,旋转等),但无法得到正确的逻辑。 如果有人能在“C”中给我一个逻辑/function,我将不胜感激。 您也可以使用不同的函数原型。

有没有办法改进这个函数,用malloc分配的字符串中的另一个字符串替换子串的出现?

我是C的新手,我决定创建一个名为str_replace的函数,它替换使用malloc创建的字符串内的字符串。 它似乎工作,但任何人都可以找到任何改进的余地。 任何建议将被认真考虑。 我想知道人们是否认为找出计算新字符串大小的出现次数是一个好主意,如果我使用指针有意义。 #include #include #include char * str_replace(char * string,char * find,char * replace){ //Replaces each occurence of a particular string inside a malloc-made string with another string char * pos = string; size_t replace_size = strlen(replace); size_t find_size = strlen(find); size_t excess = replace_size – find_size; //Get number of occurences int x […]

fscanf help:如何检查格式

因此,当前函数应该看到存储在两个磅符号之间的任何东西(#abc#应该给回abc),但是如果我想错误检查以查看是否有丢失的英镑符号,或者英镑符号之间没有任何内容,或者两个英镑符号之间的字符串长度大于一定数量的字符,我是否使用fscanf函数来做到这一点? 这是fscanf代码的样子: if (fscanf(fp, ” %c%[^#]%c”, &start, buffer, &end) == 3) { return strdup(buffer); } else { return NULL; }

如何比较存储在数组中的字符串与c中完整库中的函数名称

在c中输入字符串并将其存储在例如char s [100]之后,如何将该字符串与math.h中的所有函数名称进行比较? 例如,我输入pow,结果将以存储的forms显示。 s[0]=’p’ s[1]=’o’ s[2]=’w’ s[3]=’\0′ 由于我的字符串相当于pow(),我希望我的程序能够识别它,然后在执行程序时调用pow()。 我知道在代码中进行字符串比较并不困难,但这意味着我必须对库中的每个函数名进行字符串比较。 我不想那样做。 如何在不对每次比较进行硬编码的情况下将我的字符串与库中的所有名称进行比较? 谢谢 :)

在C中反转字符串不会输出反转的行

我正在尝试反转C中的字符串。反向函数只是将给定位置(在for循环中)的字符分配给临时对象。 我在程序中看不到任何逻辑错误,并且使用以下命令在gcc 4.7.2下成功编译程序: gcc -Wall -std=c99 reverse.c 要重新创建问题: 1.)运行程序并在shell中输入一个字符串 2.)完成输入后,按enter /和/或您的EOF信号。 问题是既没有打印原始字符串,也没有反转字符串。 这也是K&R第二版的练习,如果你完成了这个练习,我将不胜感激我的另一个解决方案。 我认为该错误是由缺少空字符引起的,着名的printf需要一个以空字符结尾的字符串来打印输入到cin。 getline函数将一个空字符分配给数组的末尾,当然空字符将是字符串中结束printf的第一个字符(因此不会打印字符/文字)。 #include #define MAXLINE 1000 int geline(char s[], int lim); void reverse(char line[], int length); int main() { char s[MAXLINE]; char t[MAXLINE]; int k, len; while ((len = getline(s, MAXLINE)) > 0) { if (len > 1) reverse(s, len); } printf(“%s”, […]

C:读取字符串时,整个ascii表的频率计数(尽可能接近)的可读方式是什么

从这个网站http://www.programmingsimplified.com/c-program-find-characters-frequency他们有一个例子,它将计算a – z而不是AZ或空格或标准标点符号。 while ( string[c] != ‘\0’ ) { /* Considering characters from ‘a’ to ‘z’ only */ if ( string[c] >= ‘a’ && string[c] <= 'z' ) count[string[c]-'a']++; c++; } for ( c = 0 ; c < 26 ; c++ ) { if( count[c] != 0 )

用字符串的一部分填充二维数组

我想要将我打破的字符串部分输入到二维数组中,例如:String:“one day”数组中的结果:Col1:一个Col2:day 问题是,如何用第1列的第二个变量result2和第2列的result填充数组? 这是我的代码到目前为止(你可以看到我有一个单独的历史数组和一个单独的数组用于保存用户输入的部分): #include #include #include int main (int argc, char *argv[]) { int i=0; int j=0; int k=0; char inputString[100]; char *result=NULL; char *result2=NULL; char delims[] = ” “; char historyArray[100][100] = {0}; char historyKey[] = “history”; char *tokenArray[100][100] = {0} ; //char exitString[] = “exit”; do { printf(“hshell>”); gets(inputString); strcpy (historyArray[k], inputString); […]

用于删除字符串中重复字符的C程序…显示运行时错误

我编写了以下函数来从字符串中删除重复的字符。例如:如果str =“heeello; removeDuplicate(str) 将返回helo …但它在运行时显示一些错误。我已经添加了一些printf()语句用于调试…有谁能告诉我这是什么问题? char* removeDuplicate(char str[])//remove duplicate characters from a string,so that each character in a string is not repeating { int i = 0,j; char ch; printf(“\nstr is %s”,str); while((ch = str[i++] )!= ‘\0’) { j = i; printf(“\n—-ch = %c—-“,ch); while(str[j] != ‘\0’) { printf(“\n——–Checking whether %c = %c \n”,str[j],ch); if(ch […]

这个reverseString算法如何工作?

我已经看到这个算法在线反转一个字符串,我对它有一些疑问,我将在代码的末尾指定: void reverseString(char *original_string) { char *end = original_string; char tmp; if(original_string) { while(*end) { ++end; } –end; while (original_string < end) { tmp = *original_string; *original_string++ = *end; *end– = tmp; } } //This line doesn't have the complete reversed string. Why? printf("%s\n", original_string); } 1)在while循环中…为什么我们比较两个指针? 我们怎么知道价值会变大还是变小? 那些只是指针,对吧? 2)为什么我们不退货? 反转弦在哪里? 如果我们认为反向字符串在original_string中,我们是否应该使用指向指针的指针,以便效果在范围外? 3)如果我做以下事情: char test[] […]

为什么显示随机数? C程序读取字母

所以我必须创建一个程序来读取用户输入,并显示每个字母出现在该字符串中的次数,以及有多少非字母,但我的字母代码显示随机数。 #include #include #define SIZE 100 void readInput (char string[]); void Calc(char string[], int letters[]); void readInput (char string[]) { printf (“Enter a String:\n”); fgets (string, SIZE, stdin); string[strlen (string) – 1] = ‘\0’; } void Calc(char string[], int letters[]) { int c = 0, x; while (string[c] != ‘\0’) { if (string[c] >= ‘a’ […]