Tag: string

为什么程序不会从2参数文件读取?

因此,分配是使用要搜索的输入文件和要搜索的输入来实现子字符串搜索程序。 我创建了以下代码: #include #include int main(int argc,char *argv[]) { FILE *fp; fp = fopen(argv[1],”r”); if (fp == NULL) { printf(“Error”); return 0; } char* tmpp[100]; int count = 0; char* nexts = argv[2]; char* tmp = fgets(tmpp,100,fp); while(tmp = strstr(tmp,nexts)) { count++; tmp++; } printf(“%d\n\n”,count); fclose(fp); return 0; } 程序编译但是当我在ubuntu终端中实现它时: echo “aabb” >beta ./a.out beta […]

计算C中字符串中的大写和小写字母数

我想创建一个代码来查找大写和小写字母的数量。 所以举个例子 input: HelloGUYS Output: 4 5 我的代码是这样的: #include #include int main() { int i, longitud; int X[26]; char line[1010]; for(i=0; i<26; i++) { X[i] = 0; } while(gets(line)) { longitud = strlen(line); for(i=0; i= ‘a’ && line[i] = ‘A’ && line[i] <= 'Z') { X[line[i] – 'A']++; } } } for(i=0; i<26; i++) { […]

Strtok和String操作问题

#define DELIMS “!\”#$%&()|’*+,?/:;@[\092]^_{}~\177” void getFileLine(FILE *fp) { char *word, *ptr; int tokennum, count; char buffer[100]; while(!feof(fp)) { (fgets(buffer, 100, fp)); ptr = buffer; for(tokennum = 1; word = strtok(ptr, DELIMS);ptr = NULL, tokennum++) { word = strtok(ptr, DELIMS); printf(“%s\n”, word); } } } 所以我传入的文件中有一个示例程序。 我的工作是删除一些delims并将代码中的每个单词传递到树中。 虽然我不在树的一部分,只是努力让字符串按照我想要的方式进行操作,但我遇到了一些问题。 所以,当我从.txt文件中读取.txt ,我正在获得我想要的部分内容。 .txt的前几行如下: #include “stdafx.h” #include #include #include #define […]

在C中使用多个scanf时,使用scanf忽略空格的问题

我试图在一个小程序中多次使用scanf来获取保证有空格的输入。 从我浏览的多个线程看起来像scanf(“%[^\n]”, string); 是让它忽略空间的方法。 这适用于一行,但该行之后的任何其他scanf都没有通过,它们各自的字符串显示如下: Action: J J Resolution: J:F J B J 这是一些我认为可行的示例代码,但没有。 #include int main(void) { char str1[100]; char str2[100]; printf(“Situation?\n”); scanf(“%[^\n]”, str1); printf(“Action Taken?\n”); scanf(“%[^\n]”, str2); printf(“Situation: %s\n”,str1); printf(“Action: %s\n”,str2); } 如果在提示输入情况时输入“Just a test”,则会发生以下情况: Situation? just a test Action Taken? Situation: just a test Action: _ ? JN= J J d J0d […]

对于以null结尾的字符串,strlen有时等于sizeof

我知道strlen计算直到(并排除)空字符’\0′ (或0 )的字符数,并且sizeof给出了存储字符串所需的空间量,包括空字符,但与输出混淆我的代码 题: 我希望strlen的结果始终比sizeof的结果小1,因为我的字符串是以null结尾的,但只有长度为4和8的字符串似乎是这种情况,不包括’\ 0’(即第3个字符串)以及第5个结果)。 我怀疑在第一,第二和第三结果的字符串末尾打印垃圾的原因相同。 有人可以解释这种行为吗? 我读了这个相关的问题,但我不认为这就是这里发生的事情: strlen – 字符串的长度有时会增加1 。 代码的作用: 在main ,它创建一个整数make_and_print_msgs和8的数组。然后对于每个长度,它调用函数make_and_print_msgs : 创建一个长度为+ 1的字符串(对于空字符),例如,对于长度为4,创建字符串“aaaa \ 0” 使用printf %c逐字母打印消息 使用printf %s其打印为字符串 找到字符串的strlen 找到字符串的sizeof 输出: i data_length[i] ——————– 0 0 msg intended to be: msg printed as string: strlen(msg): 1 sizeof(msg): 1 1 2 msg intended to be: aa msg printed as […]

如何在读取字符串时排除null终止符?

该程序打开一个文件,其中包含湖泊的名称及其体积,以数百立方英里为单位 – 以空格分隔。 它的输出应该是湖的名字,后面跟着一些星号来表示它的体积到最接近的百立方英里(例如,一个体积为12.7百立方英里的湖泊会打印13个星号)。 但是,当它读入包含空格的名称时,它将一直读到该空格,然后在新行中打印下一个字符串。 有什么办法可以把“脏兮兮的湖”看作一条线而不是“粗糙的\ ndirty \ nlake”吗? 这是我到目前为止所拥有的: #include #include #include void name_asterisks(char name[20], float vol); main() { FILE *fp; fp = fopen(“lakes.txt”, “r”); char name[20]; float vol; if (fp == NULL) { printf(“File does not exist.\n”); system(“pause”); return 0; } while (fscanf(fp, “%s %f”, name, &vol) != EOF) { name_asterisks(name, vol); } […]

了解C字符串连接

对于C中的评估,我必须在其中包含两个带有字符串的文件,并使用一个字符串将它们连接在一起,例如: 如果file1包含 Now is the time for all good men to come to the aid of the party. 和file2包含: alpha beta gamma 那么输出来自 scat XX file1 file2 (scat是程序名称) 应该 Now is theXXalpha time for allXXbeta good men toXXgamma come to the aid ofXX the party.XX 和输出 scat XX file2 file1 应该 alphaXXNow is the betaXXtime […]

将单字符串转换为C中的相应字符串

我需要将一个unicoded字符串转换为适当的语言。 我需要逐行读取文本文件。 有一条线可能包含一个像这样的unicode \ XE6 \西飞\ XA2 \ xE8 \ XBF \ x8E 这基本上是一个等于的中文文本 欢迎 现在我需要从文本文件中删除此行(\ xE6 \ xAC \ xA2 \ xE8 \ xBF \ x8E),将此unicode转换为中文文本,将此中文文本附加到文本文件中。 以下是我的data.txt文件的内容: testing programming \xE6\xAC\xA2\xE8\xBF\x8E development 我想将文件内容作为: testing programming development欢迎 以下是我到目前为止所做的工作 #include #include #include #define MAX 256 int main() { int ctr = 0; char ch; FILE *fptr1, *fptr2; […]

将字符串转换为十进制

我正在使用RS232串行通讯来旋转电机。 串行通信是在字符串中完成的,但我需要十进制值。 任何线索如何继续。我在c语言编码。我尝试使用atoifunction,但它无法正常工作。 char *p; int z=atoi(p);

检查字符串是否包含另一个C.

现在我有这个代码,但它总是设置为null UNICODE_STRING str; char *cmp = “Hello”; RtlInitUnicodeString (&str, L”Hello world!”); if( ( strstr((char * )str.Buffer, cmp) ) != NULL) { // cmp founded in str. } else { // cmp not founded in str. Always here, but why?? } 你能解释一下为什么在我的情况下strstr总是空的吗?