Tag: 字符串

多维数组和传输缓冲区

我试图将缓冲区保存为1800个字符的数组段。 当我尝试打印每个新缓冲区时,我能够传输缓冲区。 我输出为null。 我究竟做错了什么? 编辑 – 我将循环更改为此以将空终止添加到第二维的末尾。 现在输出告诉我它是null。 但printf(“%c”)表示数据已被转移。 while(buf_pos < msg_size+1){ if(buf_pos % 1800 == 0){ msg_buff[key_num][cbuf_pos]='\0'; key_num++; cbuf_pos=0; msg_buff[key_num][cbuf_pos]=buf[buf_pos]; }else msg_buff[key_num][cbuf_pos]=buf[buf_pos]; printf("%c",msg_buff[key_num][cbuf_pos]); cbuf_pos++; buf_pos++; }

是否可以在不知道c中数组长度的情况下使用gets?

如果我们想要使用get in c,我们将执行以下操作: int main(void) { char str[100]; while (gets(str)) { printf(“%s\n”,str); } } 我们必须首先知道str的长度(即100),然后使用gets。 是否可以在不知道c中数组长度的情况下使用gets?

区别 – 从函数返回’local’char *与从函数返回’local’int *

可能重复: 可以在其范围之外访问局部变量的内存吗? 这是一个简单的代码,其中3个不同的函数[localStrPtr,localIntPtr,localCharPtr ]在它们各自的函数中返回指向它们的局部变量[string,integer,char]的指针。 码: #include char* localStrPtr (char*); int* localIntPtr (int, int); char* localCharPtr (char); main() { int *pInt; char *pChar; printf( “localStrPtr = %s\n”, localStrPtr(“abcd”) ); pInt = (int*) localIntPtr(3, 5); printf( “localIntPtr = %d\n”, *pInt ); pChar = (char*) localCharPtr(‘y’); printf( “localCharPtr = %c\n”, *pChar ); } char* localStrPtr(char* argu) { char […]

获取char输入并将其存储在数组中

我想取n个输入并将其保存在数组c []和p []中,然后使用它们…… 我目前写的这个,但我没有得到理想的输出 #include #include int main() { int n,t,i,j,size=0; char s[100000]; char c[100]; char p[100]; scanf(“%d”, &n); for(i=0;i<n;i++) { scanf("%c", &c[i]); scanf("%c", &p[i]); } for(i=0; i<n;i++) { printf("%c %c", c[i],p[i]); } return 0; }

char *和char 之间的区别

我已经阅读了很多关于它的线索和问题并阅读了很多答案,但仍然难以理解差异以及何时应该使用什么? 我认为你应该在需要存储数据时使用char *而你不知道它的大小,因为它是动态的。 另外我不确定我是对的,但是如果你声明一个char *并且给它分配一个像这样的文字文本,我不明白我的理解:char * ch =“hi”; 它是一个你无法改变的常量,如果你试图改变它,你只需将ch指向另一个分配的存储空间来保存新字符串? 如果这样写:char ch = malloc(20); 然后你可以改变价值,如果你这样做:char ch [] =“hi”; char pch = ch; 您可以更改值,因为您指向数组并且数组指向ch [0]? 所有用粗体写的都是我从阅读中理解的,虽然我可能对我刚才说的大部分内容都是错的,这就是为什么我需要一个非常好的简单解释,所以我可以一劳永逸地理解差异,当我应该用什么。 编辑: #include main() { char ch[] = “Hello”; char *p1 = ch; char *p2 = p1; char *p3 = *p1; printf(“ch : %s\n”, ch); printf(“p1 address [%d] value is %s\n”, p1, […]

删除子字符串中给定位置的C中的子字符串

假设我有一个包含20个字符的char *example 。 我想删除example[5]到example[10]中的每个字符,然后修复数组,以便example[11]紧跟在example[4] 。 基本上将删除区域后的所有字符移动到删除区域开始时。 有任何想法吗? 编辑:我认为使用memcpy可能有一种方法? 但我不知道该怎么做。

字符串比较不使用标准库函数

我是C编程的新手。 这只是一个初学者的问题。 我试图在不使用标准函数的情况下实现字符串比较。这里我使用了动态内存分配并使用了fgets() 。 但是没有输入第二个字符串。 任何人都可以帮我指出问题吗? 代码如下。 #include #include int my_strcmp(char*, char*); int main() { int a, n; printf(“enter the length of strings\n”); scanf(“%d”,&n); getchar(); char *s1 = (char *)malloc(n * sizeof(char)); printf(“enter the string1\n”); fgets(s1, n, stdin); getchar(); char *s2 = (char *)malloc(n * sizeof(char)); printf(“enter the string2\n”); fgets(s2, n , stdin); if (s1 […]

字符串/分段错误

/* Program to calculate trip and plan flights */ #define TRIP 6 #define NAMEMAX 40 #define DEST 1 #include #include int main(void) { int i, trip_num, row, col; char travel_name[TRIP][DEST], dest_in[1]; printf(“Please enter the number of trips:”); scanf(“%d”, &trip_num); while (trip_num > TRIP) { printf(“Invalid number of trip. (Min of 3 trips and Max 6 […]

C:分配给指针时数组的行为

#include main() { char * ptr; ptr = “hello”; printf(“%p %s” ,”hello”,ptr ); getchar(); } 嗨,我试图清楚地理解如何将数组分配给指针。 当你将一个字符数组分配给chars ptr=”hello”;的指针时,我会注意到ptr=”hello”; 数组衰减到指针,但在这种情况下,我分配一个不在变量内的数组的字符,而不是包含它们的变量“,这种赋值方式是否专门为”Hello”采用内存地址(显然是发生),是否可以修改存储该数组的内存地址中包含的“Hello”中每个元素的值。作为比较,我可以分配一个带有数组的指针,例如像int_ptr = 5,3,4,3;这样含糊不清的东西int_ptr = 5,3,4,3;并且值5,3,4,3位于内存地址中,就像“Hello”一样。如果不是,为什么只能用字符串?谢谢在先进。

如何从c中没有空格的字符串输入一次一个字符?

假设,“5181 2710 9900 0012” – 是一串数字。我需要一次取一个数字作为数字串的输入而没有空格来进行算术运算。 所以,我写的, int a[20]; for(int i=0;i<16;i++) { scanf("%d",&a[i]); } 但它没有给我预期的结果。 但是当我使用“%1d”代替“%d”时,它给了我预期的结果。 那么,它是如何工作的?