我正在运行一个程序来读取 C 中的字符串。我在存储字符串时遇到了一个奇怪的问题。我的代码是:
void getarray(char *text){
char a, *p;
int b = 1;
p = text;
scanf("%c", &a);
if(a == '\n'){
*p = '\0';
return;
}
while(a != '\n'){
*(p+b-1) = a;
p = realloc(p, sizeof(char)*(b+1));
b++;
scanf("%c", &a);
}
*(p+b) = '\0';
}
因此,这可以正确读取字符,但是当它到达字符串末尾时,它不会执行任何操作,而不是继续执行 while 循环。如果我打印出 a
作为 while 循环中的最后一个命令,当它到达字符串末尾时,它会打印一个空格,但程序不会离开循环。
感谢任何帮助,谢谢!
最佳答案
#include <stdio.h>
#include <stdlib.h>
void getarray(char **text){
char a, *p=malloc(1);
int b = 1;
while(1==scanf("%c", &a) && a != '\n'){
p = realloc(p, b+1);
p[b++ - 1] = a;
}
p[b-1] = '\0';
*text = p;
}
int main(){
char *text;
getarray(&text);
printf("%s\n", text);
free(text);
return 0;
}
关于C 字符与返回键不匹配\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21844854/